1 Clazz.declarePackage ("jssun.awt.image");
\r
2 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
3 c$ = Clazz.decorateAsClass (function () {
\r
4 this.inOrder = false;
\r
6 this.dbOffsetPacked = 0;
\r
8 this.bitMasks = null;
\r
9 this.bitOffsets = null;
\r
12 Clazz.instantialize (this, arguments);
\r
13 }, jssun.awt.image, "ByteInterleavedRaster", jssun.awt.image.ByteComponentRaster);
\r
14 Clazz.makeConstructor (c$,
\r
15 function (sampleModel, origin) {
\r
16 Clazz.superConstructor (this, jssun.awt.image.ByteInterleavedRaster, []);
\r
17 this.setByteInterRaster (sampleModel, sampleModel.createDataBuffer (), new java.awt.Rectangle (origin.x, origin.y, sampleModel.getWidth (), sampleModel.getHeight ()), origin, null);
\r
18 }, "java.awt.image.SampleModel,java.awt.Point");
\r
19 Clazz.makeConstructor (c$,
\r
20 function (sampleModel, dataBuffer, origin) {
\r
21 Clazz.superConstructor (this, jssun.awt.image.ByteInterleavedRaster, []);
\r
22 this.setParams (sampleModel, dataBuffer, origin);
\r
23 }, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Point");
\r
24 Clazz.makeConstructor (c$,
\r
26 Clazz.superConstructor (this, jssun.awt.image.ByteInterleavedRaster, []);
\r
28 Clazz.overrideMethod (c$, "setParams",
\r
29 function (sampleModel, dataBuffer, origin) {
\r
30 this.setByteInterRaster (sampleModel, dataBuffer, new java.awt.Rectangle (origin.x, origin.y, sampleModel.getWidth (), sampleModel.getHeight ()), origin, null);
\r
31 }, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Point");
\r
32 Clazz.makeConstructor (c$,
\r
33 function (sampleModel, dataBuffer, aRegion, origin, parent) {
\r
34 Clazz.superConstructor (this, jssun.awt.image.ByteInterleavedRaster, []);
\r
35 this.setByteInterRaster (sampleModel, dataBuffer, aRegion, origin, parent);
\r
36 }, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,jssun.awt.image.ByteInterleavedRaster");
\r
37 Clazz.defineMethod (c$, "setByteInterRaster",
\r
38 function (sampleModel, dataBuffer, aRegion, origin, parent) {
\r
39 this.$maxX = this.minX + this.width;
\r
40 this.$maxY = this.minY + this.height;
\r
41 if (!(Clazz.instanceOf (dataBuffer, java.awt.image.DataBufferByte))) {
\r
42 throw new java.awt.image.RasterFormatException ("ByteInterleavedRasters must have byte DataBuffers");
\r
43 }var dbb = dataBuffer;
\r
44 this.data = jssun.awt.image.SunWritableRaster.stealData (dbb, 0);
\r
45 var xOffset = aRegion.x - origin.x;
\r
46 var yOffset = aRegion.y - origin.y;
\r
47 if (Clazz.instanceOf (sampleModel, java.awt.image.SinglePixelPackedSampleModel)) {
\r
48 var sppsm = sampleModel;
\r
50 this.bitMasks = sppsm.getBitMasks ();
\r
51 this.bitOffsets = sppsm.getBitOffsets ();
\r
52 this.scanlineStride = sppsm.getScanlineStride ();
\r
53 this.pixelStride = 1;
\r
54 this.dataOffsets = Clazz.newIntArray (1, 0);
\r
55 this.dataOffsets[0] = dbb.getOffset ();
\r
56 this.dataOffsets[0] += xOffset * this.pixelStride + yOffset * this.scanlineStride;
\r
58 throw new java.awt.image.RasterFormatException ("ByteInterleavedRasters must " + "have PixelInterleavedSampleModel, SinglePixelPackedSampleModel" + " or interleaved ComponentSampleModel. Sample model is " + sampleModel);
\r
59 }this.bandOffset = this.dataOffsets[0];
\r
60 this.dbOffsetPacked = dataBuffer.getOffset () - this.sampleModelTranslateY * this.scanlineStride - this.sampleModelTranslateX * this.pixelStride;
\r
61 this.dbOffset = this.dbOffsetPacked - (xOffset * this.pixelStride + yOffset * this.scanlineStride);
\r
62 this.inOrder = false;
\r
63 if (this.numDataElements == this.pixelStride) {
\r
64 this.inOrder = true;
\r
65 for (var i = 1; i < this.numDataElements; i++) {
\r
66 if (this.dataOffsets[i] - this.dataOffsets[0] != i) {
\r
67 this.inOrder = false;
\r
71 }, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,jssun.awt.image.ByteInterleavedRaster");
\r
72 Clazz.overrideMethod (c$, "getDataOffsets",
\r
74 return this.dataOffsets.clone ();
\r
76 Clazz.overrideMethod (c$, "getDataOffset",
\r
78 return this.dataOffsets[band];
\r
80 Clazz.overrideMethod (c$, "getScanlineStride",
\r
82 return this.scanlineStride;
\r
84 Clazz.overrideMethod (c$, "getPixelStride",
\r
86 return this.pixelStride;
\r
88 Clazz.overrideMethod (c$, "getDataStorage",
\r
92 Clazz.defineMethod (c$, "getDataElements",
\r
93 function (x, y, obj) {
\r
94 if ((x < this.minX) || (y < this.minY) || (x >= this.$maxX) || (y >= this.$maxY)) {
\r
95 throw new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
\r
98 outData = Clazz.newByteArray (this.numDataElements, 0);
\r
101 }var off = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride;
\r
102 for (var band = 0; band < this.numDataElements; band++) {
\r
103 outData[band] = this.data[this.dataOffsets[band] + off];
\r
107 Clazz.defineMethod (c$, "getDataElements",
\r
108 function (x, y, w, h, obj) {
\r
109 return this.getByteData (x, y, w, h, obj);
\r
110 }, "~N,~N,~N,~N,~O");
\r
111 Clazz.defineMethod (c$, "getByteData",
\r
112 function (x, y, w, h, band, outData) {
\r
113 if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {
\r
114 throw new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
\r
115 }if (outData == null) {
\r
116 outData = Clazz.newByteArray (w * h, 0);
\r
117 }var yoff = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride + this.dataOffsets[band];
\r
122 if (this.pixelStride == 1) {
\r
123 if (this.scanlineStride == w) {
\r
124 System.arraycopy (this.data, yoff, outData, 0, w * h);
\r
126 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
\r
127 System.arraycopy (this.data, yoff, outData, off, w);
\r
131 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
\r
133 for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
\r
134 outData[off++] = this.data[xoff];
\r
138 }, "~N,~N,~N,~N,~N,~A");
\r
139 Clazz.defineMethod (c$, "getByteData",
\r
140 function (x, y, w, h, outData) {
\r
141 if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {
\r
142 throw new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
\r
143 }if (outData == null) {
\r
144 outData = Clazz.newByteArray (this.numDataElements * w * h, 0);
\r
145 }var yoff = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride;
\r
150 if (this.inOrder) {
\r
151 yoff += this.dataOffsets[0];
\r
152 var rowBytes = w * this.pixelStride;
\r
153 if (this.scanlineStride == rowBytes) {
\r
154 System.arraycopy (this.data, yoff, outData, off, rowBytes * h);
\r
156 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
\r
157 System.arraycopy (this.data, yoff, outData, off, rowBytes);
\r
160 }} else if (this.numDataElements == 1) {
\r
161 yoff += this.dataOffsets[0];
\r
162 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
\r
164 for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
\r
165 outData[off++] = this.data[xoff];
\r
168 } else if (this.numDataElements == 2) {
\r
169 yoff += this.dataOffsets[0];
\r
170 var d1 = this.dataOffsets[1] - this.dataOffsets[0];
\r
171 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
\r
173 for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
\r
174 outData[off++] = this.data[xoff];
\r
175 outData[off++] = this.data[xoff + d1];
\r
178 } else if (this.numDataElements == 3) {
\r
179 yoff += this.dataOffsets[0];
\r
180 var d1 = this.dataOffsets[1] - this.dataOffsets[0];
\r
181 var d2 = this.dataOffsets[2] - this.dataOffsets[0];
\r
182 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
\r
184 for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
\r
185 outData[off++] = this.data[xoff];
\r
186 outData[off++] = this.data[xoff + d1];
\r
187 outData[off++] = this.data[xoff + d2];
\r
190 } else if (this.numDataElements == 4) {
\r
191 yoff += this.dataOffsets[0];
\r
192 var d1 = this.dataOffsets[1] - this.dataOffsets[0];
\r
193 var d2 = this.dataOffsets[2] - this.dataOffsets[0];
\r
194 var d3 = this.dataOffsets[3] - this.dataOffsets[0];
\r
195 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
\r
197 for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
\r
198 outData[off++] = this.data[xoff];
\r
199 outData[off++] = this.data[xoff + d1];
\r
200 outData[off++] = this.data[xoff + d2];
\r
201 outData[off++] = this.data[xoff + d3];
\r
205 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
\r
207 for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
\r
208 for (var c = 0; c < this.numDataElements; c++) {
\r
209 outData[off++] = this.data[this.dataOffsets[c] + xoff];
\r
214 }, "~N,~N,~N,~N,~A");
\r
215 Clazz.defineMethod (c$, "setDataElements",
\r
216 function (x, y, obj) {
\r
217 var $private = Clazz.checkPrivateMethod (arguments);
\r
218 if ($private != null) {
\r
219 return $private.apply (this, arguments);
\r
221 if ((x < this.minX) || (y < this.minY) || (x >= this.$maxX) || (y >= this.$maxY)) {
\r
222 throw new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
\r
224 var off = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride;
\r
225 for (var i = 0; i < this.numDataElements; i++) {
\r
226 this.data[this.dataOffsets[i] + off] = inData[i];
\r
230 Clazz.defineMethod (c$, "setDataElements",
\r
231 function (x, y, inRaster) {
\r
232 var $private = Clazz.checkPrivateMethod (arguments);
\r
233 if ($private != null) {
\r
234 return $private.apply (this, arguments);
\r
236 var srcOffX = inRaster.getMinX ();
\r
237 var srcOffY = inRaster.getMinY ();
\r
238 var dstOffX = x + srcOffX;
\r
239 var dstOffY = y + srcOffY;
\r
240 var width = inRaster.getWidth ();
\r
241 var height = inRaster.getHeight ();
\r
242 if ((dstOffX < this.minX) || (dstOffY < this.minY) || (dstOffX + width > this.$maxX) || (dstOffY + height > this.$maxY)) {
\r
243 throw new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
\r
244 }this.setDataElements (dstOffX, dstOffY, srcOffX, srcOffY, width, height, inRaster);
\r
245 }, "~N,~N,java.awt.image.Raster");
\r
246 Clazz.defineMethod (c$, "setDataElements",
\r
247 function (dstX, dstY, srcX, srcY, width, height, inRaster) {
\r
248 var $private = Clazz.checkPrivateMethod (arguments);
\r
249 if ($private != null) {
\r
250 return $private.apply (this, arguments);
\r
252 if (width <= 0 || height <= 0) {
\r
254 }var srcOffX = inRaster.getMinX ();
\r
255 var srcOffY = inRaster.getMinY ();
\r
257 if (Clazz.instanceOf (inRaster, jssun.awt.image.ByteInterleavedRaster)) {
\r
258 var bct = inRaster;
\r
259 var bdata = bct.getDataStorage ();
\r
260 if (this.inOrder && bct.inOrder && this.pixelStride == bct.pixelStride) {
\r
261 var toff = bct.getDataOffset (0);
\r
262 var tss = bct.getScanlineStride ();
\r
263 var tps = bct.getPixelStride ();
\r
264 var srcOffset = toff + (srcY - srcOffY) * tss + (srcX - srcOffX) * tps;
\r
265 var dstOffset = this.dataOffsets[0] + (dstY - this.minY) * this.scanlineStride + (dstX - this.minX) * this.pixelStride;
\r
266 var nbytes = width * this.pixelStride;
\r
267 for (var tmpY = 0; tmpY < height; tmpY++) {
\r
268 System.arraycopy (bdata, srcOffset, this.data, dstOffset, nbytes);
\r
270 dstOffset += this.scanlineStride;
\r
274 }}for (var startY = 0; startY < height; startY++) {
\r
275 tdata = inRaster.getDataElements (srcOffX, srcOffY + startY, width, 1, tdata);
\r
276 this.setDataElements (dstX, dstY + startY, width, 1, tdata);
\r
278 }, "~N,~N,~N,~N,~N,~N,java.awt.image.Raster");
\r
279 Clazz.defineMethod (c$, "setDataElements",
\r
280 function (x, y, w, h, obj) {
\r
281 var $private = Clazz.checkPrivateMethod (arguments);
\r
282 if ($private != null) {
\r
283 return $private.apply (this, arguments);
\r
285 this.putByteData (x, y, w, h, obj);
\r
286 }, "~N,~N,~N,~N,~O");
\r
287 Clazz.defineMethod (c$, "putByteData",
\r
288 function (x, y, w, h, band, inData) {
\r
289 if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {
\r
290 throw new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
\r
291 }var yoff = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride + this.dataOffsets[band];
\r
296 if (this.pixelStride == 1) {
\r
297 if (this.scanlineStride == w) {
\r
298 System.arraycopy (inData, 0, this.data, yoff, w * h);
\r
300 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
\r
301 System.arraycopy (inData, off, this.data, yoff, w);
\r
305 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
\r
307 for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
\r
308 this.data[xoff] = inData[off++];
\r
311 }this.markDirty ();
\r
312 }, "~N,~N,~N,~N,~N,~A");
\r
313 Clazz.defineMethod (c$, "putByteData",
\r
314 function (x, y, w, h, inData) {
\r
315 if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {
\r
316 throw new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
\r
317 }var yoff = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride;
\r
322 if (this.inOrder) {
\r
323 yoff += this.dataOffsets[0];
\r
324 var rowBytes = w * this.pixelStride;
\r
325 if (rowBytes == this.scanlineStride) {
\r
326 System.arraycopy (inData, 0, this.data, yoff, rowBytes * h);
\r
328 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
\r
329 System.arraycopy (inData, off, this.data, yoff, rowBytes);
\r
332 }} else if (this.numDataElements == 1) {
\r
333 yoff += this.dataOffsets[0];
\r
334 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
\r
336 for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
\r
337 this.data[xoff] = inData[off++];
\r
340 } else if (this.numDataElements == 2) {
\r
341 yoff += this.dataOffsets[0];
\r
342 var d1 = this.dataOffsets[1] - this.dataOffsets[0];
\r
343 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
\r
345 for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
\r
346 this.data[xoff] = inData[off++];
\r
347 this.data[xoff + d1] = inData[off++];
\r
350 } else if (this.numDataElements == 3) {
\r
351 yoff += this.dataOffsets[0];
\r
352 var d1 = this.dataOffsets[1] - this.dataOffsets[0];
\r
353 var d2 = this.dataOffsets[2] - this.dataOffsets[0];
\r
354 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
\r
356 for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
\r
357 this.data[xoff] = inData[off++];
\r
358 this.data[xoff + d1] = inData[off++];
\r
359 this.data[xoff + d2] = inData[off++];
\r
362 } else if (this.numDataElements == 4) {
\r
363 yoff += this.dataOffsets[0];
\r
364 var d1 = this.dataOffsets[1] - this.dataOffsets[0];
\r
365 var d2 = this.dataOffsets[2] - this.dataOffsets[0];
\r
366 var d3 = this.dataOffsets[3] - this.dataOffsets[0];
\r
367 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
\r
369 for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
\r
370 this.data[xoff] = inData[off++];
\r
371 this.data[xoff + d1] = inData[off++];
\r
372 this.data[xoff + d2] = inData[off++];
\r
373 this.data[xoff + d3] = inData[off++];
\r
377 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
\r
379 for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
\r
380 for (var c = 0; c < this.numDataElements; c++) {
\r
381 this.data[this.dataOffsets[c] + xoff] = inData[off++];
\r
385 }this.markDirty ();
\r
386 }, "~N,~N,~N,~N,~A");
\r
387 Clazz.overrideMethod (c$, "getSample",
\r
388 function (x, y, b) {
\r
389 if ((x < this.minX) || (y < this.minY) || (x >= this.$maxX) || (y >= this.$maxY)) {
\r
390 throw new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
\r
391 }if (this.packed) {
\r
392 var offset = y * this.scanlineStride + x + this.dbOffsetPacked;
\r
393 var sample = this.data[offset];
\r
394 return (sample & this.bitMasks[b]) >>> this.bitOffsets[b];
\r
396 var offset = y * this.scanlineStride + x * this.pixelStride + this.dbOffset;
\r
397 return this.data[offset + this.dataOffsets[b]] & 0xff;
\r
399 Clazz.defineMethod (c$, "setSample",
\r
400 function (x, y, b, s) {
\r
401 if ((x < this.minX) || (y < this.minY) || (x >= this.$maxX) || (y >= this.$maxY)) {
\r
402 throw new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
\r
403 }if (this.packed) {
\r
404 var offset = y * this.scanlineStride + x + this.dbOffsetPacked;
\r
405 var bitMask = this.bitMasks[b];
\r
406 var value = this.data[offset];
\r
408 value |= (s << this.bitOffsets[b]) & bitMask;
\r
409 this.data[offset] = value;
\r
411 var offset = y * this.scanlineStride + x * this.pixelStride + this.dbOffset;
\r
412 this.data[offset + this.dataOffsets[b]] = s;
\r
413 }this.markDirty ();
\r
415 Clazz.defineMethod (c$, "getSamples",
\r
416 function (x, y, w, h, b, iArray) {
\r
417 if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {
\r
418 throw new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
\r
420 if (iArray != null) {
\r
423 samples = Clazz.newIntArray (w * h, 0);
\r
424 }var lineOffset = y * this.scanlineStride + x * this.pixelStride;
\r
427 lineOffset += this.dbOffsetPacked;
\r
428 var bitMask = this.bitMasks[b];
\r
429 var bitOffset = this.bitOffsets[b];
\r
430 for (var j = 0; j < h; j++) {
\r
431 var sampleOffset = lineOffset;
\r
432 for (var i = 0; i < w; i++) {
\r
433 var value = this.data[sampleOffset++];
\r
434 samples[dstOffset++] = ((value & bitMask) >>> bitOffset);
\r
436 lineOffset += this.scanlineStride;
\r
439 lineOffset += this.dbOffset + this.dataOffsets[b];
\r
440 for (var j = 0; j < h; j++) {
\r
441 var sampleOffset = lineOffset;
\r
442 for (var i = 0; i < w; i++) {
\r
443 samples[dstOffset++] = this.data[sampleOffset] & 0xff;
\r
444 sampleOffset += this.pixelStride;
\r
446 lineOffset += this.scanlineStride;
\r
449 }, "~N,~N,~N,~N,~N,~A");
\r
450 Clazz.defineMethod (c$, "setSamples",
\r
451 function (x, y, w, h, b, iArray) {
\r
452 if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {
\r
453 throw new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
\r
454 }var lineOffset = y * this.scanlineStride + x * this.pixelStride;
\r
457 lineOffset += this.dbOffsetPacked;
\r
458 var bitMask = this.bitMasks[b];
\r
459 for (var j = 0; j < h; j++) {
\r
460 var sampleOffset = lineOffset;
\r
461 for (var i = 0; i < w; i++) {
\r
462 var value = this.data[sampleOffset];
\r
464 var sample = iArray[srcOffset++];
\r
465 value |= (sample << this.bitOffsets[b]) & bitMask;
\r
466 this.data[sampleOffset++] = value;
\r
468 lineOffset += this.scanlineStride;
\r
471 lineOffset += this.dbOffset + this.dataOffsets[b];
\r
472 for (var i = 0; i < h; i++) {
\r
473 var sampleOffset = lineOffset;
\r
474 for (var j = 0; j < w; j++) {
\r
475 this.data[sampleOffset] = iArray[srcOffset++];
\r
476 sampleOffset += this.pixelStride;
\r
478 lineOffset += this.scanlineStride;
\r
480 }this.markDirty ();
\r
481 }, "~N,~N,~N,~N,~N,~A");
\r
482 Clazz.defineMethod (c$, "getPixels",
\r
483 function (x, y, w, h, iArray) {
\r
484 if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {
\r
485 throw new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
\r
487 if (iArray != null) {
\r
490 pixels = Clazz.newIntArray (w * h * this.numBands, 0);
\r
491 }var lineOffset = y * this.scanlineStride + x * this.pixelStride;
\r
494 lineOffset += this.dbOffsetPacked;
\r
495 for (var j = 0; j < h; j++) {
\r
496 for (var i = 0; i < w; i++) {
\r
497 var value = this.data[lineOffset + i];
\r
498 for (var k = 0; k < this.numBands; k++) {
\r
499 pixels[dstOffset++] = (value & this.bitMasks[k]) >>> this.bitOffsets[k];
\r
502 lineOffset += this.scanlineStride;
\r
505 lineOffset += this.dbOffset;
\r
506 var d0 = this.dataOffsets[0];
\r
507 if (this.numBands == 1) {
\r
508 for (var j = 0; j < h; j++) {
\r
509 var pixelOffset = lineOffset + d0;
\r
510 for (var i = 0; i < w; i++) {
\r
511 pixels[dstOffset++] = this.data[pixelOffset] & 0xff;
\r
512 pixelOffset += this.pixelStride;
\r
514 lineOffset += this.scanlineStride;
\r
516 } else if (this.numBands == 2) {
\r
517 var d1 = this.dataOffsets[1] - d0;
\r
518 for (var j = 0; j < h; j++) {
\r
519 var pixelOffset = lineOffset + d0;
\r
520 for (var i = 0; i < w; i++) {
\r
521 pixels[dstOffset++] = this.data[pixelOffset] & 0xff;
\r
522 pixels[dstOffset++] = this.data[pixelOffset + d1] & 0xff;
\r
523 pixelOffset += this.pixelStride;
\r
525 lineOffset += this.scanlineStride;
\r
527 } else if (this.numBands == 3) {
\r
528 var d1 = this.dataOffsets[1] - d0;
\r
529 var d2 = this.dataOffsets[2] - d0;
\r
530 for (var j = 0; j < h; j++) {
\r
531 var pixelOffset = lineOffset + d0;
\r
532 for (var i = 0; i < w; i++) {
\r
533 pixels[dstOffset++] = this.data[pixelOffset] & 0xff;
\r
534 pixels[dstOffset++] = this.data[pixelOffset + d1] & 0xff;
\r
535 pixels[dstOffset++] = this.data[pixelOffset + d2] & 0xff;
\r
536 pixelOffset += this.pixelStride;
\r
538 lineOffset += this.scanlineStride;
\r
540 } else if (this.numBands == 4) {
\r
541 var d1 = this.dataOffsets[1] - d0;
\r
542 var d2 = this.dataOffsets[2] - d0;
\r
543 var d3 = this.dataOffsets[3] - d0;
\r
544 for (var j = 0; j < h; j++) {
\r
545 var pixelOffset = lineOffset + d0;
\r
546 for (var i = 0; i < w; i++) {
\r
547 pixels[dstOffset++] = this.data[pixelOffset] & 0xff;
\r
548 pixels[dstOffset++] = this.data[pixelOffset + d1] & 0xff;
\r
549 pixels[dstOffset++] = this.data[pixelOffset + d2] & 0xff;
\r
550 pixels[dstOffset++] = this.data[pixelOffset + d3] & 0xff;
\r
551 pixelOffset += this.pixelStride;
\r
553 lineOffset += this.scanlineStride;
\r
556 for (var j = 0; j < h; j++) {
\r
557 var pixelOffset = lineOffset;
\r
558 for (var i = 0; i < w; i++) {
\r
559 for (var k = 0; k < this.numBands; k++) {
\r
560 pixels[dstOffset++] = this.data[pixelOffset + this.dataOffsets[k]] & 0xff;
\r
562 pixelOffset += this.pixelStride;
\r
564 lineOffset += this.scanlineStride;
\r
567 }, "~N,~N,~N,~N,~A");
\r
568 Clazz.defineMethod (c$, "setPixels",
\r
569 function (x, y, w, h, iArray) {
\r
570 if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {
\r
571 throw new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
\r
572 }var lineOffset = y * this.scanlineStride + x * this.pixelStride;
\r
575 lineOffset += this.dbOffsetPacked;
\r
576 for (var j = 0; j < h; j++) {
\r
577 for (var i = 0; i < w; i++) {
\r
579 for (var k = 0; k < this.numBands; k++) {
\r
580 var srcValue = iArray[srcOffset++];
\r
581 value |= ((srcValue << this.bitOffsets[k]) & this.bitMasks[k]);
\r
583 this.data[lineOffset + i] = value;
\r
585 lineOffset += this.scanlineStride;
\r
588 lineOffset += this.dbOffset;
\r
589 var d0 = this.dataOffsets[0];
\r
590 if (this.numBands == 1) {
\r
591 for (var j = 0; j < h; j++) {
\r
592 var pixelOffset = lineOffset + d0;
\r
593 for (var i = 0; i < w; i++) {
\r
594 this.data[pixelOffset] = iArray[srcOffset++];
\r
595 pixelOffset += this.pixelStride;
\r
597 lineOffset += this.scanlineStride;
\r
599 } else if (this.numBands == 2) {
\r
600 var d1 = this.dataOffsets[1] - d0;
\r
601 for (var j = 0; j < h; j++) {
\r
602 var pixelOffset = lineOffset + d0;
\r
603 for (var i = 0; i < w; i++) {
\r
604 this.data[pixelOffset] = iArray[srcOffset++];
\r
605 this.data[pixelOffset + d1] = iArray[srcOffset++];
\r
606 pixelOffset += this.pixelStride;
\r
608 lineOffset += this.scanlineStride;
\r
610 } else if (this.numBands == 3) {
\r
611 var d1 = this.dataOffsets[1] - d0;
\r
612 var d2 = this.dataOffsets[2] - d0;
\r
613 for (var j = 0; j < h; j++) {
\r
614 var pixelOffset = lineOffset + d0;
\r
615 for (var i = 0; i < w; i++) {
\r
616 this.data[pixelOffset] = iArray[srcOffset++];
\r
617 this.data[pixelOffset + d1] = iArray[srcOffset++];
\r
618 this.data[pixelOffset + d2] = iArray[srcOffset++];
\r
619 pixelOffset += this.pixelStride;
\r
621 lineOffset += this.scanlineStride;
\r
623 } else if (this.numBands == 4) {
\r
624 var d1 = this.dataOffsets[1] - d0;
\r
625 var d2 = this.dataOffsets[2] - d0;
\r
626 var d3 = this.dataOffsets[3] - d0;
\r
627 for (var j = 0; j < h; j++) {
\r
628 var pixelOffset = lineOffset + d0;
\r
629 for (var i = 0; i < w; i++) {
\r
630 this.data[pixelOffset] = iArray[srcOffset++];
\r
631 this.data[pixelOffset + d1] = iArray[srcOffset++];
\r
632 this.data[pixelOffset + d2] = iArray[srcOffset++];
\r
633 this.data[pixelOffset + d3] = iArray[srcOffset++];
\r
634 pixelOffset += this.pixelStride;
\r
636 lineOffset += this.scanlineStride;
\r
639 for (var j = 0; j < h; j++) {
\r
640 var pixelOffset = lineOffset;
\r
641 for (var i = 0; i < w; i++) {
\r
642 for (var k = 0; k < this.numBands; k++) {
\r
643 this.data[pixelOffset + this.dataOffsets[k]] = iArray[srcOffset++];
\r
645 pixelOffset += this.pixelStride;
\r
647 lineOffset += this.scanlineStride;
\r
649 }}this.markDirty ();
\r
650 }, "~N,~N,~N,~N,~A");
\r
651 Clazz.defineMethod (c$, "setRect",
\r
652 function (dx, dy, srcRaster) {
\r
653 if (!(Clazz.instanceOf (srcRaster, jssun.awt.image.ByteInterleavedRaster))) {
\r
654 Clazz.superCall (this, jssun.awt.image.ByteInterleavedRaster, "setRect", [dx, dy, srcRaster]);
\r
656 }var width = srcRaster.getWidth ();
\r
657 var height = srcRaster.getHeight ();
\r
658 var srcOffX = srcRaster.getMinX ();
\r
659 var srcOffY = srcRaster.getMinY ();
\r
660 var dstOffX = dx + srcOffX;
\r
661 var dstOffY = dy + srcOffY;
\r
662 if (dstOffX < this.minX) {
\r
663 var skipX = this.minX - dstOffX;
\r
666 dstOffX = this.minX;
\r
667 }if (dstOffY < this.minY) {
\r
668 var skipY = this.minY - dstOffY;
\r
671 dstOffY = this.minY;
\r
672 }if (dstOffX + width > this.$maxX) {
\r
673 width = this.$maxX - dstOffX;
\r
674 }if (dstOffY + height > this.$maxY) {
\r
675 height = this.$maxY - dstOffY;
\r
676 }this.setDataElements (dstOffX, dstOffY, srcOffX, srcOffY, width, height, srcRaster);
\r
677 }, "~N,~N,java.awt.image.Raster");
\r
678 Clazz.overrideMethod (c$, "createChild",
\r
679 function (x, y, width, height, x0, y0, bandList) {
\r
680 var newRaster = this.createWritableChild (x, y, width, height, x0, y0, bandList);
\r
682 }, "~N,~N,~N,~N,~N,~N,~A");
\r
683 Clazz.overrideMethod (c$, "createWritableChild",
\r
684 function (x, y, width, height, x0, y0, bandList) {
\r
685 if (x < this.minX) {
\r
686 throw new java.awt.image.RasterFormatException ("x lies outside the raster");
\r
687 }if (y < this.minY) {
\r
688 throw new java.awt.image.RasterFormatException ("y lies outside the raster");
\r
689 }if ((x + width < x) || (x + width > this.minX + this.width)) {
\r
690 throw new java.awt.image.RasterFormatException ("(x + width) is outside of Raster");
\r
691 }if ((y + height < y) || (y + height > this.minY + this.height)) {
\r
692 throw new java.awt.image.RasterFormatException ("(y + height) is outside of Raster");
\r
694 if (bandList != null) sm = this.sampleModel.createSubsetSampleModel (bandList);
\r
695 else sm = this.sampleModel;
\r
696 var deltaX = x0 - x;
\r
697 var deltaY = y0 - y;
\r
698 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
699 }, "~N,~N,~N,~N,~N,~N,~A");
\r
700 Clazz.defineMethod (c$, "createCompatibleWritableRaster",
\r
702 if (w <= 0 || h <= 0) {
\r
703 throw new java.awt.image.RasterFormatException ("negative " + ((w <= 0) ? "width" : "height"));
\r
704 }var sm = this.sampleModel.createCompatibleSampleModel (w, h);
\r
705 return new jssun.awt.image.ByteInterleavedRaster (sm, new java.awt.Point (0, 0));
\r
707 Clazz.defineMethod (c$, "createCompatibleWritableRaster",
\r
709 return this.createCompatibleWritableRaster (this.width, this.height);
\r
711 Clazz.overrideMethod (c$, "toString",
\r
713 return String.instantialize ("ByteInterleavedRaster: width = " + this.width + " height = " + this.height + " #numDataElements " + this.numDataElements + " dataOff[0] = " + this.dataOffsets[0]);
\r