JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / bin / javajs / util / Base64.js
1 Clazz.declarePackage ("javajs.util");\r
2 Clazz.load (null, "javajs.util.Base64", ["javajs.util.SB"], function () {\r
3 c$ = Clazz.declareType (javajs.util, "Base64");\r
4 c$.getBytes64 = Clazz.defineMethod (c$, "getBytes64", \r
5 function (bytes) {\r
6 return javajs.util.Base64.getBase64 (bytes).toBytes (0, -1);\r
7 }, "~A");\r
8 c$.getBase64 = Clazz.defineMethod (c$, "getBase64", \r
9 function (bytes) {\r
10 var nBytes = bytes.length;\r
11 var sout =  new javajs.util.SB ();\r
12 if (nBytes == 0) return sout;\r
13 for (var i = 0, nPad = 0; i < nBytes && nPad == 0; ) {\r
14 if (i % 75 == 0 && i != 0) sout.append ("\r\n");\r
15 nPad = (i + 2 == nBytes ? 1 : i + 1 == nBytes ? 2 : 0);\r
16 var outbytes = ((bytes[i++] << 16) & 0xFF0000) | ((nPad == 2 ? 0 : bytes[i++] << 8) & 0x00FF00) | ((nPad >= 1 ? 0 : bytes[i++]) & 0x0000FF);\r
17 sout.appendC (javajs.util.Base64.base64.charAt ((outbytes >> 18) & 0x3F));\r
18 sout.appendC (javajs.util.Base64.base64.charAt ((outbytes >> 12) & 0x3F));\r
19 sout.appendC (nPad == 2 ? '=' : javajs.util.Base64.base64.charAt ((outbytes >> 6) & 0x3F));\r
20 sout.appendC (nPad >= 1 ? '=' : javajs.util.Base64.base64.charAt (outbytes & 0x3F));\r
21 }\r
22 return sout;\r
23 }, "~A");\r
24 c$.decodeBase64 = Clazz.defineMethod (c$, "decodeBase64", \r
25 function (strBase64) {\r
26 var nBytes = 0;\r
27 var ch;\r
28 var pt0 = strBase64.indexOf (";base64,") + 1;\r
29 if (pt0 > 0) pt0 += 7;\r
30 var chars64 = strBase64.toCharArray ();\r
31 var len64 = chars64.length;\r
32 if (len64 == 0) return  Clazz.newByteArray (0, 0);\r
33 for (var i = len64; --i >= pt0; ) nBytes += ((ch = (chars64[i]).charCodeAt (0) & 0x7F) == 65 || javajs.util.Base64.decode64[ch] > 0 ? 3 : 0);\r
34 \r
35 nBytes = nBytes >> 2;\r
36 var bytes =  Clazz.newByteArray (nBytes, 0);\r
37 var offset = 18;\r
38 for (var i = pt0, pt = 0, b = 0; i < len64; i++) {\r
39 if (javajs.util.Base64.decode64[ch = (chars64[i]).charCodeAt (0) & 0x7F] > 0 || ch == 65 || ch == 61) {\r
40 b |= javajs.util.Base64.decode64[ch] << offset;\r
41 offset -= 6;\r
42 if (offset < 0) {\r
43 bytes[pt++] = ((b & 0xFF0000) >> 16);\r
44 if (pt < nBytes) bytes[pt++] = ((b & 0xFF00) >> 8);\r
45 if (pt < nBytes) bytes[pt++] = (b & 0xFF);\r
46 offset = 18;\r
47 b = 0;\r
48 }}}\r
49 return bytes;\r
50 }, "~S");\r
51 Clazz.defineStatics (c$,\r
52 "base64", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",\r
53 "decode64",  Clazz.newIntArray (-1, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 62, 0, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 0, 0, 63, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 0, 0, 0, 0, 0]));\r
54 });\r