JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / site / j2s / JU / BC.js
1 Clazz.declarePackage ("JU");\r
2 c$ = Clazz.declareType (JU, "BC");\r
3 Clazz.makeConstructor (c$, \r
4 function () {\r
5 });\r
6 c$.bytesToFloat = Clazz.defineMethod (c$, "bytesToFloat", \r
7 function (bytes, j, isBigEndian) {\r
8 return JU.BC.intToFloat (JU.BC.bytesToInt (bytes, j, isBigEndian));\r
9 }, "~A,~N,~B");\r
10 c$.bytesToInt = Clazz.defineMethod (c$, "bytesToInt", \r
11 function (bytes, j, isBigEndian) {\r
12 var n = (isBigEndian ? (bytes[j + 3] & 0xff) | (bytes[j + 2] & 0xff) << 8 | (bytes[j + 1] & 0xff) << 16 | (bytes[j] & 0xff) << 24 : (bytes[j++] & 0xff) | (bytes[j++] & 0xff) << 8 | (bytes[j++] & 0xff) << 16 | (bytes[j++] & 0xff) << 24);\r
13 {\r
14 return (n > 0x7FFFFFFF ? n - 0x100000000 : n);\r
15 }}, "~A,~N,~B");\r
16 c$.intToFloat = Clazz.defineMethod (c$, "intToFloat", \r
17 function (x) {\r
18 {\r
19 if (x == 0) return 0;\r
20 var o = JU.BC;\r
21 if (o.fracIEEE == null)\r
22 o.setFracIEEE();\r
23 var m = ((x & 0x7F800000) >> 23);\r
24 return ((x & 0x80000000) == 0 ? 1 : -1) * o.shiftIEEE((x & 0x7FFFFF) | 0x800000, m - 149);\r
25 }}, "~N");\r
26 c$.bytesToDoubleToFloat = Clazz.defineMethod (c$, "bytesToDoubleToFloat", \r
27 function (bytes, j, isBigEndian) {\r
28 {\r
29 if (JU.BC.fracIEEE == null) JU.BC.setFracIEEE ();\r
30 {\r
31 var o = JU.BC;\r
32 var b1, b2, b3, b4, b5;\r
33 if (isBigEndian) {\r
34 b1 = bytes[j] & 0xFF;\r
35 b2 = bytes[j + 1] & 0xFF;\r
36 b3 = bytes[j + 2] & 0xFF;\r
37 b4 = bytes[j + 3] & 0xFF;\r
38 b5 = bytes[j + 4] & 0xFF;\r
39 } else {\r
40 b1 = bytes[j + 7] & 0xFF;\r
41 b2 = bytes[j + 6] & 0xFF;\r
42 b3 = bytes[j + 5] & 0xFF;\r
43 b4 = bytes[j + 4] & 0xFF;\r
44 b5 = bytes[j + 3] & 0xFF;\r
45 }\r
46 var s = ((b1 & 0x80) == 0 ? 1 : -1);\r
47 var e = (((b1 & 0x7F) << 4) | (b2 >> 4)) - 1026;\r
48 b2 = (b2 & 0xF) | 0x10;\r
49 return s * (o.shiftIEEE(b2, e) + o.shiftIEEE(b3, e - 8) + o.shiftIEEE(b4, e - 16)\r
50 + o.shiftIEEE(b5, e - 24));\r
51 }}}, "~A,~N,~B");\r
52 c$.setFracIEEE = Clazz.defineMethod (c$, "setFracIEEE", \r
53  function () {\r
54 JU.BC.fracIEEE =  Clazz.newFloatArray (270, 0);\r
55 for (var i = 0; i < 270; i++) JU.BC.fracIEEE[i] = Math.pow (2, i - 141);\r
56 \r
57 });\r
58 c$.shiftIEEE = Clazz.defineMethod (c$, "shiftIEEE", \r
59 function (f, i) {\r
60 if (f == 0 || i < -140) return 0;\r
61 if (i > 128) return 3.4028235E38;\r
62 return f * JU.BC.fracIEEE[i + 140];\r
63 }, "~N,~N");\r
64 Clazz.defineStatics (c$,\r
65 "fracIEEE", null);\r