1 Clazz.declarePackage ("swingjs");
\r
2 Clazz.load (null, "swingjs.JSImagekit", ["java.util.Arrays", "swingjs.JSImage", "swingjs.api.Interface"], function () {
\r
3 c$ = Clazz.declareType (swingjs, "JSImagekit");
\r
4 Clazz.makeConstructor (c$,
\r
7 Clazz.defineMethod (c$, "createImageFromBytes",
\r
8 function (data, imageoffset, imagelength) {
\r
18 if (imagelength < 0) imagelength = data.length;
\r
19 b = java.util.Arrays.copyOfRange (data, imageoffset, imagelength);
\r
20 if (b.length < 54) return null;
\r
21 switch (this.getSourceType (b)) {
\r
23 var ie = swingjs.api.Interface.getInstance ("javajs.img.BMPDecoder", true);
\r
24 var o = ie.decodeWindowsBMP (b);
\r
25 if (o == null || o[0] == null) return null;
\r
26 w = (o[1]).intValue ();
\r
27 h = (o[2]).intValue ();
\r
33 switch (this.getInt (b, pt)) {
\r
36 h = this.getIntRev (b, pt + 5);
\r
37 w = this.getIntRev (b, pt + 7);
\r
42 pt += 2 + this.getIntRev (b, pt + 2);
\r
47 w = this.getLong (b, 16);
\r
48 h = this.getLong (b, 20);
\r
52 w = this.getInt (b, 6);
\r
53 h = this.getInt (b, 8);
\r
57 System.out.println ("JSImagekit: Unknown image type: " + b[0] + " " + b[1] + " " + b[2] + " " + b[3]);
\r
61 }if (w == 0 || h == 0) return null;
\r
62 var jsimage = new swingjs.JSImage (argb, w, h);
\r
63 if (data != null && argb == null) jsimage.getDOMImage (b, type);
\r
66 Clazz.defineMethod (c$, "getLong",
\r
68 return ((b[pt] & 0xFF) << 24) + ((b[pt + 1] & 0xFF) << 16) + ((b[pt + 2] & 0xFF) << 8) + (b[pt + 3] & 0xFF);
\r
70 Clazz.defineMethod (c$, "getInt",
\r
72 return (b[pt] & 0xFF) + ((b[pt + 1] & 0xFF) << 8);
\r
74 Clazz.defineMethod (c$, "getIntRev",
\r
76 return ((b[pt] & 0xFF) << 8) + (b[pt + 1] & 0xFF);
\r
78 Clazz.defineMethod (c$, "getSourceType",
\r
80 return ((b[0] & 0xFF) == 0x89 && b[1] == 80 && b[2] == 78 && b[3] == 71 ? 0 : (b[0] & 0xFF) == 0xFF && (b[1] & 0xFF) == 0xD8 ? 1 : b[0] == 71 && b[1] == 73 && b[2] == 70 ? 2 : b[0] == 66 && b[1] == 77 ? 3 : -1);
\r
82 Clazz.defineStatics (c$,
\r
89 "JPG_SOF2", 0xC2FF);
\r