Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / src / swingjs / JSImage.java
index 9144b56..1501688 100644 (file)
-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;
+       }
+
+}