JAL-1807 Bob
[jalviewjs.git] / site / j2s / swingjs / JSImage.js
1 Clazz.declarePackage ("swingjs");
2 Clazz.load (["java.awt.image.BufferedImage"], "swingjs.JSImage", ["JU.Base64", "swingjs.api.DOMNode"], function () {
3 c$ = Clazz.decorateAsClass (function () {
4 this.typeRequested = 0;
5 this.pix = null;
6 this._imgNode = null;
7 this.width = 0;
8 this.height = 0;
9 Clazz.instantialize (this, arguments);
10 }, swingjs, "JSImage", java.awt.image.BufferedImage);
11 Clazz.makeConstructor (c$, 
12 function (argb, width, height) {
13 Clazz.superConstructor (this, swingjs.JSImage, [width, height, 2]);
14 this.width = width;
15 this.height = height;
16 this.pix = argb;
17 }, "~A,~N,~N");
18 Clazz.defineMethod (c$, "toIntARGB", 
19 function (imgData) {
20 var n = Clazz.doubleToInt (imgData.length / 4);
21 var iData =  Clazz.newIntArray (n, 0);
22 for (var i = 0, j = 0; i < n; j++) iData[i++] = (imgData[j++] << 16) | (imgData[j++] << 8) | imgData[j++] | 0xFF000000;
23
24 return iData;
25 }, "~A");
26 Clazz.defineMethod (c$, "getDOMImage", 
27 function (b, type) {
28 var dataurl = "data:image/" + type + ";base64," + JU.Base64.getBase64 (b).toString ();
29 var me = this;
30 var img = null;
31 {
32 img = new Image(this.width, this.height);
33 //img.onLoad = function() { me.setDOMImage(img); };
34 img.src = dataurl;
35 }this.setDOMImage (img);
36 }, "~A,~S");
37 Clazz.defineMethod (c$, "setDOMImage", 
38 function (img) {
39 var canvas = swingjs.api.DOMNode.createElement ("canvas", "JSImage");
40 var w = this.width;
41 var h = this.height;
42 this._imgNode = img;
43 {
44 canvas.width = w;
45 canvas.height = h;
46 var ctx = canvas.getContext("2d");
47 ctx.drawImage(img, 0, 0, w, h);
48 var data = ctx.getImageData(0, 0, w, h).data;
49 img._pbuf32 = this.toIntARGB(data);
50 }}, "swingjs.api.DOMNode");
51 Clazz.defineMethod (c$, "getHeight", 
52 function (o) {
53 return this.height;
54 }, "java.awt.image.ImageObserver");
55 Clazz.defineMethod (c$, "getWidth", 
56 function (o) {
57 return this.width;
58 }, "java.awt.image.ImageObserver");
59 });