Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / site / j2s / jssun / awt / image / ByteInterleavedRaster.js
index 07d164d..fd1e0e4 100644 (file)
-Clazz.declarePackage ("jssun.awt.image");\r
-Clazz.load (["jssun.awt.image.ByteComponentRaster"], "jssun.awt.image.ByteInterleavedRaster", ["java.lang.ArrayIndexOutOfBoundsException", "java.awt.Point", "$.Rectangle", "java.awt.image.DataBufferByte", "$.RasterFormatException", "$.SinglePixelPackedSampleModel"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.inOrder = false;\r
-this.dbOffset = 0;\r
-this.dbOffsetPacked = 0;\r
-this.packed = false;\r
-this.bitMasks = null;\r
-this.bitOffsets = null;\r
-this.$maxX = 0;\r
-this.$maxY = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jssun.awt.image, "ByteInterleavedRaster", jssun.awt.image.ByteComponentRaster);\r
-Clazz.makeConstructor (c$, \r
-function (sampleModel, origin) {\r
-Clazz.superConstructor (this, jssun.awt.image.ByteInterleavedRaster, []);\r
-this.setByteInterRaster (sampleModel, sampleModel.createDataBuffer (),  new java.awt.Rectangle (origin.x, origin.y, sampleModel.getWidth (), sampleModel.getHeight ()), origin, null);\r
-}, "java.awt.image.SampleModel,java.awt.Point");\r
-Clazz.makeConstructor (c$, \r
-function (sampleModel, dataBuffer, origin) {\r
-Clazz.superConstructor (this, jssun.awt.image.ByteInterleavedRaster, []);\r
-this.setParams (sampleModel, dataBuffer, origin);\r
-}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Point");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jssun.awt.image.ByteInterleavedRaster, []);\r
-});\r
-Clazz.overrideMethod (c$, "setParams", \r
-function (sampleModel, dataBuffer, origin) {\r
-this.setByteInterRaster (sampleModel, dataBuffer,  new java.awt.Rectangle (origin.x, origin.y, sampleModel.getWidth (), sampleModel.getHeight ()), origin, null);\r
-}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Point");\r
-Clazz.makeConstructor (c$, \r
-function (sampleModel, dataBuffer, aRegion, origin, parent) {\r
-Clazz.superConstructor (this, jssun.awt.image.ByteInterleavedRaster, []);\r
-this.setByteInterRaster (sampleModel, dataBuffer, aRegion, origin, parent);\r
-}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,jssun.awt.image.ByteInterleavedRaster");\r
-Clazz.defineMethod (c$, "setByteInterRaster", \r
- function (sampleModel, dataBuffer, aRegion, origin, parent) {\r
-this.$maxX = this.minX + this.width;\r
-this.$maxY = this.minY + this.height;\r
-if (!(Clazz.instanceOf (dataBuffer, java.awt.image.DataBufferByte))) {\r
-throw  new java.awt.image.RasterFormatException ("ByteInterleavedRasters must have byte DataBuffers");\r
-}var dbb = dataBuffer;\r
-this.data = jssun.awt.image.SunWritableRaster.stealData (dbb, 0);\r
-var xOffset = aRegion.x - origin.x;\r
-var yOffset = aRegion.y - origin.y;\r
-if (Clazz.instanceOf (sampleModel, java.awt.image.SinglePixelPackedSampleModel)) {\r
-var sppsm = sampleModel;\r
-this.packed = true;\r
-this.bitMasks = sppsm.getBitMasks ();\r
-this.bitOffsets = sppsm.getBitOffsets ();\r
-this.scanlineStride = sppsm.getScanlineStride ();\r
-this.pixelStride = 1;\r
-this.dataOffsets =  Clazz.newIntArray (1, 0);\r
-this.dataOffsets[0] = dbb.getOffset ();\r
-this.dataOffsets[0] += xOffset * this.pixelStride + yOffset * this.scanlineStride;\r
-} else {\r
-throw  new java.awt.image.RasterFormatException ("ByteInterleavedRasters must " + "have PixelInterleavedSampleModel, SinglePixelPackedSampleModel" + " or interleaved ComponentSampleModel.  Sample model is " + sampleModel);\r
-}this.bandOffset = this.dataOffsets[0];\r
-this.dbOffsetPacked = dataBuffer.getOffset () - this.sampleModelTranslateY * this.scanlineStride - this.sampleModelTranslateX * this.pixelStride;\r
-this.dbOffset = this.dbOffsetPacked - (xOffset * this.pixelStride + yOffset * this.scanlineStride);\r
-this.inOrder = false;\r
-if (this.numDataElements == this.pixelStride) {\r
-this.inOrder = true;\r
-for (var i = 1; i < this.numDataElements; i++) {\r
-if (this.dataOffsets[i] - this.dataOffsets[0] != i) {\r
-this.inOrder = false;\r
-break;\r
-}}\r
-}this.verify ();\r
-}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,jssun.awt.image.ByteInterleavedRaster");\r
-Clazz.overrideMethod (c$, "getDataOffsets", \r
-function () {\r
-return this.dataOffsets.clone ();\r
-});\r
-Clazz.overrideMethod (c$, "getDataOffset", \r
-function (band) {\r
-return this.dataOffsets[band];\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "getScanlineStride", \r
-function () {\r
-return this.scanlineStride;\r
-});\r
-Clazz.overrideMethod (c$, "getPixelStride", \r
-function () {\r
-return this.pixelStride;\r
-});\r
-Clazz.overrideMethod (c$, "getDataStorage", \r
-function () {\r
-return this.data;\r
-});\r
-Clazz.defineMethod (c$, "getDataElements", \r
-function (x, y, obj) {\r
-if ((x < this.minX) || (y < this.minY) || (x >= this.$maxX) || (y >= this.$maxY)) {\r
-throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");\r
-}var outData;\r
-if (obj == null) {\r
-outData =  Clazz.newByteArray (this.numDataElements, 0);\r
-} else {\r
-outData = obj;\r
-}var off = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride;\r
-for (var band = 0; band < this.numDataElements; band++) {\r
-outData[band] = this.data[this.dataOffsets[band] + off];\r
-}\r
-return outData;\r
-}, "~N,~N,~O");\r
-Clazz.defineMethod (c$, "getDataElements", \r
-function (x, y, w, h, obj) {\r
-return this.getByteData (x, y, w, h, obj);\r
-}, "~N,~N,~N,~N,~O");\r
-Clazz.defineMethod (c$, "getByteData", \r
-function (x, y, w, h, band, outData) {\r
-if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {\r
-throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");\r
-}if (outData == null) {\r
-outData =  Clazz.newByteArray (w * h, 0);\r
-}var yoff = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride + this.dataOffsets[band];\r
-var xoff;\r
-var off = 0;\r
-var xstart;\r
-var ystart;\r
-if (this.pixelStride == 1) {\r
-if (this.scanlineStride == w) {\r
-System.arraycopy (this.data, yoff, outData, 0, w * h);\r
-} else {\r
-for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
-System.arraycopy (this.data, yoff, outData, off, w);\r
-off += w;\r
-}\r
-}} else {\r
-for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
-xoff = yoff;\r
-for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {\r
-outData[off++] = this.data[xoff];\r
-}\r
-}\r
-}return outData;\r
-}, "~N,~N,~N,~N,~N,~A");\r
-Clazz.defineMethod (c$, "getByteData", \r
-function (x, y, w, h, outData) {\r
-if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {\r
-throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");\r
-}if (outData == null) {\r
-outData =  Clazz.newByteArray (this.numDataElements * w * h, 0);\r
-}var yoff = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride;\r
-var xoff;\r
-var off = 0;\r
-var xstart;\r
-var ystart;\r
-if (this.inOrder) {\r
-yoff += this.dataOffsets[0];\r
-var rowBytes = w * this.pixelStride;\r
-if (this.scanlineStride == rowBytes) {\r
-System.arraycopy (this.data, yoff, outData, off, rowBytes * h);\r
-} else {\r
-for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
-System.arraycopy (this.data, yoff, outData, off, rowBytes);\r
-off += rowBytes;\r
-}\r
-}} else if (this.numDataElements == 1) {\r
-yoff += this.dataOffsets[0];\r
-for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
-xoff = yoff;\r
-for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {\r
-outData[off++] = this.data[xoff];\r
-}\r
-}\r
-} else if (this.numDataElements == 2) {\r
-yoff += this.dataOffsets[0];\r
-var d1 = this.dataOffsets[1] - this.dataOffsets[0];\r
-for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
-xoff = yoff;\r
-for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {\r
-outData[off++] = this.data[xoff];\r
-outData[off++] = this.data[xoff + d1];\r
-}\r
-}\r
-} else if (this.numDataElements == 3) {\r
-yoff += this.dataOffsets[0];\r
-var d1 = this.dataOffsets[1] - this.dataOffsets[0];\r
-var d2 = this.dataOffsets[2] - this.dataOffsets[0];\r
-for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
-xoff = yoff;\r
-for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {\r
-outData[off++] = this.data[xoff];\r
-outData[off++] = this.data[xoff + d1];\r
-outData[off++] = this.data[xoff + d2];\r
-}\r
-}\r
-} else if (this.numDataElements == 4) {\r
-yoff += this.dataOffsets[0];\r
-var d1 = this.dataOffsets[1] - this.dataOffsets[0];\r
-var d2 = this.dataOffsets[2] - this.dataOffsets[0];\r
-var d3 = this.dataOffsets[3] - this.dataOffsets[0];\r
-for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
-xoff = yoff;\r
-for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {\r
-outData[off++] = this.data[xoff];\r
-outData[off++] = this.data[xoff + d1];\r
-outData[off++] = this.data[xoff + d2];\r
-outData[off++] = this.data[xoff + d3];\r
-}\r
-}\r
-} else {\r
-for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
-xoff = yoff;\r
-for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {\r
-for (var c = 0; c < this.numDataElements; c++) {\r
-outData[off++] = this.data[this.dataOffsets[c] + xoff];\r
-}\r
-}\r
-}\r
-}return outData;\r
-}, "~N,~N,~N,~N,~A");\r
-Clazz.defineMethod (c$, "setDataElements", \r
-function (x, y, obj) {\r
-var $private = Clazz.checkPrivateMethod (arguments);\r
-if ($private != null) {\r
-return $private.apply (this, arguments);\r
-}\r
-if ((x < this.minX) || (y < this.minY) || (x >= this.$maxX) || (y >= this.$maxY)) {\r
-throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");\r
-}var inData = obj;\r
-var off = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride;\r
-for (var i = 0; i < this.numDataElements; i++) {\r
-this.data[this.dataOffsets[i] + off] = inData[i];\r
-}\r
-this.markDirty ();\r
-}, "~N,~N,~O");\r
-Clazz.defineMethod (c$, "setDataElements", \r
-function (x, y, inRaster) {\r
-var $private = Clazz.checkPrivateMethod (arguments);\r
-if ($private != null) {\r
-return $private.apply (this, arguments);\r
-}\r
-var srcOffX = inRaster.getMinX ();\r
-var srcOffY = inRaster.getMinY ();\r
-var dstOffX = x + srcOffX;\r
-var dstOffY = y + srcOffY;\r
-var width = inRaster.getWidth ();\r
-var height = inRaster.getHeight ();\r
-if ((dstOffX < this.minX) || (dstOffY < this.minY) || (dstOffX + width > this.$maxX) || (dstOffY + height > this.$maxY)) {\r
-throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");\r
-}this.setDataElements (dstOffX, dstOffY, srcOffX, srcOffY, width, height, inRaster);\r
-}, "~N,~N,java.awt.image.Raster");\r
-Clazz.defineMethod (c$, "setDataElements", \r
- function (dstX, dstY, srcX, srcY, width, height, inRaster) {\r
-var $private = Clazz.checkPrivateMethod (arguments);\r
-if ($private != null) {\r
-return $private.apply (this, arguments);\r
-}\r
-if (width <= 0 || height <= 0) {\r
-return;\r
-}var srcOffX = inRaster.getMinX ();\r
-var srcOffY = inRaster.getMinY ();\r
-var tdata = null;\r
-if (Clazz.instanceOf (inRaster, jssun.awt.image.ByteInterleavedRaster)) {\r
-var bct = inRaster;\r
-var bdata = bct.getDataStorage ();\r
-if (this.inOrder && bct.inOrder && this.pixelStride == bct.pixelStride) {\r
-var toff = bct.getDataOffset (0);\r
-var tss = bct.getScanlineStride ();\r
-var tps = bct.getPixelStride ();\r
-var srcOffset = toff + (srcY - srcOffY) * tss + (srcX - srcOffX) * tps;\r
-var dstOffset = this.dataOffsets[0] + (dstY - this.minY) * this.scanlineStride + (dstX - this.minX) * this.pixelStride;\r
-var nbytes = width * this.pixelStride;\r
-for (var tmpY = 0; tmpY < height; tmpY++) {\r
-System.arraycopy (bdata, srcOffset, this.data, dstOffset, nbytes);\r
-srcOffset += tss;\r
-dstOffset += this.scanlineStride;\r
-}\r
-this.markDirty ();\r
-return;\r
-}}for (var startY = 0; startY < height; startY++) {\r
-tdata = inRaster.getDataElements (srcOffX, srcOffY + startY, width, 1, tdata);\r
-this.setDataElements (dstX, dstY + startY, width, 1, tdata);\r
-}\r
-}, "~N,~N,~N,~N,~N,~N,java.awt.image.Raster");\r
-Clazz.defineMethod (c$, "setDataElements", \r
-function (x, y, w, h, obj) {\r
-var $private = Clazz.checkPrivateMethod (arguments);\r
-if ($private != null) {\r
-return $private.apply (this, arguments);\r
-}\r
-this.putByteData (x, y, w, h, obj);\r
-}, "~N,~N,~N,~N,~O");\r
-Clazz.defineMethod (c$, "putByteData", \r
-function (x, y, w, h, band, inData) {\r
-if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {\r
-throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");\r
-}var yoff = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride + this.dataOffsets[band];\r
-var xoff;\r
-var off = 0;\r
-var xstart;\r
-var ystart;\r
-if (this.pixelStride == 1) {\r
-if (this.scanlineStride == w) {\r
-System.arraycopy (inData, 0, this.data, yoff, w * h);\r
-} else {\r
-for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
-System.arraycopy (inData, off, this.data, yoff, w);\r
-off += w;\r
-}\r
-}} else {\r
-for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
-xoff = yoff;\r
-for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {\r
-this.data[xoff] = inData[off++];\r
-}\r
-}\r
-}this.markDirty ();\r
-}, "~N,~N,~N,~N,~N,~A");\r
-Clazz.defineMethod (c$, "putByteData", \r
-function (x, y, w, h, inData) {\r
-if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {\r
-throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");\r
-}var yoff = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride;\r
-var xoff;\r
-var off = 0;\r
-var xstart;\r
-var ystart;\r
-if (this.inOrder) {\r
-yoff += this.dataOffsets[0];\r
-var rowBytes = w * this.pixelStride;\r
-if (rowBytes == this.scanlineStride) {\r
-System.arraycopy (inData, 0, this.data, yoff, rowBytes * h);\r
-} else {\r
-for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
-System.arraycopy (inData, off, this.data, yoff, rowBytes);\r
-off += rowBytes;\r
-}\r
-}} else if (this.numDataElements == 1) {\r
-yoff += this.dataOffsets[0];\r
-for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
-xoff = yoff;\r
-for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {\r
-this.data[xoff] = inData[off++];\r
-}\r
-}\r
-} else if (this.numDataElements == 2) {\r
-yoff += this.dataOffsets[0];\r
-var d1 = this.dataOffsets[1] - this.dataOffsets[0];\r
-for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
-xoff = yoff;\r
-for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {\r
-this.data[xoff] = inData[off++];\r
-this.data[xoff + d1] = inData[off++];\r
-}\r
-}\r
-} else if (this.numDataElements == 3) {\r
-yoff += this.dataOffsets[0];\r
-var d1 = this.dataOffsets[1] - this.dataOffsets[0];\r
-var d2 = this.dataOffsets[2] - this.dataOffsets[0];\r
-for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
-xoff = yoff;\r
-for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {\r
-this.data[xoff] = inData[off++];\r
-this.data[xoff + d1] = inData[off++];\r
-this.data[xoff + d2] = inData[off++];\r
-}\r
-}\r
-} else if (this.numDataElements == 4) {\r
-yoff += this.dataOffsets[0];\r
-var d1 = this.dataOffsets[1] - this.dataOffsets[0];\r
-var d2 = this.dataOffsets[2] - this.dataOffsets[0];\r
-var d3 = this.dataOffsets[3] - this.dataOffsets[0];\r
-for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
-xoff = yoff;\r
-for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {\r
-this.data[xoff] = inData[off++];\r
-this.data[xoff + d1] = inData[off++];\r
-this.data[xoff + d2] = inData[off++];\r
-this.data[xoff + d3] = inData[off++];\r
-}\r
-}\r
-} else {\r
-for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
-xoff = yoff;\r
-for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {\r
-for (var c = 0; c < this.numDataElements; c++) {\r
-this.data[this.dataOffsets[c] + xoff] = inData[off++];\r
-}\r
-}\r
-}\r
-}this.markDirty ();\r
-}, "~N,~N,~N,~N,~A");\r
-Clazz.overrideMethod (c$, "getSample", \r
-function (x, y, b) {\r
-if ((x < this.minX) || (y < this.minY) || (x >= this.$maxX) || (y >= this.$maxY)) {\r
-throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");\r
-}if (this.packed) {\r
-var offset = y * this.scanlineStride + x + this.dbOffsetPacked;\r
-var sample = this.data[offset];\r
-return (sample & this.bitMasks[b]) >>> this.bitOffsets[b];\r
-} else {\r
-var offset = y * this.scanlineStride + x * this.pixelStride + this.dbOffset;\r
-return this.data[offset + this.dataOffsets[b]] & 0xff;\r
-}}, "~N,~N,~N");\r
-Clazz.defineMethod (c$, "setSample", \r
-function (x, y, b, s) {\r
-if ((x < this.minX) || (y < this.minY) || (x >= this.$maxX) || (y >= this.$maxY)) {\r
-throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");\r
-}if (this.packed) {\r
-var offset = y * this.scanlineStride + x + this.dbOffsetPacked;\r
-var bitMask = this.bitMasks[b];\r
-var value = this.data[offset];\r
-value &= ~bitMask;\r
-value |= (s << this.bitOffsets[b]) & bitMask;\r
-this.data[offset] = value;\r
-} else {\r
-var offset = y * this.scanlineStride + x * this.pixelStride + this.dbOffset;\r
-this.data[offset + this.dataOffsets[b]] = s;\r
-}this.markDirty ();\r
-}, "~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "getSamples", \r
-function (x, y, w, h, b, iArray) {\r
-if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {\r
-throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");\r
-}var samples;\r
-if (iArray != null) {\r
-samples = iArray;\r
-} else {\r
-samples =  Clazz.newIntArray (w * h, 0);\r
-}var lineOffset = y * this.scanlineStride + x * this.pixelStride;\r
-var dstOffset = 0;\r
-if (this.packed) {\r
-lineOffset += this.dbOffsetPacked;\r
-var bitMask = this.bitMasks[b];\r
-var bitOffset = this.bitOffsets[b];\r
-for (var j = 0; j < h; j++) {\r
-var sampleOffset = lineOffset;\r
-for (var i = 0; i < w; i++) {\r
-var value = this.data[sampleOffset++];\r
-samples[dstOffset++] = ((value & bitMask) >>> bitOffset);\r
-}\r
-lineOffset += this.scanlineStride;\r
-}\r
-} else {\r
-lineOffset += this.dbOffset + this.dataOffsets[b];\r
-for (var j = 0; j < h; j++) {\r
-var sampleOffset = lineOffset;\r
-for (var i = 0; i < w; i++) {\r
-samples[dstOffset++] = this.data[sampleOffset] & 0xff;\r
-sampleOffset += this.pixelStride;\r
-}\r
-lineOffset += this.scanlineStride;\r
-}\r
-}return samples;\r
-}, "~N,~N,~N,~N,~N,~A");\r
-Clazz.defineMethod (c$, "setSamples", \r
-function (x, y, w, h, b, iArray) {\r
-if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {\r
-throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");\r
-}var lineOffset = y * this.scanlineStride + x * this.pixelStride;\r
-var srcOffset = 0;\r
-if (this.packed) {\r
-lineOffset += this.dbOffsetPacked;\r
-var bitMask = this.bitMasks[b];\r
-for (var j = 0; j < h; j++) {\r
-var sampleOffset = lineOffset;\r
-for (var i = 0; i < w; i++) {\r
-var value = this.data[sampleOffset];\r
-value &= ~bitMask;\r
-var sample = iArray[srcOffset++];\r
-value |= (sample << this.bitOffsets[b]) & bitMask;\r
-this.data[sampleOffset++] = value;\r
-}\r
-lineOffset += this.scanlineStride;\r
-}\r
-} else {\r
-lineOffset += this.dbOffset + this.dataOffsets[b];\r
-for (var i = 0; i < h; i++) {\r
-var sampleOffset = lineOffset;\r
-for (var j = 0; j < w; j++) {\r
-this.data[sampleOffset] = iArray[srcOffset++];\r
-sampleOffset += this.pixelStride;\r
-}\r
-lineOffset += this.scanlineStride;\r
-}\r
-}this.markDirty ();\r
-}, "~N,~N,~N,~N,~N,~A");\r
-Clazz.defineMethod (c$, "getPixels", \r
-function (x, y, w, h, iArray) {\r
-if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {\r
-throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");\r
-}var pixels;\r
-if (iArray != null) {\r
-pixels = iArray;\r
-} else {\r
-pixels =  Clazz.newIntArray (w * h * this.numBands, 0);\r
-}var lineOffset = y * this.scanlineStride + x * this.pixelStride;\r
-var dstOffset = 0;\r
-if (this.packed) {\r
-lineOffset += this.dbOffsetPacked;\r
-for (var j = 0; j < h; j++) {\r
-for (var i = 0; i < w; i++) {\r
-var value = this.data[lineOffset + i];\r
-for (var k = 0; k < this.numBands; k++) {\r
-pixels[dstOffset++] = (value & this.bitMasks[k]) >>> this.bitOffsets[k];\r
-}\r
-}\r
-lineOffset += this.scanlineStride;\r
-}\r
-} else {\r
-lineOffset += this.dbOffset;\r
-var d0 = this.dataOffsets[0];\r
-if (this.numBands == 1) {\r
-for (var j = 0; j < h; j++) {\r
-var pixelOffset = lineOffset + d0;\r
-for (var i = 0; i < w; i++) {\r
-pixels[dstOffset++] = this.data[pixelOffset] & 0xff;\r
-pixelOffset += this.pixelStride;\r
-}\r
-lineOffset += this.scanlineStride;\r
-}\r
-} else if (this.numBands == 2) {\r
-var d1 = this.dataOffsets[1] - d0;\r
-for (var j = 0; j < h; j++) {\r
-var pixelOffset = lineOffset + d0;\r
-for (var i = 0; i < w; i++) {\r
-pixels[dstOffset++] = this.data[pixelOffset] & 0xff;\r
-pixels[dstOffset++] = this.data[pixelOffset + d1] & 0xff;\r
-pixelOffset += this.pixelStride;\r
-}\r
-lineOffset += this.scanlineStride;\r
-}\r
-} else if (this.numBands == 3) {\r
-var d1 = this.dataOffsets[1] - d0;\r
-var d2 = this.dataOffsets[2] - d0;\r
-for (var j = 0; j < h; j++) {\r
-var pixelOffset = lineOffset + d0;\r
-for (var i = 0; i < w; i++) {\r
-pixels[dstOffset++] = this.data[pixelOffset] & 0xff;\r
-pixels[dstOffset++] = this.data[pixelOffset + d1] & 0xff;\r
-pixels[dstOffset++] = this.data[pixelOffset + d2] & 0xff;\r
-pixelOffset += this.pixelStride;\r
-}\r
-lineOffset += this.scanlineStride;\r
-}\r
-} else if (this.numBands == 4) {\r
-var d1 = this.dataOffsets[1] - d0;\r
-var d2 = this.dataOffsets[2] - d0;\r
-var d3 = this.dataOffsets[3] - d0;\r
-for (var j = 0; j < h; j++) {\r
-var pixelOffset = lineOffset + d0;\r
-for (var i = 0; i < w; i++) {\r
-pixels[dstOffset++] = this.data[pixelOffset] & 0xff;\r
-pixels[dstOffset++] = this.data[pixelOffset + d1] & 0xff;\r
-pixels[dstOffset++] = this.data[pixelOffset + d2] & 0xff;\r
-pixels[dstOffset++] = this.data[pixelOffset + d3] & 0xff;\r
-pixelOffset += this.pixelStride;\r
-}\r
-lineOffset += this.scanlineStride;\r
-}\r
-} else {\r
-for (var j = 0; j < h; j++) {\r
-var pixelOffset = lineOffset;\r
-for (var i = 0; i < w; i++) {\r
-for (var k = 0; k < this.numBands; k++) {\r
-pixels[dstOffset++] = this.data[pixelOffset + this.dataOffsets[k]] & 0xff;\r
-}\r
-pixelOffset += this.pixelStride;\r
-}\r
-lineOffset += this.scanlineStride;\r
-}\r
-}}return pixels;\r
-}, "~N,~N,~N,~N,~A");\r
-Clazz.defineMethod (c$, "setPixels", \r
-function (x, y, w, h, iArray) {\r
-if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {\r
-throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");\r
-}var lineOffset = y * this.scanlineStride + x * this.pixelStride;\r
-var srcOffset = 0;\r
-if (this.packed) {\r
-lineOffset += this.dbOffsetPacked;\r
-for (var j = 0; j < h; j++) {\r
-for (var i = 0; i < w; i++) {\r
-var value = 0;\r
-for (var k = 0; k < this.numBands; k++) {\r
-var srcValue = iArray[srcOffset++];\r
-value |= ((srcValue << this.bitOffsets[k]) & this.bitMasks[k]);\r
-}\r
-this.data[lineOffset + i] = value;\r
-}\r
-lineOffset += this.scanlineStride;\r
-}\r
-} else {\r
-lineOffset += this.dbOffset;\r
-var d0 = this.dataOffsets[0];\r
-if (this.numBands == 1) {\r
-for (var j = 0; j < h; j++) {\r
-var pixelOffset = lineOffset + d0;\r
-for (var i = 0; i < w; i++) {\r
-this.data[pixelOffset] = iArray[srcOffset++];\r
-pixelOffset += this.pixelStride;\r
-}\r
-lineOffset += this.scanlineStride;\r
-}\r
-} else if (this.numBands == 2) {\r
-var d1 = this.dataOffsets[1] - d0;\r
-for (var j = 0; j < h; j++) {\r
-var pixelOffset = lineOffset + d0;\r
-for (var i = 0; i < w; i++) {\r
-this.data[pixelOffset] = iArray[srcOffset++];\r
-this.data[pixelOffset + d1] = iArray[srcOffset++];\r
-pixelOffset += this.pixelStride;\r
-}\r
-lineOffset += this.scanlineStride;\r
-}\r
-} else if (this.numBands == 3) {\r
-var d1 = this.dataOffsets[1] - d0;\r
-var d2 = this.dataOffsets[2] - d0;\r
-for (var j = 0; j < h; j++) {\r
-var pixelOffset = lineOffset + d0;\r
-for (var i = 0; i < w; i++) {\r
-this.data[pixelOffset] = iArray[srcOffset++];\r
-this.data[pixelOffset + d1] = iArray[srcOffset++];\r
-this.data[pixelOffset + d2] = iArray[srcOffset++];\r
-pixelOffset += this.pixelStride;\r
-}\r
-lineOffset += this.scanlineStride;\r
-}\r
-} else if (this.numBands == 4) {\r
-var d1 = this.dataOffsets[1] - d0;\r
-var d2 = this.dataOffsets[2] - d0;\r
-var d3 = this.dataOffsets[3] - d0;\r
-for (var j = 0; j < h; j++) {\r
-var pixelOffset = lineOffset + d0;\r
-for (var i = 0; i < w; i++) {\r
-this.data[pixelOffset] = iArray[srcOffset++];\r
-this.data[pixelOffset + d1] = iArray[srcOffset++];\r
-this.data[pixelOffset + d2] = iArray[srcOffset++];\r
-this.data[pixelOffset + d3] = iArray[srcOffset++];\r
-pixelOffset += this.pixelStride;\r
-}\r
-lineOffset += this.scanlineStride;\r
-}\r
-} else {\r
-for (var j = 0; j < h; j++) {\r
-var pixelOffset = lineOffset;\r
-for (var i = 0; i < w; i++) {\r
-for (var k = 0; k < this.numBands; k++) {\r
-this.data[pixelOffset + this.dataOffsets[k]] = iArray[srcOffset++];\r
-}\r
-pixelOffset += this.pixelStride;\r
-}\r
-lineOffset += this.scanlineStride;\r
-}\r
-}}this.markDirty ();\r
-}, "~N,~N,~N,~N,~A");\r
-Clazz.defineMethod (c$, "setRect", \r
-function (dx, dy, srcRaster) {\r
-if (!(Clazz.instanceOf (srcRaster, jssun.awt.image.ByteInterleavedRaster))) {\r
-Clazz.superCall (this, jssun.awt.image.ByteInterleavedRaster, "setRect", [dx, dy, srcRaster]);\r
-return;\r
-}var width = srcRaster.getWidth ();\r
-var height = srcRaster.getHeight ();\r
-var srcOffX = srcRaster.getMinX ();\r
-var srcOffY = srcRaster.getMinY ();\r
-var dstOffX = dx + srcOffX;\r
-var dstOffY = dy + srcOffY;\r
-if (dstOffX < this.minX) {\r
-var skipX = this.minX - dstOffX;\r
-width -= skipX;\r
-srcOffX += skipX;\r
-dstOffX = this.minX;\r
-}if (dstOffY < this.minY) {\r
-var skipY = this.minY - dstOffY;\r
-height -= skipY;\r
-srcOffY += skipY;\r
-dstOffY = this.minY;\r
-}if (dstOffX + width > this.$maxX) {\r
-width = this.$maxX - dstOffX;\r
-}if (dstOffY + height > this.$maxY) {\r
-height = this.$maxY - dstOffY;\r
-}this.setDataElements (dstOffX, dstOffY, srcOffX, srcOffY, width, height, srcRaster);\r
-}, "~N,~N,java.awt.image.Raster");\r
-Clazz.overrideMethod (c$, "createChild", \r
-function (x, y, width, height, x0, y0, bandList) {\r
-var newRaster = this.createWritableChild (x, y, width, height, x0, y0, bandList);\r
-return newRaster;\r
-}, "~N,~N,~N,~N,~N,~N,~A");\r
-Clazz.overrideMethod (c$, "createWritableChild", \r
-function (x, y, width, height, x0, y0, bandList) {\r
-if (x < this.minX) {\r
-throw  new java.awt.image.RasterFormatException ("x lies outside the raster");\r
-}if (y < this.minY) {\r
-throw  new java.awt.image.RasterFormatException ("y lies outside the raster");\r
-}if ((x + width < x) || (x + width > this.minX + this.width)) {\r
-throw  new java.awt.image.RasterFormatException ("(x + width) is outside of Raster");\r
-}if ((y + height < y) || (y + height > this.minY + this.height)) {\r
-throw  new java.awt.image.RasterFormatException ("(y + height) is outside of Raster");\r
-}var sm;\r
-if (bandList != null) sm = this.sampleModel.createSubsetSampleModel (bandList);\r
- else sm = this.sampleModel;\r
-var deltaX = x0 - x;\r
-var deltaY = y0 - y;\r
-return  new jssun.awt.image.ByteInterleavedRaster (sm, this.dataBuffer,  new java.awt.Rectangle (x0, y0, width, height),  new java.awt.Point (this.sampleModelTranslateX + deltaX, this.sampleModelTranslateY + deltaY), this);\r
-}, "~N,~N,~N,~N,~N,~N,~A");\r
-Clazz.defineMethod (c$, "createCompatibleWritableRaster", \r
-function (w, h) {\r
-if (w <= 0 || h <= 0) {\r
-throw  new java.awt.image.RasterFormatException ("negative " + ((w <= 0) ? "width" : "height"));\r
-}var sm = this.sampleModel.createCompatibleSampleModel (w, h);\r
-return  new jssun.awt.image.ByteInterleavedRaster (sm,  new java.awt.Point (0, 0));\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "createCompatibleWritableRaster", \r
-function () {\r
-return this.createCompatibleWritableRaster (this.width, this.height);\r
-});\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return  String.instantialize ("ByteInterleavedRaster: width = " + this.width + " height = " + this.height + " #numDataElements " + this.numDataElements + " dataOff[0] = " + this.dataOffsets[0]);\r
-});\r
-});\r
+Clazz.declarePackage ("jssun.awt.image");
+Clazz.load (["jssun.awt.image.ByteComponentRaster"], "jssun.awt.image.ByteInterleavedRaster", ["java.lang.ArrayIndexOutOfBoundsException", "java.awt.Point", "$.Rectangle", "java.awt.image.DataBufferByte", "$.RasterFormatException", "$.SinglePixelPackedSampleModel"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.inOrder = false;
+this.dbOffset = 0;
+this.dbOffsetPacked = 0;
+this.packed = false;
+this.bitMasks = null;
+this.bitOffsets = null;
+this.$maxX = 0;
+this.$maxY = 0;
+Clazz.instantialize (this, arguments);
+}, jssun.awt.image, "ByteInterleavedRaster", jssun.awt.image.ByteComponentRaster);
+Clazz.makeConstructor (c$, 
+function (sampleModel, origin) {
+Clazz.superConstructor (this, jssun.awt.image.ByteInterleavedRaster, []);
+this.setByteInterRaster (sampleModel, sampleModel.createDataBuffer (),  new java.awt.Rectangle (origin.x, origin.y, sampleModel.getWidth (), sampleModel.getHeight ()), origin, null);
+}, "java.awt.image.SampleModel,java.awt.Point");
+Clazz.makeConstructor (c$, 
+function (sampleModel, dataBuffer, origin) {
+Clazz.superConstructor (this, jssun.awt.image.ByteInterleavedRaster, []);
+this.setParams (sampleModel, dataBuffer, origin);
+}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Point");
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jssun.awt.image.ByteInterleavedRaster, []);
+});
+Clazz.overrideMethod (c$, "setParams", 
+function (sampleModel, dataBuffer, origin) {
+this.setByteInterRaster (sampleModel, dataBuffer,  new java.awt.Rectangle (origin.x, origin.y, sampleModel.getWidth (), sampleModel.getHeight ()), origin, null);
+}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Point");
+Clazz.makeConstructor (c$, 
+function (sampleModel, dataBuffer, aRegion, origin, parent) {
+Clazz.superConstructor (this, jssun.awt.image.ByteInterleavedRaster, []);
+this.setByteInterRaster (sampleModel, dataBuffer, aRegion, origin, parent);
+}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,jssun.awt.image.ByteInterleavedRaster");
+Clazz.defineMethod (c$, "setByteInterRaster", 
+ function (sampleModel, dataBuffer, aRegion, origin, parent) {
+this.$maxX = this.minX + this.width;
+this.$maxY = this.minY + this.height;
+if (!(Clazz.instanceOf (dataBuffer, java.awt.image.DataBufferByte))) {
+throw  new java.awt.image.RasterFormatException ("ByteInterleavedRasters must have byte DataBuffers");
+}var dbb = dataBuffer;
+this.data = jssun.awt.image.SunWritableRaster.stealData (dbb, 0);
+var xOffset = aRegion.x - origin.x;
+var yOffset = aRegion.y - origin.y;
+if (Clazz.instanceOf (sampleModel, java.awt.image.SinglePixelPackedSampleModel)) {
+var sppsm = sampleModel;
+this.packed = true;
+this.bitMasks = sppsm.getBitMasks ();
+this.bitOffsets = sppsm.getBitOffsets ();
+this.scanlineStride = sppsm.getScanlineStride ();
+this.pixelStride = 1;
+this.dataOffsets =  Clazz.newIntArray (1, 0);
+this.dataOffsets[0] = dbb.getOffset ();
+this.dataOffsets[0] += xOffset * this.pixelStride + yOffset * this.scanlineStride;
+} else {
+throw  new java.awt.image.RasterFormatException ("ByteInterleavedRasters must " + "have PixelInterleavedSampleModel, SinglePixelPackedSampleModel" + " or interleaved ComponentSampleModel.  Sample model is " + sampleModel);
+}this.bandOffset = this.dataOffsets[0];
+this.dbOffsetPacked = dataBuffer.getOffset () - this.sampleModelTranslateY * this.scanlineStride - this.sampleModelTranslateX * this.pixelStride;
+this.dbOffset = this.dbOffsetPacked - (xOffset * this.pixelStride + yOffset * this.scanlineStride);
+this.inOrder = false;
+if (this.numDataElements == this.pixelStride) {
+this.inOrder = true;
+for (var i = 1; i < this.numDataElements; i++) {
+if (this.dataOffsets[i] - this.dataOffsets[0] != i) {
+this.inOrder = false;
+break;
+}}
+}this.verify ();
+}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,jssun.awt.image.ByteInterleavedRaster");
+Clazz.overrideMethod (c$, "getDataOffsets", 
+function () {
+return this.dataOffsets.clone ();
+});
+Clazz.overrideMethod (c$, "getDataOffset", 
+function (band) {
+return this.dataOffsets[band];
+}, "~N");
+Clazz.overrideMethod (c$, "getScanlineStride", 
+function () {
+return this.scanlineStride;
+});
+Clazz.overrideMethod (c$, "getPixelStride", 
+function () {
+return this.pixelStride;
+});
+Clazz.overrideMethod (c$, "getDataStorage", 
+function () {
+return this.data;
+});
+Clazz.defineMethod (c$, "getDataElements", 
+function (x, y, obj) {
+if ((x < this.minX) || (y < this.minY) || (x >= this.$maxX) || (y >= this.$maxY)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var outData;
+if (obj == null) {
+outData =  Clazz.newByteArray (this.numDataElements, 0);
+} else {
+outData = obj;
+}var off = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride;
+for (var band = 0; band < this.numDataElements; band++) {
+outData[band] = this.data[this.dataOffsets[band] + off];
+}
+return outData;
+}, "~N,~N,~O");
+Clazz.defineMethod (c$, "getDataElements", 
+function (x, y, w, h, obj) {
+return this.getByteData (x, y, w, h, obj);
+}, "~N,~N,~N,~N,~O");
+Clazz.defineMethod (c$, "getByteData", 
+function (x, y, w, h, band, outData) {
+if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}if (outData == null) {
+outData =  Clazz.newByteArray (w * h, 0);
+}var yoff = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride + this.dataOffsets[band];
+var xoff;
+var off = 0;
+var xstart;
+var ystart;
+if (this.pixelStride == 1) {
+if (this.scanlineStride == w) {
+System.arraycopy (this.data, yoff, outData, 0, w * h);
+} else {
+for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
+System.arraycopy (this.data, yoff, outData, off, w);
+off += w;
+}
+}} else {
+for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
+xoff = yoff;
+for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
+outData[off++] = this.data[xoff];
+}
+}
+}return outData;
+}, "~N,~N,~N,~N,~N,~A");
+Clazz.defineMethod (c$, "getByteData", 
+function (x, y, w, h, outData) {
+if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}if (outData == null) {
+outData =  Clazz.newByteArray (this.numDataElements * w * h, 0);
+}var yoff = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride;
+var xoff;
+var off = 0;
+var xstart;
+var ystart;
+if (this.inOrder) {
+yoff += this.dataOffsets[0];
+var rowBytes = w * this.pixelStride;
+if (this.scanlineStride == rowBytes) {
+System.arraycopy (this.data, yoff, outData, off, rowBytes * h);
+} else {
+for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
+System.arraycopy (this.data, yoff, outData, off, rowBytes);
+off += rowBytes;
+}
+}} else if (this.numDataElements == 1) {
+yoff += this.dataOffsets[0];
+for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
+xoff = yoff;
+for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
+outData[off++] = this.data[xoff];
+}
+}
+} else if (this.numDataElements == 2) {
+yoff += this.dataOffsets[0];
+var d1 = this.dataOffsets[1] - this.dataOffsets[0];
+for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
+xoff = yoff;
+for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
+outData[off++] = this.data[xoff];
+outData[off++] = this.data[xoff + d1];
+}
+}
+} else if (this.numDataElements == 3) {
+yoff += this.dataOffsets[0];
+var d1 = this.dataOffsets[1] - this.dataOffsets[0];
+var d2 = this.dataOffsets[2] - this.dataOffsets[0];
+for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
+xoff = yoff;
+for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
+outData[off++] = this.data[xoff];
+outData[off++] = this.data[xoff + d1];
+outData[off++] = this.data[xoff + d2];
+}
+}
+} else if (this.numDataElements == 4) {
+yoff += this.dataOffsets[0];
+var d1 = this.dataOffsets[1] - this.dataOffsets[0];
+var d2 = this.dataOffsets[2] - this.dataOffsets[0];
+var d3 = this.dataOffsets[3] - this.dataOffsets[0];
+for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
+xoff = yoff;
+for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
+outData[off++] = this.data[xoff];
+outData[off++] = this.data[xoff + d1];
+outData[off++] = this.data[xoff + d2];
+outData[off++] = this.data[xoff + d3];
+}
+}
+} else {
+for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
+xoff = yoff;
+for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
+for (var c = 0; c < this.numDataElements; c++) {
+outData[off++] = this.data[this.dataOffsets[c] + xoff];
+}
+}
+}
+}return outData;
+}, "~N,~N,~N,~N,~A");
+Clazz.defineMethod (c$, "setDataElements", 
+function (x, y, obj) {
+var $private = Clazz.checkPrivateMethod (arguments);
+if ($private != null) {
+return $private.apply (this, arguments);
+}
+if ((x < this.minX) || (y < this.minY) || (x >= this.$maxX) || (y >= this.$maxY)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var inData = obj;
+var off = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride;
+for (var i = 0; i < this.numDataElements; i++) {
+this.data[this.dataOffsets[i] + off] = inData[i];
+}
+this.markDirty ();
+}, "~N,~N,~O");
+Clazz.defineMethod (c$, "setDataElements", 
+function (x, y, inRaster) {
+var $private = Clazz.checkPrivateMethod (arguments);
+if ($private != null) {
+return $private.apply (this, arguments);
+}
+var srcOffX = inRaster.getMinX ();
+var srcOffY = inRaster.getMinY ();
+var dstOffX = x + srcOffX;
+var dstOffY = y + srcOffY;
+var width = inRaster.getWidth ();
+var height = inRaster.getHeight ();
+if ((dstOffX < this.minX) || (dstOffY < this.minY) || (dstOffX + width > this.$maxX) || (dstOffY + height > this.$maxY)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}this.setDataElements (dstOffX, dstOffY, srcOffX, srcOffY, width, height, inRaster);
+}, "~N,~N,java.awt.image.Raster");
+Clazz.defineMethod (c$, "setDataElements", 
+ function (dstX, dstY, srcX, srcY, width, height, inRaster) {
+var $private = Clazz.checkPrivateMethod (arguments);
+if ($private != null) {
+return $private.apply (this, arguments);
+}
+if (width <= 0 || height <= 0) {
+return;
+}var srcOffX = inRaster.getMinX ();
+var srcOffY = inRaster.getMinY ();
+var tdata = null;
+if (Clazz.instanceOf (inRaster, jssun.awt.image.ByteInterleavedRaster)) {
+var bct = inRaster;
+var bdata = bct.getDataStorage ();
+if (this.inOrder && bct.inOrder && this.pixelStride == bct.pixelStride) {
+var toff = bct.getDataOffset (0);
+var tss = bct.getScanlineStride ();
+var tps = bct.getPixelStride ();
+var srcOffset = toff + (srcY - srcOffY) * tss + (srcX - srcOffX) * tps;
+var dstOffset = this.dataOffsets[0] + (dstY - this.minY) * this.scanlineStride + (dstX - this.minX) * this.pixelStride;
+var nbytes = width * this.pixelStride;
+for (var tmpY = 0; tmpY < height; tmpY++) {
+System.arraycopy (bdata, srcOffset, this.data, dstOffset, nbytes);
+srcOffset += tss;
+dstOffset += this.scanlineStride;
+}
+this.markDirty ();
+return;
+}}for (var startY = 0; startY < height; startY++) {
+tdata = inRaster.getDataElements (srcOffX, srcOffY + startY, width, 1, tdata);
+this.setDataElements (dstX, dstY + startY, width, 1, tdata);
+}
+}, "~N,~N,~N,~N,~N,~N,java.awt.image.Raster");
+Clazz.defineMethod (c$, "setDataElements", 
+function (x, y, w, h, obj) {
+var $private = Clazz.checkPrivateMethod (arguments);
+if ($private != null) {
+return $private.apply (this, arguments);
+}
+this.putByteData (x, y, w, h, obj);
+}, "~N,~N,~N,~N,~O");
+Clazz.defineMethod (c$, "putByteData", 
+function (x, y, w, h, band, inData) {
+if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var yoff = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride + this.dataOffsets[band];
+var xoff;
+var off = 0;
+var xstart;
+var ystart;
+if (this.pixelStride == 1) {
+if (this.scanlineStride == w) {
+System.arraycopy (inData, 0, this.data, yoff, w * h);
+} else {
+for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
+System.arraycopy (inData, off, this.data, yoff, w);
+off += w;
+}
+}} else {
+for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
+xoff = yoff;
+for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
+this.data[xoff] = inData[off++];
+}
+}
+}this.markDirty ();
+}, "~N,~N,~N,~N,~N,~A");
+Clazz.defineMethod (c$, "putByteData", 
+function (x, y, w, h, inData) {
+if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var yoff = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride;
+var xoff;
+var off = 0;
+var xstart;
+var ystart;
+if (this.inOrder) {
+yoff += this.dataOffsets[0];
+var rowBytes = w * this.pixelStride;
+if (rowBytes == this.scanlineStride) {
+System.arraycopy (inData, 0, this.data, yoff, rowBytes * h);
+} else {
+for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
+System.arraycopy (inData, off, this.data, yoff, rowBytes);
+off += rowBytes;
+}
+}} else if (this.numDataElements == 1) {
+yoff += this.dataOffsets[0];
+for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
+xoff = yoff;
+for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
+this.data[xoff] = inData[off++];
+}
+}
+} else if (this.numDataElements == 2) {
+yoff += this.dataOffsets[0];
+var d1 = this.dataOffsets[1] - this.dataOffsets[0];
+for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
+xoff = yoff;
+for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
+this.data[xoff] = inData[off++];
+this.data[xoff + d1] = inData[off++];
+}
+}
+} else if (this.numDataElements == 3) {
+yoff += this.dataOffsets[0];
+var d1 = this.dataOffsets[1] - this.dataOffsets[0];
+var d2 = this.dataOffsets[2] - this.dataOffsets[0];
+for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
+xoff = yoff;
+for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
+this.data[xoff] = inData[off++];
+this.data[xoff + d1] = inData[off++];
+this.data[xoff + d2] = inData[off++];
+}
+}
+} else if (this.numDataElements == 4) {
+yoff += this.dataOffsets[0];
+var d1 = this.dataOffsets[1] - this.dataOffsets[0];
+var d2 = this.dataOffsets[2] - this.dataOffsets[0];
+var d3 = this.dataOffsets[3] - this.dataOffsets[0];
+for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
+xoff = yoff;
+for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
+this.data[xoff] = inData[off++];
+this.data[xoff + d1] = inData[off++];
+this.data[xoff + d2] = inData[off++];
+this.data[xoff + d3] = inData[off++];
+}
+}
+} else {
+for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
+xoff = yoff;
+for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
+for (var c = 0; c < this.numDataElements; c++) {
+this.data[this.dataOffsets[c] + xoff] = inData[off++];
+}
+}
+}
+}this.markDirty ();
+}, "~N,~N,~N,~N,~A");
+Clazz.overrideMethod (c$, "getSample", 
+function (x, y, b) {
+if ((x < this.minX) || (y < this.minY) || (x >= this.$maxX) || (y >= this.$maxY)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}if (this.packed) {
+var offset = y * this.scanlineStride + x + this.dbOffsetPacked;
+var sample = this.data[offset];
+return (sample & this.bitMasks[b]) >>> this.bitOffsets[b];
+} else {
+var offset = y * this.scanlineStride + x * this.pixelStride + this.dbOffset;
+return this.data[offset + this.dataOffsets[b]] & 0xff;
+}}, "~N,~N,~N");
+Clazz.defineMethod (c$, "setSample", 
+function (x, y, b, s) {
+if ((x < this.minX) || (y < this.minY) || (x >= this.$maxX) || (y >= this.$maxY)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}if (this.packed) {
+var offset = y * this.scanlineStride + x + this.dbOffsetPacked;
+var bitMask = this.bitMasks[b];
+var value = this.data[offset];
+value &= ~bitMask;
+value |= (s << this.bitOffsets[b]) & bitMask;
+this.data[offset] = value;
+} else {
+var offset = y * this.scanlineStride + x * this.pixelStride + this.dbOffset;
+this.data[offset + this.dataOffsets[b]] = s;
+}this.markDirty ();
+}, "~N,~N,~N,~N");
+Clazz.defineMethod (c$, "getSamples", 
+function (x, y, w, h, b, iArray) {
+if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var samples;
+if (iArray != null) {
+samples = iArray;
+} else {
+samples =  Clazz.newIntArray (w * h, 0);
+}var lineOffset = y * this.scanlineStride + x * this.pixelStride;
+var dstOffset = 0;
+if (this.packed) {
+lineOffset += this.dbOffsetPacked;
+var bitMask = this.bitMasks[b];
+var bitOffset = this.bitOffsets[b];
+for (var j = 0; j < h; j++) {
+var sampleOffset = lineOffset;
+for (var i = 0; i < w; i++) {
+var value = this.data[sampleOffset++];
+samples[dstOffset++] = ((value & bitMask) >>> bitOffset);
+}
+lineOffset += this.scanlineStride;
+}
+} else {
+lineOffset += this.dbOffset + this.dataOffsets[b];
+for (var j = 0; j < h; j++) {
+var sampleOffset = lineOffset;
+for (var i = 0; i < w; i++) {
+samples[dstOffset++] = this.data[sampleOffset] & 0xff;
+sampleOffset += this.pixelStride;
+}
+lineOffset += this.scanlineStride;
+}
+}return samples;
+}, "~N,~N,~N,~N,~N,~A");
+Clazz.defineMethod (c$, "setSamples", 
+function (x, y, w, h, b, iArray) {
+if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var lineOffset = y * this.scanlineStride + x * this.pixelStride;
+var srcOffset = 0;
+if (this.packed) {
+lineOffset += this.dbOffsetPacked;
+var bitMask = this.bitMasks[b];
+for (var j = 0; j < h; j++) {
+var sampleOffset = lineOffset;
+for (var i = 0; i < w; i++) {
+var value = this.data[sampleOffset];
+value &= ~bitMask;
+var sample = iArray[srcOffset++];
+value |= (sample << this.bitOffsets[b]) & bitMask;
+this.data[sampleOffset++] = value;
+}
+lineOffset += this.scanlineStride;
+}
+} else {
+lineOffset += this.dbOffset + this.dataOffsets[b];
+for (var i = 0; i < h; i++) {
+var sampleOffset = lineOffset;
+for (var j = 0; j < w; j++) {
+this.data[sampleOffset] = iArray[srcOffset++];
+sampleOffset += this.pixelStride;
+}
+lineOffset += this.scanlineStride;
+}
+}this.markDirty ();
+}, "~N,~N,~N,~N,~N,~A");
+Clazz.defineMethod (c$, "getPixels", 
+function (x, y, w, h, iArray) {
+if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var pixels;
+if (iArray != null) {
+pixels = iArray;
+} else {
+pixels =  Clazz.newIntArray (w * h * this.numBands, 0);
+}var lineOffset = y * this.scanlineStride + x * this.pixelStride;
+var dstOffset = 0;
+if (this.packed) {
+lineOffset += this.dbOffsetPacked;
+for (var j = 0; j < h; j++) {
+for (var i = 0; i < w; i++) {
+var value = this.data[lineOffset + i];
+for (var k = 0; k < this.numBands; k++) {
+pixels[dstOffset++] = (value & this.bitMasks[k]) >>> this.bitOffsets[k];
+}
+}
+lineOffset += this.scanlineStride;
+}
+} else {
+lineOffset += this.dbOffset;
+var d0 = this.dataOffsets[0];
+if (this.numBands == 1) {
+for (var j = 0; j < h; j++) {
+var pixelOffset = lineOffset + d0;
+for (var i = 0; i < w; i++) {
+pixels[dstOffset++] = this.data[pixelOffset] & 0xff;
+pixelOffset += this.pixelStride;
+}
+lineOffset += this.scanlineStride;
+}
+} else if (this.numBands == 2) {
+var d1 = this.dataOffsets[1] - d0;
+for (var j = 0; j < h; j++) {
+var pixelOffset = lineOffset + d0;
+for (var i = 0; i < w; i++) {
+pixels[dstOffset++] = this.data[pixelOffset] & 0xff;
+pixels[dstOffset++] = this.data[pixelOffset + d1] & 0xff;
+pixelOffset += this.pixelStride;
+}
+lineOffset += this.scanlineStride;
+}
+} else if (this.numBands == 3) {
+var d1 = this.dataOffsets[1] - d0;
+var d2 = this.dataOffsets[2] - d0;
+for (var j = 0; j < h; j++) {
+var pixelOffset = lineOffset + d0;
+for (var i = 0; i < w; i++) {
+pixels[dstOffset++] = this.data[pixelOffset] & 0xff;
+pixels[dstOffset++] = this.data[pixelOffset + d1] & 0xff;
+pixels[dstOffset++] = this.data[pixelOffset + d2] & 0xff;
+pixelOffset += this.pixelStride;
+}
+lineOffset += this.scanlineStride;
+}
+} else if (this.numBands == 4) {
+var d1 = this.dataOffsets[1] - d0;
+var d2 = this.dataOffsets[2] - d0;
+var d3 = this.dataOffsets[3] - d0;
+for (var j = 0; j < h; j++) {
+var pixelOffset = lineOffset + d0;
+for (var i = 0; i < w; i++) {
+pixels[dstOffset++] = this.data[pixelOffset] & 0xff;
+pixels[dstOffset++] = this.data[pixelOffset + d1] & 0xff;
+pixels[dstOffset++] = this.data[pixelOffset + d2] & 0xff;
+pixels[dstOffset++] = this.data[pixelOffset + d3] & 0xff;
+pixelOffset += this.pixelStride;
+}
+lineOffset += this.scanlineStride;
+}
+} else {
+for (var j = 0; j < h; j++) {
+var pixelOffset = lineOffset;
+for (var i = 0; i < w; i++) {
+for (var k = 0; k < this.numBands; k++) {
+pixels[dstOffset++] = this.data[pixelOffset + this.dataOffsets[k]] & 0xff;
+}
+pixelOffset += this.pixelStride;
+}
+lineOffset += this.scanlineStride;
+}
+}}return pixels;
+}, "~N,~N,~N,~N,~A");
+Clazz.defineMethod (c$, "setPixels", 
+function (x, y, w, h, iArray) {
+if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var lineOffset = y * this.scanlineStride + x * this.pixelStride;
+var srcOffset = 0;
+if (this.packed) {
+lineOffset += this.dbOffsetPacked;
+for (var j = 0; j < h; j++) {
+for (var i = 0; i < w; i++) {
+var value = 0;
+for (var k = 0; k < this.numBands; k++) {
+var srcValue = iArray[srcOffset++];
+value |= ((srcValue << this.bitOffsets[k]) & this.bitMasks[k]);
+}
+this.data[lineOffset + i] = value;
+}
+lineOffset += this.scanlineStride;
+}
+} else {
+lineOffset += this.dbOffset;
+var d0 = this.dataOffsets[0];
+if (this.numBands == 1) {
+for (var j = 0; j < h; j++) {
+var pixelOffset = lineOffset + d0;
+for (var i = 0; i < w; i++) {
+this.data[pixelOffset] = iArray[srcOffset++];
+pixelOffset += this.pixelStride;
+}
+lineOffset += this.scanlineStride;
+}
+} else if (this.numBands == 2) {
+var d1 = this.dataOffsets[1] - d0;
+for (var j = 0; j < h; j++) {
+var pixelOffset = lineOffset + d0;
+for (var i = 0; i < w; i++) {
+this.data[pixelOffset] = iArray[srcOffset++];
+this.data[pixelOffset + d1] = iArray[srcOffset++];
+pixelOffset += this.pixelStride;
+}
+lineOffset += this.scanlineStride;
+}
+} else if (this.numBands == 3) {
+var d1 = this.dataOffsets[1] - d0;
+var d2 = this.dataOffsets[2] - d0;
+for (var j = 0; j < h; j++) {
+var pixelOffset = lineOffset + d0;
+for (var i = 0; i < w; i++) {
+this.data[pixelOffset] = iArray[srcOffset++];
+this.data[pixelOffset + d1] = iArray[srcOffset++];
+this.data[pixelOffset + d2] = iArray[srcOffset++];
+pixelOffset += this.pixelStride;
+}
+lineOffset += this.scanlineStride;
+}
+} else if (this.numBands == 4) {
+var d1 = this.dataOffsets[1] - d0;
+var d2 = this.dataOffsets[2] - d0;
+var d3 = this.dataOffsets[3] - d0;
+for (var j = 0; j < h; j++) {
+var pixelOffset = lineOffset + d0;
+for (var i = 0; i < w; i++) {
+this.data[pixelOffset] = iArray[srcOffset++];
+this.data[pixelOffset + d1] = iArray[srcOffset++];
+this.data[pixelOffset + d2] = iArray[srcOffset++];
+this.data[pixelOffset + d3] = iArray[srcOffset++];
+pixelOffset += this.pixelStride;
+}
+lineOffset += this.scanlineStride;
+}
+} else {
+for (var j = 0; j < h; j++) {
+var pixelOffset = lineOffset;
+for (var i = 0; i < w; i++) {
+for (var k = 0; k < this.numBands; k++) {
+this.data[pixelOffset + this.dataOffsets[k]] = iArray[srcOffset++];
+}
+pixelOffset += this.pixelStride;
+}
+lineOffset += this.scanlineStride;
+}
+}}this.markDirty ();
+}, "~N,~N,~N,~N,~A");
+Clazz.defineMethod (c$, "setRect", 
+function (dx, dy, srcRaster) {
+if (!(Clazz.instanceOf (srcRaster, jssun.awt.image.ByteInterleavedRaster))) {
+Clazz.superCall (this, jssun.awt.image.ByteInterleavedRaster, "setRect", [dx, dy, srcRaster]);
+return;
+}var width = srcRaster.getWidth ();
+var height = srcRaster.getHeight ();
+var srcOffX = srcRaster.getMinX ();
+var srcOffY = srcRaster.getMinY ();
+var dstOffX = dx + srcOffX;
+var dstOffY = dy + srcOffY;
+if (dstOffX < this.minX) {
+var skipX = this.minX - dstOffX;
+width -= skipX;
+srcOffX += skipX;
+dstOffX = this.minX;
+}if (dstOffY < this.minY) {
+var skipY = this.minY - dstOffY;
+height -= skipY;
+srcOffY += skipY;
+dstOffY = this.minY;
+}if (dstOffX + width > this.$maxX) {
+width = this.$maxX - dstOffX;
+}if (dstOffY + height > this.$maxY) {
+height = this.$maxY - dstOffY;
+}this.setDataElements (dstOffX, dstOffY, srcOffX, srcOffY, width, height, srcRaster);
+}, "~N,~N,java.awt.image.Raster");
+Clazz.overrideMethod (c$, "createChild", 
+function (x, y, width, height, x0, y0, bandList) {
+var newRaster = this.createWritableChild (x, y, width, height, x0, y0, bandList);
+return newRaster;
+}, "~N,~N,~N,~N,~N,~N,~A");
+Clazz.overrideMethod (c$, "createWritableChild", 
+function (x, y, width, height, x0, y0, bandList) {
+if (x < this.minX) {
+throw  new java.awt.image.RasterFormatException ("x lies outside the raster");
+}if (y < this.minY) {
+throw  new java.awt.image.RasterFormatException ("y lies outside the raster");
+}if ((x + width < x) || (x + width > this.minX + this.width)) {
+throw  new java.awt.image.RasterFormatException ("(x + width) is outside of Raster");
+}if ((y + height < y) || (y + height > this.minY + this.height)) {
+throw  new java.awt.image.RasterFormatException ("(y + height) is outside of Raster");
+}var sm;
+if (bandList != null) sm = this.sampleModel.createSubsetSampleModel (bandList);
+ else sm = this.sampleModel;
+var deltaX = x0 - x;
+var deltaY = y0 - y;
+return  new jssun.awt.image.ByteInterleavedRaster (sm, this.dataBuffer,  new java.awt.Rectangle (x0, y0, width, height),  new java.awt.Point (this.sampleModelTranslateX + deltaX, this.sampleModelTranslateY + deltaY), this);
+}, "~N,~N,~N,~N,~N,~N,~A");
+Clazz.defineMethod (c$, "createCompatibleWritableRaster", 
+function (w, h) {
+if (w <= 0 || h <= 0) {
+throw  new java.awt.image.RasterFormatException ("negative " + ((w <= 0) ? "width" : "height"));
+}var sm = this.sampleModel.createCompatibleSampleModel (w, h);
+return  new jssun.awt.image.ByteInterleavedRaster (sm,  new java.awt.Point (0, 0));
+}, "~N,~N");
+Clazz.defineMethod (c$, "createCompatibleWritableRaster", 
+function () {
+return this.createCompatibleWritableRaster (this.width, this.height);
+});
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return  String.instantialize ("ByteInterleavedRaster: width = " + this.width + " height = " + this.height + " #numDataElements " + this.numDataElements + " dataOff[0] = " + this.dataOffsets[0]);
+});
+});