1 Clazz.declarePackage ("java.awt.image");
2 Clazz.load (["java.awt.image.ImageConsumer"], "java.awt.image.PixelGrabber", ["java.awt.image.ColorModel", "swingjs.JSToolkit"], function () {
3 c$ = Clazz.decorateAsClass (function () {
9 this.imageModel = null;
10 this.bytePixels = null;
11 this.intPixels = null;
14 this.grabbing = false;
16 Clazz.instantialize (this, arguments);
17 }, java.awt.image, "PixelGrabber", null, java.awt.image.ImageConsumer);
18 Clazz.makeConstructor (c$,
19 function (img, x, y, w, h, pix, off, scansize) {
20 this.construct (img.getSource (), x, y, w, h, pix, off, scansize);
21 }, "java.awt.Image,~N,~N,~N,~N,~A,~N,~N");
22 Clazz.makeConstructor (c$,
23 function (ip, x, y, w, h, pix, off, scansize) {
30 this.dstScan = scansize;
32 this.imageModel = java.awt.image.ColorModel.getRGBdefault ();
33 }, "java.awt.image.ImageProducer,~N,~N,~N,~N,~A,~N,~N");
34 Clazz.makeConstructor (c$,
35 function (img, x, y, w, h, forceRGB) {
36 this.producer = img.getSource ();
42 this.imageModel = java.awt.image.ColorModel.getRGBdefault ();
43 }}, "java.awt.Image,~N,~N,~N,~N,~B");
44 Clazz.defineMethod (c$, "startGrabbing",
46 if ((this.flags & 112) != 0) {
48 }if (!this.grabbing) {
51 this.producer.startProduction (this);
53 Clazz.defineMethod (c$, "abortGrabbing",
55 this.imageComplete (4);
57 Clazz.defineMethod (c$, "grabPixels",
59 return this.grabPixels (0);
61 Clazz.defineMethod (c$, "grabPixels",
63 if ((this.flags & 112) != 0) {
64 return (this.flags & 48) != 0;
65 }var end = ms + System.currentTimeMillis ();
69 this.producer.startProduction (this);
70 }while (this.grabbing) {
75 timeout = end - System.currentTimeMillis ();
78 }}swingjs.JSToolkit.warn ("wait in PixelGrabber.grabPixels");
81 return (this.flags & 48) != 0;
83 Clazz.defineMethod (c$, "getStatus",
87 Clazz.defineMethod (c$, "getWidth",
89 return (this.dstW < 0) ? -1 : this.dstW;
91 Clazz.defineMethod (c$, "getHeight",
93 return (this.dstH < 0) ? -1 : this.dstH;
95 Clazz.defineMethod (c$, "getPixels",
97 return (this.bytePixels == null) ? (this.intPixels) : (this.bytePixels);
99 Clazz.defineMethod (c$, "getColorModel",
101 return this.imageModel;
103 Clazz.overrideMethod (c$, "setDimensions",
104 function (width, height) {
106 this.dstW = width - this.dstX;
107 }if (this.dstH < 0) {
108 this.dstH = height - this.dstY;
109 }if (this.dstW <= 0 || this.dstH <= 0) {
110 this.imageComplete (3);
111 } else if (this.intPixels == null && this.imageModel === java.awt.image.ColorModel.getRGBdefault ()) {
112 this.intPixels = Clazz.newIntArray (this.dstW * this.dstH, 0);
113 this.dstScan = this.dstW;
117 Clazz.overrideMethod (c$, "setHints",
121 Clazz.overrideMethod (c$, "setProperties",
124 }, "java.util.Hashtable");
125 Clazz.overrideMethod (c$, "setColorModel",
128 }, "java.awt.image.ColorModel");
129 Clazz.defineMethod (c$, "convertToRGB",
131 var size = this.dstW * this.dstH;
132 var newpixels = Clazz.newIntArray (size, 0);
133 if (this.bytePixels != null) {
134 for (var i = 0; i < size; i++) {
135 newpixels[i] = this.imageModel.getRGB (this.bytePixels[i] & 0xff);
137 } else if (this.intPixels != null) {
138 for (var i = 0; i < size; i++) {
139 newpixels[i] = this.imageModel.getRGB (this.intPixels[i]);
141 }this.bytePixels = null;
142 this.intPixels = newpixels;
143 this.dstScan = this.dstW;
145 this.imageModel = java.awt.image.ColorModel.getRGBdefault ();
147 Clazz.defineMethod (c$, "setPixels",
148 function (srcX, srcY, srcW, srcH, model, pixels, srcOff, srcScan) {
149 if (srcY < this.dstY) {
150 var diff = this.dstY - srcY;
153 }srcOff += srcScan * diff;
156 }if (srcY + srcH > this.dstY + this.dstH) {
157 srcH = (this.dstY + this.dstH) - srcY;
160 }}if (srcX < this.dstX) {
161 var diff = this.dstX - srcX;
167 }if (srcX + srcW > this.dstX + this.dstW) {
168 srcW = (this.dstX + this.dstW) - srcX;
171 }}var dstPtr = this.dstOff + (srcY - this.dstY) * this.dstScan + (srcX - this.dstX);
172 if (this.intPixels == null) {
173 if (this.bytePixels == null) {
174 this.bytePixels = Clazz.newByteArray (this.dstW * this.dstH, 0);
175 this.dstScan = this.dstW;
177 this.imageModel = model;
178 } else if (this.imageModel !== model) {
179 this.convertToRGB ();
180 }if (this.bytePixels != null) {
181 for (var h = srcH; h > 0; h--) {
182 System.arraycopy (pixels, srcOff, this.bytePixels, dstPtr, srcW);
184 dstPtr += this.dstScan;
186 }}if (this.intPixels != null) {
187 var dstRem = this.dstScan - srcW;
188 var srcRem = srcScan - srcW;
189 for (var h = srcH; h > 0; h--) {
190 for (var w = srcW; w > 0; w--) {
191 this.intPixels[dstPtr++] = model.getRGB (pixels[srcOff++] & 0xff);
197 }, "~N,~N,~N,~N,java.awt.image.ColorModel,~A,~N,~N");
198 Clazz.defineMethod (c$, "setPixels",
199 function (srcX, srcY, srcW, srcH, model, pixels, srcOff, srcScan) {
200 if (srcY < this.dstY) {
201 var diff = this.dstY - srcY;
204 }srcOff += srcScan * diff;
207 }if (srcY + srcH > this.dstY + this.dstH) {
208 srcH = (this.dstY + this.dstH) - srcY;
211 }}if (srcX < this.dstX) {
212 var diff = this.dstX - srcX;
218 }if (srcX + srcW > this.dstX + this.dstW) {
219 srcW = (this.dstX + this.dstW) - srcX;
222 }}if (this.intPixels == null) {
223 if (this.bytePixels == null) {
224 this.intPixels = Clazz.newIntArray (this.dstW * this.dstH, 0);
225 this.dstScan = this.dstW;
227 this.imageModel = model;
229 this.convertToRGB ();
230 }}var dstPtr = this.dstOff + (srcY - this.dstY) * this.dstScan + (srcX - this.dstX);
231 if (this.imageModel === model) {
232 for (var h = srcH; h > 0; h--) {
233 System.arraycopy (pixels, srcOff, this.intPixels, dstPtr, srcW);
235 dstPtr += this.dstScan;
238 if (this.imageModel !== java.awt.image.ColorModel.getRGBdefault ()) {
239 this.convertToRGB ();
240 }var dstRem = this.dstScan - srcW;
241 var srcRem = srcScan - srcW;
242 for (var h = srcH; h > 0; h--) {
243 for (var w = srcW; w > 0; w--) {
244 this.intPixels[dstPtr++] = model.getRGB (pixels[srcOff++]);
250 }, "~N,~N,~N,~N,java.awt.image.ColorModel,~A,~N,~N");
251 Clazz.overrideMethod (c$, "imageComplete",
253 this.grabbing = false;
269 this.producer.removeConsumer (this);
271 Clazz.defineMethod (c$, "status",
275 Clazz.defineStatics (c$,