Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / site / swingjs / j2s / java / lang / Encoding.js
index 1a64ca3..10423e2 100644 (file)
-Encoding = new Object();\r
-Encoding.UTF8 = "utf-8";\r
-Encoding.UTF16 = "utf-16";\r
-Encoding.ASCII = "ascii";\r
-\r
-/* protected */\r
-Encoding.guessEncoding = function (str) {\r
-       if (str.charCodeAt(0) == 0xEF && str.charCodeAt(1) == 0xBB && str.charCodeAt(2) == 0xBF) {\r
-               return Encoding.UTF8;\r
-       } else if (str.charCodeAt(0) == 0xFF && str.charCodeAt(1) == 0xFE) {\r
-               return Encoding.UTF16;\r
-       } else {\r
-               return Encoding.ASCII;\r
-       }\r
-};\r
-/* public */\r
-Encoding.readUTF8 = function (str) {\r
-       var encoding = this.guessEncoding(str);\r
-       var startIdx = 0;\r
-       if (encoding == Encoding.UTF8) {\r
-               startIdx = 3;\r
-       } else if (encoding == Encoding.UTF16) {\r
-               startIdx = 2;\r
-       }\r
-       var arrs = new Array();\r
-       for (var i = startIdx; i < str.length; i++) {\r
-               var charCode = str.charCodeAt(i);\r
-               if (charCode < 0x80) {\r
-                       arrs[arrs.length] = str.charAt(i);\r
-               } else if (charCode > 0xc0 && charCode < 0xe0) {\r
-                       var c1 = charCode & 0x1f;\r
-                       i++;\r
-                       var c2 = str.charCodeAt(i) & 0x3f;\r
-                       var c = (c1 << 6) + c2;\r
-                       arrs[arrs.length] = String.fromCharCode(c);\r
-               } else if (charCode >= 0xe0) {\r
-                       var c1 = charCode & 0x0f;\r
-                       i++;\r
-                       var c2 = str.charCodeAt(i) & 0x3f;\r
-                       i++;\r
-                       var c3 = str.charCodeAt(i) & 0x3f;\r
-                       var c = (c1 << 12) + (c2 << 6) + c3;\r
-                       arrs[arrs.length] = String.fromCharCode(c);\r
-               }\r
-       }\r
-       return arrs.join ('');\r
-};\r
-/* public */\r
-Encoding.convert2UTF8 = function (str) {\r
-       var encoding = this.guessEncoding(str);\r
-       var startIdx = 0;\r
-       if (encoding == Encoding.UTF8) {\r
-               return str;\r
-       } else if (encoding == Encoding.UTF16) {\r
-               startIdx = 2;\r
-       }\r
-       \r
-       var offset = 0;\r
-       var arrs = new Array(offset + str.length - startIdx);\r
-       /*\r
-       arrs[0] = String.fromCharCode(0xEF).charAt(0);\r
-       arrs[1] = String.fromCharCode(0xBB).charAt(0);\r
-       arrs[2] = String.fromCharCode(0xBF).charAt(0);\r
-       */\r
-       for (var i = startIdx; i < str.length; i++) {\r
-               var charCode = str.charCodeAt(i);\r
-               if (charCode < 0x80) {\r
-                       arrs[offset + i - startIdx] = str.charAt(i);\r
-               } else if (charCode <= 0x07ff) { //(charCode > 0xc0 && charCode < 0xe0) {\r
-                       var c1 = 0xc0 + ((charCode & 0x07c0) >> 6);\r
-                       var c2 = 0x80 + (charCode & 0x003f);\r
-                       arrs[offset + i - startIdx] = String.fromCharCode(c1) + String.fromCharCode(c2);\r
-               } else {\r
-                       var c1 = 0xe0 + ((charCode & 0xf000) >> 12);\r
-                       var c2 = 0x80 + ((charCode & 0x0fc0) >> 6);\r
-                       var c3 = 0x80 + (charCode & 0x003f);\r
-                       arrs[offset + i - startIdx] = String.fromCharCode(c1) + String.fromCharCode(c2) + String.fromCharCode(c3);\r
-               }\r
-       }\r
-       return arrs.join ('');\r
-};\r
-Encoding.base64Chars = new Array(\r
-    'A','B','C','D','E','F','G','H',\r
-    'I','J','K','L','M','N','O','P',\r
-    'Q','R','S','T','U','V','W','X',\r
-    'Y','Z','a','b','c','d','e','f',\r
-    'g','h','i','j','k','l','m','n',\r
-    'o','p','q','r','s','t','u','v',\r
-    'w','x','y','z','0','1','2','3',\r
-    '4','5','6','7','8','9','+','/'\r
-);\r
-Encoding.encodeBase64 = function (str) {\r
-       if (str == null || str.length == 0) return str;\r
-       var b64 = Encoding.base64Chars;\r
-       var length = str.length;\r
-       var index = 0;\r
-       var buf = [];\r
-       var c0, c1, c2;\r
-       while (index < length) {\r
-               c0 = str.charCodeAt (index++);\r
-               buf[buf.length] = b64[c0 >> 2];\r
-               if (index < length) {\r
-                       c1 = str.charCodeAt (index++);\r
-            buf[buf.length] = b64[((c0 << 4 ) & 0x30) | (c1 >> 4)];\r
-            if (index < length){\r
-                               c2 = str.charCodeAt (index++);\r
-                buf[buf.length] = b64[((c1 << 2) & 0x3c) | (c2 >> 6)];\r
-                buf[buf.length] = b64[c2 & 0x3F];\r
-            } else {\r
-                buf[buf.length] = b64[((c1 << 2) & 0x3c)];\r
-                buf[buf.length] = '=';\r
-            }\r
-               } else {\r
-                       buf[buf.length] = b64[(c0 << 4) & 0x30];\r
-                       buf[buf.length] = '=';\r
-                       buf[buf.length] = '=';\r
-               }\r
-       }\r
-       return buf.join ('');\r
-};\r
-Encoding.decodeBase64 = function (str) {\r
-       if (str == null || str.length == 0) return str;\r
-       var b64 = Encoding.base64Chars;\r
-       var xb64 = Encoding.xBase64Chars;\r
-       if (Encoding.xBase64Chars == null) {\r
-               xb64 = new Object();\r
-               for (var i = 0; i < b64.length; i++){\r
-                   xb64[b64[i]] = i;\r
-               }\r
-               Encoding.xBase64Chars = xb64;\r
-       }\r
-       var length = str.length;\r
-       var index = 0;\r
-       var buf = [];\r
-       var c0, c1, c2, c3;\r
-       var c = 0;\r
-       while (index < length && c++ < 60000) {\r
-               c0 = xb64[str.charAt (index++)];\r
-               c1 = xb64[str.charAt (index++)];\r
-               c2 = xb64[str.charAt (index++)];\r
-               c3 = xb64[str.charAt (index++)];\r
-               buf[buf.length] = String.fromCharCode(((c0 << 2) & 0xff) | c1 >> 4);\r
-               if (c2 != null) {\r
-                       buf[buf.length] = String.fromCharCode(((c1 << 4) & 0xff) | c2 >> 2);\r
-                       if (c3 != null) {\r
-                               buf[buf.length] = String.fromCharCode(((c2 << 6) & 0xff) | c3);\r
-                       }\r
-               }\r
-       }\r
-       return buf.join ('');\r
-};\r
+Encoding = new Object();
+Encoding.UTF8 = "utf-8";
+Encoding.UTF16 = "utf-16";
+Encoding.ASCII = "ascii";
+
+/* protected */
+Encoding.guessEncoding = function (str) {
+       if (str.charCodeAt(0) == 0xEF && str.charCodeAt(1) == 0xBB && str.charCodeAt(2) == 0xBF) {
+               return Encoding.UTF8;
+       } else if (str.charCodeAt(0) == 0xFF && str.charCodeAt(1) == 0xFE) {
+               return Encoding.UTF16;
+       } else {
+               return Encoding.ASCII;
+       }
+};
+/* public */
+Encoding.readUTF8 = function (str) {
+       var encoding = this.guessEncoding(str);
+       var startIdx = 0;
+       if (encoding == Encoding.UTF8) {
+               startIdx = 3;
+       } else if (encoding == Encoding.UTF16) {
+               startIdx = 2;
+       }
+       var arrs = new Array();
+       for (var i = startIdx; i < str.length; i++) {
+               var charCode = str.charCodeAt(i);
+               if (charCode < 0x80) {
+                       arrs[arrs.length] = str.charAt(i);
+               } else if (charCode > 0xc0 && charCode < 0xe0) {
+                       var c1 = charCode & 0x1f;
+                       i++;
+                       var c2 = str.charCodeAt(i) & 0x3f;
+                       var c = (c1 << 6) + c2;
+                       arrs[arrs.length] = String.fromCharCode(c);
+               } else if (charCode >= 0xe0) {
+                       var c1 = charCode & 0x0f;
+                       i++;
+                       var c2 = str.charCodeAt(i) & 0x3f;
+                       i++;
+                       var c3 = str.charCodeAt(i) & 0x3f;
+                       var c = (c1 << 12) + (c2 << 6) + c3;
+                       arrs[arrs.length] = String.fromCharCode(c);
+               }
+       }
+       return arrs.join ('');
+};
+/* public */
+Encoding.convert2UTF8 = function (str) {
+       var encoding = this.guessEncoding(str);
+       var startIdx = 0;
+       if (encoding == Encoding.UTF8) {
+               return str;
+       } else if (encoding == Encoding.UTF16) {
+               startIdx = 2;
+       }
+       
+       var offset = 0;
+       var arrs = new Array(offset + str.length - startIdx);
+       /*
+       arrs[0] = String.fromCharCode(0xEF).charAt(0);
+       arrs[1] = String.fromCharCode(0xBB).charAt(0);
+       arrs[2] = String.fromCharCode(0xBF).charAt(0);
+       */
+       for (var i = startIdx; i < str.length; i++) {
+               var charCode = str.charCodeAt(i);
+               if (charCode < 0x80) {
+                       arrs[offset + i - startIdx] = str.charAt(i);
+               } else if (charCode <= 0x07ff) { //(charCode > 0xc0 && charCode < 0xe0) {
+                       var c1 = 0xc0 + ((charCode & 0x07c0) >> 6);
+                       var c2 = 0x80 + (charCode & 0x003f);
+                       arrs[offset + i - startIdx] = String.fromCharCode(c1) + String.fromCharCode(c2);
+               } else {
+                       var c1 = 0xe0 + ((charCode & 0xf000) >> 12);
+                       var c2 = 0x80 + ((charCode & 0x0fc0) >> 6);
+                       var c3 = 0x80 + (charCode & 0x003f);
+                       arrs[offset + i - startIdx] = String.fromCharCode(c1) + String.fromCharCode(c2) + String.fromCharCode(c3);
+               }
+       }
+       return arrs.join ('');
+};
+Encoding.base64Chars = new Array(
+    'A','B','C','D','E','F','G','H',
+    'I','J','K','L','M','N','O','P',
+    'Q','R','S','T','U','V','W','X',
+    'Y','Z','a','b','c','d','e','f',
+    'g','h','i','j','k','l','m','n',
+    'o','p','q','r','s','t','u','v',
+    'w','x','y','z','0','1','2','3',
+    '4','5','6','7','8','9','+','/'
+);
+Encoding.encodeBase64 = function (str) {
+       if (str == null || str.length == 0) return str;
+       var b64 = Encoding.base64Chars;
+       var length = str.length;
+       var index = 0;
+       var buf = [];
+       var c0, c1, c2;
+       while (index < length) {
+               c0 = str.charCodeAt (index++);
+               buf[buf.length] = b64[c0 >> 2];
+               if (index < length) {
+                       c1 = str.charCodeAt (index++);
+            buf[buf.length] = b64[((c0 << 4 ) & 0x30) | (c1 >> 4)];
+            if (index < length){
+                               c2 = str.charCodeAt (index++);
+                buf[buf.length] = b64[((c1 << 2) & 0x3c) | (c2 >> 6)];
+                buf[buf.length] = b64[c2 & 0x3F];
+            } else {
+                buf[buf.length] = b64[((c1 << 2) & 0x3c)];
+                buf[buf.length] = '=';
+            }
+               } else {
+                       buf[buf.length] = b64[(c0 << 4) & 0x30];
+                       buf[buf.length] = '=';
+                       buf[buf.length] = '=';
+               }
+       }
+       return buf.join ('');
+};
+Encoding.decodeBase64 = function (str) {
+       if (str == null || str.length == 0) return str;
+       var b64 = Encoding.base64Chars;
+       var xb64 = Encoding.xBase64Chars;
+       if (Encoding.xBase64Chars == null) {
+               xb64 = new Object();
+               for (var i = 0; i < b64.length; i++){
+                   xb64[b64[i]] = i;
+               }
+               Encoding.xBase64Chars = xb64;
+       }
+       var length = str.length;
+       var index = 0;
+       var buf = [];
+       var c0, c1, c2, c3;
+       var c = 0;
+       while (index < length && c++ < 60000) {
+               c0 = xb64[str.charAt (index++)];
+               c1 = xb64[str.charAt (index++)];
+               c2 = xb64[str.charAt (index++)];
+               c3 = xb64[str.charAt (index++)];
+               buf[buf.length] = String.fromCharCode(((c0 << 2) & 0xff) | c1 >> 4);
+               if (c2 != null) {
+                       buf[buf.length] = String.fromCharCode(((c1 << 4) & 0xff) | c2 >> 2);
+                       if (c3 != null) {
+                               buf[buf.length] = String.fromCharCode(((c2 << 6) & 0xff) | c3);
+                       }
+               }
+       }
+       return buf.join ('');
+};