JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / site / j2s / jssun / awt / image / IntegerComponentRaster.js
1 Clazz.declarePackage ("jssun.awt.image");\r
2 Clazz.load (["jssun.awt.image.SunWritableRaster"], "jssun.awt.image.IntegerComponentRaster", ["java.lang.ArrayIndexOutOfBoundsException", "java.awt.Point", "$.Rectangle", "java.awt.image.DataBufferInt", "$.RasterFormatException", "$.SinglePixelPackedSampleModel"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.bandOffset = 0;\r
5 this.dataOffsets = null;\r
6 this.scanlineStride = 0;\r
7 this.pixelStride = 0;\r
8 this.data = null;\r
9 this.numDataElems = 0;\r
10 this.type = 0;\r
11 this.maxX = 0;\r
12 this.maxY = 0;\r
13 Clazz.instantialize (this, arguments);\r
14 }, jssun.awt.image, "IntegerComponentRaster", jssun.awt.image.SunWritableRaster);\r
15 Clazz.makeConstructor (c$, \r
16 function (sampleModel, origin) {\r
17 Clazz.superConstructor (this, jssun.awt.image.IntegerComponentRaster, []);\r
18 this.setIntCompRaster (sampleModel, sampleModel.createDataBuffer (),  new java.awt.Rectangle (origin.x, origin.y, sampleModel.getWidth (), sampleModel.getHeight ()), origin, null);\r
19 }, "java.awt.image.SampleModel,java.awt.Point");\r
20 Clazz.makeConstructor (c$, \r
21 function (sampleModel, dataBuffer, origin) {\r
22 Clazz.superConstructor (this, jssun.awt.image.IntegerComponentRaster, []);\r
23 this.setIntCompRaster (sampleModel, dataBuffer,  new java.awt.Rectangle (origin.x, origin.y, sampleModel.getWidth (), sampleModel.getHeight ()), origin, null);\r
24 }, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Point");\r
25 Clazz.makeConstructor (c$, \r
26 function () {\r
27 Clazz.superConstructor (this, jssun.awt.image.IntegerComponentRaster, []);\r
28 });\r
29 Clazz.makeConstructor (c$, \r
30 function (sampleModel, dataBuffer, aRegion, origin, parent) {\r
31 Clazz.superConstructor (this, jssun.awt.image.IntegerComponentRaster, []);\r
32 this.setIntCompRaster (sampleModel, dataBuffer, aRegion, origin, parent);\r
33 }, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,java.awt.image.Raster");\r
34 Clazz.defineMethod (c$, "setIntCompRaster", \r
35 function (sampleModel, dataBuffer, aRegion, origin, parent) {\r
36 this.setSunRaster (sampleModel, dataBuffer, aRegion, origin, parent);\r
37 this.maxX = this.minX + this.width;\r
38 this.maxY = this.minY + this.height;\r
39 if (!(Clazz.instanceOf (dataBuffer, java.awt.image.DataBufferInt))) {\r
40 throw  new java.awt.image.RasterFormatException ("IntegerComponentRasters must haveinteger DataBuffers");\r
41 }var dbi = dataBuffer;\r
42 if (dbi.getNumBanks () != 1) {\r
43 throw  new java.awt.image.RasterFormatException ("DataBuffer for IntegerComponentRasters must only have 1 bank.");\r
44 }this.data = jssun.awt.image.SunWritableRaster.stealData (dbi, 0);\r
45 if (Clazz.instanceOf (sampleModel, java.awt.image.SinglePixelPackedSampleModel)) {\r
46 var sppsm = sampleModel;\r
47 var boffsets = sppsm.getBitOffsets ();\r
48 var notByteBoundary = false;\r
49 for (var i = 1; i < boffsets.length; i++) {\r
50 if ((boffsets[i] % 8) != 0) {\r
51 notByteBoundary = true;\r
52 }}\r
53 this.type = (notByteBoundary ? 9 : 10);\r
54 this.scanlineStride = sppsm.getScanlineStride ();\r
55 this.pixelStride = 1;\r
56 this.dataOffsets =  Clazz.newIntArray (1, 0);\r
57 this.dataOffsets[0] = dbi.getOffset ();\r
58 this.bandOffset = this.dataOffsets[0];\r
59 var xOffset = aRegion.x - origin.x;\r
60 var yOffset = aRegion.y - origin.y;\r
61 this.dataOffsets[0] += xOffset + yOffset * this.scanlineStride;\r
62 this.numDataElems = sppsm.getNumDataElements ();\r
63 } else {\r
64 throw  new java.awt.image.RasterFormatException ("IntegerComponentRasters must have SinglePixelPackedSampleModel");\r
65 }this.verify ();\r
66 }, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,java.awt.image.Raster");\r
67 Clazz.defineMethod (c$, "getDataOffsets", \r
68 function () {\r
69 return this.dataOffsets.clone ();\r
70 });\r
71 Clazz.defineMethod (c$, "getDataOffset", \r
72 function (band) {\r
73 return this.dataOffsets[band];\r
74 }, "~N");\r
75 Clazz.defineMethod (c$, "getScanlineStride", \r
76 function () {\r
77 return this.scanlineStride;\r
78 });\r
79 Clazz.defineMethod (c$, "getPixelStride", \r
80 function () {\r
81 return this.pixelStride;\r
82 });\r
83 Clazz.defineMethod (c$, "getDataStorage", \r
84 function () {\r
85 return this.data;\r
86 });\r
87 Clazz.defineMethod (c$, "getDataElements", \r
88 function (x, y, obj) {\r
89 if ((x < this.minX) || (y < this.minY) || (x >= this.maxX) || (y >= this.maxY)) {\r
90 throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");\r
91 }var outData;\r
92 if (obj == null) {\r
93 outData =  Clazz.newIntArray (this.numDataElements, 0);\r
94 } else {\r
95 outData = obj;\r
96 }var off = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride;\r
97 for (var band = 0; band < this.numDataElements; band++) {\r
98 outData[band] = this.data[this.dataOffsets[band] + off];\r
99 }\r
100 return outData;\r
101 }, "~N,~N,~O");\r
102 Clazz.defineMethod (c$, "getDataElements", \r
103 function (x, y, w, h, obj) {\r
104 if ((x < this.minX) || (y < this.minY) || (x + w > this.maxX) || (y + h > this.maxY)) {\r
105 throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");\r
106 }var outData;\r
107 if (Clazz.instanceOf (obj, Array)) {\r
108 outData = obj;\r
109 } else {\r
110 outData =  Clazz.newIntArray (this.numDataElements * w * h, 0);\r
111 }var yoff = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride;\r
112 var xoff;\r
113 var off = 0;\r
114 var xstart;\r
115 var ystart;\r
116 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
117 xoff = yoff;\r
118 for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {\r
119 for (var c = 0; c < this.numDataElements; c++) {\r
120 outData[off++] = this.data[this.dataOffsets[c] + xoff];\r
121 }\r
122 }\r
123 }\r
124 return outData;\r
125 }, "~N,~N,~N,~N,~O");\r
126 Clazz.defineMethod (c$, "setDataElements", \r
127 function (x, y, obj) {\r
128 if ((x < this.minX) || (y < this.minY) || (x >= this.maxX) || (y >= this.maxY)) {\r
129 throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");\r
130 }var inData = obj;\r
131 var off = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride;\r
132 for (var i = 0; i < this.numDataElements; i++) {\r
133 this.data[this.dataOffsets[i] + off] = inData[i];\r
134 }\r
135 this.markDirty ();\r
136 }, "~N,~N,~O");\r
137 Clazz.overrideMethod (c$, "setDataElementsRaster", \r
138 function (x, y, inRaster) {\r
139 var dstOffX = x + inRaster.getMinX ();\r
140 var dstOffY = y + inRaster.getMinY ();\r
141 var width = inRaster.getWidth ();\r
142 var height = inRaster.getHeight ();\r
143 if ((dstOffX < this.minX) || (dstOffY < this.minY) || (dstOffX + width > this.maxX) || (dstOffY + height > this.maxY)) {\r
144 throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");\r
145 }this.setDataElementsRaster4 (dstOffX, dstOffY, width, height, inRaster);\r
146 }, "~N,~N,java.awt.image.Raster");\r
147 Clazz.defineMethod (c$, "setDataElementsRaster4", \r
148  function (dstX, dstY, width, height, inRaster) {\r
149 if (width <= 0 || height <= 0) {\r
150 return;\r
151 }var srcOffX = inRaster.getMinX ();\r
152 var srcOffY = inRaster.getMinY ();\r
153 var tdata = null;\r
154 if (Clazz.instanceOf (inRaster, jssun.awt.image.IntegerComponentRaster) && (this.pixelStride == 1) && (this.numDataElements == 1)) {\r
155 var ict = inRaster;\r
156 if (ict.getNumDataElements () != 1) {\r
157 throw  new ArrayIndexOutOfBoundsException ("Number of bands does not match");\r
158 }tdata = ict.getDataStorage ();\r
159 var tss = ict.getScanlineStride ();\r
160 var toff = ict.getDataOffset (0);\r
161 var srcOffset = toff;\r
162 var dstOffset = this.dataOffsets[0] + (dstY - this.minY) * this.scanlineStride + (dstX - this.minX);\r
163 if (ict.getPixelStride () == this.pixelStride) {\r
164 width *= this.pixelStride;\r
165 for (var startY = 0; startY < height; startY++) {\r
166 System.arraycopy (tdata, srcOffset, this.data, dstOffset, width);\r
167 srcOffset += tss;\r
168 dstOffset += this.scanlineStride;\r
169 }\r
170 this.markDirty ();\r
171 return;\r
172 }}var odata = null;\r
173 for (var startY = 0; startY < height; startY++) {\r
174 odata = inRaster.getDataElements (srcOffX, srcOffY + startY, width, 1, odata);\r
175 this.setDataElements (dstX, dstY + startY, width, 1, odata);\r
176 }\r
177 }, "~N,~N,~N,~N,java.awt.image.Raster");\r
178 Clazz.defineMethod (c$, "setDataElements", \r
179 function (x, y, w, h, obj) {\r
180 if ((x < this.minX) || (y < this.minY) || (x + w > this.maxX) || (y + h > this.maxY)) {\r
181 throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");\r
182 }var inData = obj;\r
183 var yoff = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride;\r
184 var xoff;\r
185 var off = 0;\r
186 var xstart;\r
187 var ystart;\r
188 for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {\r
189 xoff = yoff;\r
190 for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {\r
191 for (var c = 0; c < this.numDataElements; c++) {\r
192 this.data[this.dataOffsets[c] + xoff] = inData[off++];\r
193 }\r
194 }\r
195 }\r
196 this.markDirty ();\r
197 }, "~N,~N,~N,~N,~O");\r
198 Clazz.overrideMethod (c$, "createWritableChild", \r
199 function (x, y, width, height, x0, y0, bandList) {\r
200 if (x < this.minX) {\r
201 throw  new java.awt.image.RasterFormatException ("x lies outside raster");\r
202 }if (y < this.minY) {\r
203 throw  new java.awt.image.RasterFormatException ("y lies outside raster");\r
204 }if ((x + width < x) || (x + width > this.minX + this.width)) {\r
205 throw  new java.awt.image.RasterFormatException ("(x + width) is outside raster");\r
206 }if ((y + height < y) || (y + height > this.minY + this.height)) {\r
207 throw  new java.awt.image.RasterFormatException ("(y + height) is outside raster");\r
208 }var sm;\r
209 if (bandList != null) sm = this.sampleModel.createSubsetSampleModel (bandList);\r
210  else sm = this.sampleModel;\r
211 var deltaX = x0 - x;\r
212 var deltaY = y0 - y;\r
213 return  new jssun.awt.image.IntegerComponentRaster (sm, this.dataBuffer,  new java.awt.Rectangle (x0, y0, width, height),  new java.awt.Point (this.sampleModelTranslateX + deltaX, this.sampleModelTranslateY + deltaY), this);\r
214 }, "~N,~N,~N,~N,~N,~N,~A");\r
215 Clazz.overrideMethod (c$, "createChild", \r
216 function (x, y, width, height, x0, y0, bandList) {\r
217 return this.createWritableChild (x, y, width, height, x0, y0, bandList);\r
218 }, "~N,~N,~N,~N,~N,~N,~A");\r
219 Clazz.defineMethod (c$, "createCompatibleWritableRaster", \r
220 function (w, h) {\r
221 if (w <= 0 || h <= 0) {\r
222 throw  new java.awt.image.RasterFormatException ("negative " + ((w <= 0) ? "width" : "height"));\r
223 }var sm = this.sampleModel.createCompatibleSampleModel (w, h);\r
224 return  new jssun.awt.image.IntegerComponentRaster (sm,  new java.awt.Point (0, 0));\r
225 }, "~N,~N");\r
226 Clazz.defineMethod (c$, "createCompatibleWritableRaster", \r
227 function () {\r
228 return this.createCompatibleWritableRaster (this.width, this.height);\r
229 });\r
230 Clazz.defineMethod (c$, "verify", \r
231 function () {\r
232 if (this.width <= 0 || this.height <= 0 || this.height > (Clazz.doubleToInt (2147483647 / this.width))) {\r
233 throw  new java.awt.image.RasterFormatException ("Invalid raster dimension");\r
234 }if (this.dataOffsets[0] < 0) {\r
235 throw  new java.awt.image.RasterFormatException ("Data offset (" + this.dataOffsets[0] + ") must be >= 0");\r
236 }if (this.minX - this.sampleModelTranslateX < 0 || this.minY - this.sampleModelTranslateY < 0) {\r
237 throw  new java.awt.image.RasterFormatException ("Incorrect origin/translate: (" + this.minX + ", " + this.minY + ") / (" + this.sampleModelTranslateX + ", " + this.sampleModelTranslateY + ")");\r
238 }if (this.scanlineStride < 0 || this.scanlineStride > (Clazz.doubleToInt (2147483647 / this.height))) {\r
239 throw  new java.awt.image.RasterFormatException ("Incorrect scanline stride: " + this.scanlineStride);\r
240 }if (this.height > 1 || this.minY - this.sampleModelTranslateY > 0) {\r
241 if (this.scanlineStride > this.data.length) {\r
242 throw  new java.awt.image.RasterFormatException ("Incorrect scanline stride: " + this.scanlineStride);\r
243 }}var lastScanOffset = (this.height - 1) * this.scanlineStride;\r
244 if (this.pixelStride < 0 || this.pixelStride > (Clazz.doubleToInt (2147483647 / this.width)) || this.pixelStride > this.data.length) {\r
245 throw  new java.awt.image.RasterFormatException ("Incorrect pixel stride: " + this.pixelStride);\r
246 }var lastPixelOffset = (this.width - 1) * this.pixelStride;\r
247 if (lastPixelOffset > (2147483647 - lastScanOffset)) {\r
248 throw  new java.awt.image.RasterFormatException ("Incorrect raster attributes");\r
249 }lastPixelOffset += lastScanOffset;\r
250 var index;\r
251 var maxIndex = 0;\r
252 for (var i = 0; i < this.numDataElements; i++) {\r
253 if (this.dataOffsets[i] > (2147483647 - lastPixelOffset)) {\r
254 throw  new java.awt.image.RasterFormatException ("Incorrect band offset: " + this.dataOffsets[i]);\r
255 }index = lastPixelOffset + this.dataOffsets[i];\r
256 if (index > maxIndex) {\r
257 maxIndex = index;\r
258 }}\r
259 if (this.data.length <= maxIndex) {\r
260 throw  new java.awt.image.RasterFormatException ("Data array too small (should be > " + maxIndex + " )");\r
261 }});\r
262 Clazz.overrideMethod (c$, "toString", \r
263 function () {\r
264 return  String.instantialize ("IntegerComponentRaster: width = " + this.width + " height = " + this.height + " #Bands = " + this.numBands + " #DataElements " + this.numDataElements + " xOff = " + this.sampleModelTranslateX + " yOff = " + this.sampleModelTranslateY + " dataOffset[0] " + this.dataOffsets[0]);\r
265 });\r
266 Clazz.defineStatics (c$,\r
267 "TYPE_CUSTOM", 0,\r
268 "TYPE_BYTE_SAMPLES", 1,\r
269 "TYPE_USHORT_SAMPLES", 2,\r
270 "TYPE_INT_SAMPLES", 3,\r
271 "TYPE_BYTE_BANDED_SAMPLES", 4,\r
272 "TYPE_USHORT_BANDED_SAMPLES", 5,\r
273 "TYPE_INT_BANDED_SAMPLES", 6,\r
274 "TYPE_BYTE_PACKED_SAMPLES", 7,\r
275 "TYPE_USHORT_PACKED_SAMPLES", 8,\r
276 "TYPE_INT_PACKED_SAMPLES", 9,\r
277 "TYPE_INT_8BIT_SAMPLES", 10,\r
278 "TYPE_BYTE_BINARY_SAMPLES", 11);\r
279 });\r