-package swingjs;\r
-\r
-import javajs.util.Base64;\r
-import swingjs.api.DOMNode;\r
-import java.awt.image.BufferedImage;\r
-import java.awt.image.ImageObserver;\r
-\r
-public class JSImage extends BufferedImage {\r
- // a BufferedImage in name only, actually;\r
- int typeRequested;\r
- int[] pix; // not used in Java, but may be used in JavaScript\r
- public DOMNode _imgNode; // used by JSGraphics2D directly\r
- private int width, height;\r
- \r
- public JSImage() {\r
- super(1,1, TYPE_INT_ARGB);\r
- \r
- }\r
-\r
- public JSImage setData(int width, int height, int[] argb) {\r
- pix = argb;\r
- this.width = width;\r
- this.height = height;\r
- getColorModel().createCompatibleWritableRaster(width, height);\r
- return this;\r
- }\r
- \r
- /**\r
- * convert [r g b a r g b a ...] into [argb argb argb ...]\r
- * \r
- * currently does not respect transparency\r
- * \r
- * @param imgData HTML5 canvas.context.imageData.data\r
- * @return array of ARGB values\r
- * \r
- */\r
- int[] toIntARGB(int[] imgData) {\r
- /*\r
- * red=imgData.data[0];\r
- * green=imgData.data[1];\r
- * blue=imgData.data[2];\r
- * alpha=imgData.data[3];\r
- */\r
- int n = imgData.length / 4;\r
- int[] iData = new int[n];\r
- for (int i = 0, j = 0; i < n; j++)\r
- iData[i++] = (imgData[j++] << 16) | (imgData[j++] << 8) | imgData[j++] | 0xFF000000;\r
- return iData;\r
- } \r
- \r
- /**\r
- * Use HTML5 to load PNG, JPG, or GIF image in order to extract its pixels\r
- * \r
- * @param b\r
- * @param type\r
- */\r
- @SuppressWarnings("unused")\r
- public void getDOMImage(byte[] b, String type) {\r
- String dataurl = "data:image/" + type + ";base64," + Base64.getBase64(b).toString();\r
- Object me = this;\r
- DOMNode img = null;\r
- /**\r
- * @j2sNative\r
- * img = new Image(this.width, this.height);\r
- * //img.onLoad = function() { me.setDOMImage(img); };\r
- * img.src = dataurl;\r
- */\r
- {}\r
- setDOMImage(img);\r
- }\r
- \r
- /**\r
- * callback from Image.src = ... ; extract the int[] data from this image;\r
- * also sets img._pbuf32 for graphing\r
- * \r
- */\r
- @SuppressWarnings("unused")\r
- public void setDOMImage(DOMNode img) {\r
- DOMNode canvas = DOMNode.createElement("canvas", "JSImage");\r
- int w = width;\r
- int h = height;\r
- _imgNode = img;\r
- /**\r
- * @j2sNative\r
- * \r
- * canvas.width = w;\r
- * canvas.height = h;\r
- * var ctx = canvas.getContext("2d");\r
- * ctx.drawImage(img, 0, 0, w, h);\r
- * var data = ctx.getImageData(0, 0, w, h).data;\r
- * img._pbuf32 = this.toIntARGB(data);\r
- * \r
- */\r
- {\r
- toIntARGB(null);\r
- }\r
- }\r
-\r
- @Override\r
- public int getHeight(ImageObserver o) {\r
- return height;\r
- }\r
-\r
- @Override\r
- public int getWidth(ImageObserver o) {\r
- return width;\r
- }\r
-\r
-}\r
+package swingjs;
+
+import javajs.util.Base64;
+import swingjs.api.DOMNode;
+import java.awt.image.BufferedImage;
+import java.awt.image.ImageObserver;
+
+public class JSImage extends BufferedImage {
+ // a BufferedImage in name only, actually;
+ int typeRequested;
+ int[] pix; // not used in Java, but may be used in JavaScript
+ public DOMNode _imgNode; // used by JSGraphics2D directly
+ private int width, height;
+
+ public JSImage() {
+ super(1,1, TYPE_INT_ARGB);
+
+ }
+
+ public JSImage setData(int width, int height, int[] argb) {
+ pix = argb;
+ this.width = width;
+ this.height = height;
+ getColorModel().createCompatibleWritableRaster(width, height);
+ return this;
+ }
+
+ /**
+ * convert [r g b a r g b a ...] into [argb argb argb ...]
+ *
+ * currently does not respect transparency
+ *
+ * @param imgData HTML5 canvas.context.imageData.data
+ * @return array of ARGB values
+ *
+ */
+ int[] toIntARGB(int[] imgData) {
+ /*
+ * red=imgData.data[0];
+ * green=imgData.data[1];
+ * blue=imgData.data[2];
+ * alpha=imgData.data[3];
+ */
+ int n = imgData.length / 4;
+ int[] iData = new int[n];
+ for (int i = 0, j = 0; i < n; j++)
+ iData[i++] = (imgData[j++] << 16) | (imgData[j++] << 8) | imgData[j++] | 0xFF000000;
+ return iData;
+ }
+
+ /**
+ * Use HTML5 to load PNG, JPG, or GIF image in order to extract its pixels
+ *
+ * @param b
+ * @param type
+ */
+ @SuppressWarnings("unused")
+ public void getDOMImage(byte[] b, String type) {
+ String dataurl = "data:image/" + type + ";base64," + Base64.getBase64(b).toString();
+ Object me = this;
+ DOMNode img = null;
+ /**
+ * @j2sNative
+ * img = new Image(this.width, this.height);
+ * //img.onLoad = function() { me.setDOMImage(img); };
+ * img.src = dataurl;
+ */
+ {}
+ setDOMImage(img);
+ }
+
+ /**
+ * callback from Image.src = ... ; extract the int[] data from this image;
+ * also sets img._pbuf32 for graphing
+ *
+ */
+ @SuppressWarnings("unused")
+ public void setDOMImage(DOMNode img) {
+ DOMNode canvas = DOMNode.createElement("canvas", "JSImage");
+ int w = width;
+ int h = height;
+ _imgNode = img;
+ /**
+ * @j2sNative
+ *
+ * canvas.width = w;
+ * canvas.height = h;
+ * var ctx = canvas.getContext("2d");
+ * ctx.drawImage(img, 0, 0, w, h);
+ * var data = ctx.getImageData(0, 0, w, h).data;
+ * img._pbuf32 = this.toIntARGB(data);
+ *
+ */
+ {
+ toIntARGB(null);
+ }
+ }
+
+ @Override
+ public int getHeight(ImageObserver o) {
+ return height;
+ }
+
+ @Override
+ public int getWidth(ImageObserver o) {
+ return width;
+ }
+
+}