JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / site / j2s / jssun / awt / image / ByteInterleavedRaster.js
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
5 this.dbOffset = 0;\r
6 this.dbOffsetPacked = 0;\r
7 this.packed = false;\r
8 this.bitMasks = null;\r
9 this.bitOffsets = null;\r
10 this.$maxX = 0;\r
11 this.$maxY = 0;\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
25 function () {\r
26 Clazz.superConstructor (this, jssun.awt.image.ByteInterleavedRaster, []);\r
27 });\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
49 this.packed = true;\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
57 } else {\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
68 break;\r
69 }}\r
70 }this.verify ();\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
73 function () {\r
74 return this.dataOffsets.clone ();\r
75 });\r
76 Clazz.overrideMethod (c$, "getDataOffset", \r
77 function (band) {\r
78 return this.dataOffsets[band];\r
79 }, "~N");\r
80 Clazz.overrideMethod (c$, "getScanlineStride", \r
81 function () {\r
82 return this.scanlineStride;\r
83 });\r
84 Clazz.overrideMethod (c$, "getPixelStride", \r
85 function () {\r
86 return this.pixelStride;\r
87 });\r
88 Clazz.overrideMethod (c$, "getDataStorage", \r
89 function () {\r
90 return this.data;\r
91 });\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
96 }var outData;\r
97 if (obj == null) {\r
98 outData =  Clazz.newByteArray (this.numDataElements, 0);\r
99 } else {\r
100 outData = obj;\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
104 }\r
105 return outData;\r
106 }, "~N,~N,~O");\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
118 var xoff;\r
119 var off = 0;\r
120 var xstart;\r
121 var ystart;\r
122 if (this.pixelStride == 1) {\r
123 if (this.scanlineStride == w) {\r
124 System.arraycopy (this.data, yoff, outData, 0, w * h);\r
125 } else {\r
126 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
127 System.arraycopy (this.data, yoff, outData, off, w);\r
128 off += w;\r
129 }\r
130 }} else {\r
131 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
132 xoff = yoff;\r
133 for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {\r
134 outData[off++] = this.data[xoff];\r
135 }\r
136 }\r
137 }return outData;\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
146 var xoff;\r
147 var off = 0;\r
148 var xstart;\r
149 var ystart;\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
155 } else {\r
156 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
157 System.arraycopy (this.data, yoff, outData, off, rowBytes);\r
158 off += rowBytes;\r
159 }\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
163 xoff = yoff;\r
164 for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {\r
165 outData[off++] = this.data[xoff];\r
166 }\r
167 }\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
172 xoff = yoff;\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
176 }\r
177 }\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
183 xoff = yoff;\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
188 }\r
189 }\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
196 xoff = yoff;\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
202 }\r
203 }\r
204 } else {\r
205 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
206 xoff = yoff;\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
210 }\r
211 }\r
212 }\r
213 }return outData;\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
220 }\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
223 }var inData = obj;\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
227 }\r
228 this.markDirty ();\r
229 }, "~N,~N,~O");\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
235 }\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
251 }\r
252 if (width <= 0 || height <= 0) {\r
253 return;\r
254 }var srcOffX = inRaster.getMinX ();\r
255 var srcOffY = inRaster.getMinY ();\r
256 var tdata = null;\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
269 srcOffset += tss;\r
270 dstOffset += this.scanlineStride;\r
271 }\r
272 this.markDirty ();\r
273 return;\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
277 }\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
284 }\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
292 var xoff;\r
293 var off = 0;\r
294 var xstart;\r
295 var ystart;\r
296 if (this.pixelStride == 1) {\r
297 if (this.scanlineStride == w) {\r
298 System.arraycopy (inData, 0, this.data, yoff, w * h);\r
299 } else {\r
300 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
301 System.arraycopy (inData, off, this.data, yoff, w);\r
302 off += w;\r
303 }\r
304 }} else {\r
305 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
306 xoff = yoff;\r
307 for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {\r
308 this.data[xoff] = inData[off++];\r
309 }\r
310 }\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
318 var xoff;\r
319 var off = 0;\r
320 var xstart;\r
321 var ystart;\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
327 } else {\r
328 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
329 System.arraycopy (inData, off, this.data, yoff, rowBytes);\r
330 off += rowBytes;\r
331 }\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
335 xoff = yoff;\r
336 for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {\r
337 this.data[xoff] = inData[off++];\r
338 }\r
339 }\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
344 xoff = yoff;\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
348 }\r
349 }\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
355 xoff = yoff;\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
360 }\r
361 }\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
368 xoff = yoff;\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
374 }\r
375 }\r
376 } else {\r
377 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
378 xoff = yoff;\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
382 }\r
383 }\r
384 }\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
395 } else {\r
396 var offset = y * this.scanlineStride + x * this.pixelStride + this.dbOffset;\r
397 return this.data[offset + this.dataOffsets[b]] & 0xff;\r
398 }}, "~N,~N,~N");\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
407 value &= ~bitMask;\r
408 value |= (s << this.bitOffsets[b]) & bitMask;\r
409 this.data[offset] = value;\r
410 } else {\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
414 }, "~N,~N,~N,~N");\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
419 }var samples;\r
420 if (iArray != null) {\r
421 samples = iArray;\r
422 } else {\r
423 samples =  Clazz.newIntArray (w * h, 0);\r
424 }var lineOffset = y * this.scanlineStride + x * this.pixelStride;\r
425 var dstOffset = 0;\r
426 if (this.packed) {\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
435 }\r
436 lineOffset += this.scanlineStride;\r
437 }\r
438 } else {\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
445 }\r
446 lineOffset += this.scanlineStride;\r
447 }\r
448 }return samples;\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
455 var srcOffset = 0;\r
456 if (this.packed) {\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
463 value &= ~bitMask;\r
464 var sample = iArray[srcOffset++];\r
465 value |= (sample << this.bitOffsets[b]) & bitMask;\r
466 this.data[sampleOffset++] = value;\r
467 }\r
468 lineOffset += this.scanlineStride;\r
469 }\r
470 } else {\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
477 }\r
478 lineOffset += this.scanlineStride;\r
479 }\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
486 }var pixels;\r
487 if (iArray != null) {\r
488 pixels = iArray;\r
489 } else {\r
490 pixels =  Clazz.newIntArray (w * h * this.numBands, 0);\r
491 }var lineOffset = y * this.scanlineStride + x * this.pixelStride;\r
492 var dstOffset = 0;\r
493 if (this.packed) {\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
500 }\r
501 }\r
502 lineOffset += this.scanlineStride;\r
503 }\r
504 } else {\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
513 }\r
514 lineOffset += this.scanlineStride;\r
515 }\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
524 }\r
525 lineOffset += this.scanlineStride;\r
526 }\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
537 }\r
538 lineOffset += this.scanlineStride;\r
539 }\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
552 }\r
553 lineOffset += this.scanlineStride;\r
554 }\r
555 } else {\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
561 }\r
562 pixelOffset += this.pixelStride;\r
563 }\r
564 lineOffset += this.scanlineStride;\r
565 }\r
566 }}return pixels;\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
573 var srcOffset = 0;\r
574 if (this.packed) {\r
575 lineOffset += this.dbOffsetPacked;\r
576 for (var j = 0; j < h; j++) {\r
577 for (var i = 0; i < w; i++) {\r
578 var value = 0;\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
582 }\r
583 this.data[lineOffset + i] = value;\r
584 }\r
585 lineOffset += this.scanlineStride;\r
586 }\r
587 } else {\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
596 }\r
597 lineOffset += this.scanlineStride;\r
598 }\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
607 }\r
608 lineOffset += this.scanlineStride;\r
609 }\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
620 }\r
621 lineOffset += this.scanlineStride;\r
622 }\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
635 }\r
636 lineOffset += this.scanlineStride;\r
637 }\r
638 } else {\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
644 }\r
645 pixelOffset += this.pixelStride;\r
646 }\r
647 lineOffset += this.scanlineStride;\r
648 }\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
655 return;\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
664 width -= skipX;\r
665 srcOffX += skipX;\r
666 dstOffX = this.minX;\r
667 }if (dstOffY < this.minY) {\r
668 var skipY = this.minY - dstOffY;\r
669 height -= skipY;\r
670 srcOffY += skipY;\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
681 return newRaster;\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
693 }var sm;\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
701 function (w, h) {\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
706 }, "~N,~N");\r
707 Clazz.defineMethod (c$, "createCompatibleWritableRaster", \r
708 function () {\r
709 return this.createCompatibleWritableRaster (this.width, this.height);\r
710 });\r
711 Clazz.overrideMethod (c$, "toString", \r
712 function () {\r
713 return  String.instantialize ("ByteInterleavedRaster: width = " + this.width + " height = " + this.height + " #numDataElements " + this.numDataElements + " dataOff[0] = " + this.dataOffsets[0]);\r
714 });\r
715 });\r