JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / site / j2s / JU / CU.js
1 Clazz.declarePackage ("JU");\r
2 Clazz.load (["java.util.Hashtable"], "JU.CU", ["JU.P3", "$.PT"], function () {\r
3 c$ = Clazz.declareType (JU, "CU");\r
4 c$.toRGBHexString = Clazz.defineMethod (c$, "toRGBHexString", \r
5 function (c) {\r
6 var rgb = c.getRGB ();\r
7 if (rgb == 0) return "000000";\r
8 var r = "00" + Integer.toHexString ((rgb >> 16) & 0xFF);\r
9 r = r.substring (r.length - 2);\r
10 var g = "00" + Integer.toHexString ((rgb >> 8) & 0xFF);\r
11 g = g.substring (g.length - 2);\r
12 var b = "00" + Integer.toHexString (rgb & 0xFF);\r
13 b = b.substring (b.length - 2);\r
14 return r + g + b;\r
15 }, "javajs.api.GenericColor");\r
16 c$.toCSSString = Clazz.defineMethod (c$, "toCSSString", \r
17 function (c) {\r
18 var opacity = c.getOpacity255 ();\r
19 if (opacity == 255) return "#" + JU.CU.toRGBHexString (c);\r
20 var rgb = c.getRGB ();\r
21 return "rgba(" + ((rgb >> 16) & 0xFF) + "," + ((rgb >> 8) & 0xff) + "," + (rgb & 0xff) + "," + opacity / 255 + ")";\r
22 }, "javajs.api.GenericColor");\r
23 c$.getArgbFromString = Clazz.defineMethod (c$, "getArgbFromString", \r
24 function (strColor) {\r
25 var len = 0;\r
26 if (strColor == null || (len = strColor.length) == 0) return 0;\r
27 if (strColor.charAt (0) == '[' && strColor.charAt (len - 1) == ']') {\r
28 var check;\r
29 if (strColor.indexOf (",") >= 0) {\r
30 var tokens = JU.PT.split (strColor.substring (1, strColor.length - 1), ",");\r
31 if (tokens.length != 3) return 0;\r
32 var red = JU.PT.parseFloat (tokens[0]);\r
33 var grn = JU.PT.parseFloat (tokens[1]);\r
34 var blu = JU.PT.parseFloat (tokens[2]);\r
35 return JU.CU.colorTriadToFFRGB (red, grn, blu);\r
36 }switch (len) {\r
37 case 9:\r
38 check = "x";\r
39 break;\r
40 case 10:\r
41 check = "0x";\r
42 break;\r
43 default:\r
44 return 0;\r
45 }\r
46 if (strColor.indexOf (check) != 1) return 0;\r
47 strColor = "#" + strColor.substring (len - 7, len - 1);\r
48 len = 7;\r
49 }if (len == 7 && strColor.charAt (0) == '#') {\r
50 try {\r
51 return JU.PT.parseIntRadix (strColor.substring (1, 7), 16) | 0xFF000000;\r
52 } catch (e) {\r
53 if (Clazz.exceptionOf (e, Exception)) {\r
54 return 0;\r
55 } else {\r
56 throw e;\r
57 }\r
58 }\r
59 }var boxedArgb = JU.CU.mapJavaScriptColors.get (strColor.toLowerCase ());\r
60 return (boxedArgb == null ? 0 : boxedArgb.intValue ());\r
61 }, "~S");\r
62 c$.colorTriadToFFRGB = Clazz.defineMethod (c$, "colorTriadToFFRGB", \r
63 function (x, y, z) {\r
64 if (x <= 1 && y <= 1 && z <= 1) {\r
65 if (x > 0) x = x * 256 - 1;\r
66 if (y > 0) y = y * 256 - 1;\r
67 if (z > 0) z = z * 256 - 1;\r
68 }return JU.CU.rgb (Clazz.floatToInt (x), Clazz.floatToInt (y), Clazz.floatToInt (z));\r
69 }, "~N,~N,~N");\r
70 c$.rgb = Clazz.defineMethod (c$, "rgb", \r
71 function (red, grn, blu) {\r
72 return 0xFF000000 | (red << 16) | (grn << 8) | blu;\r
73 }, "~N,~N,~N");\r
74 c$.colorPtFromString = Clazz.defineMethod (c$, "colorPtFromString", \r
75 function (colorName) {\r
76 return JU.CU.colorPtFromInt (JU.CU.getArgbFromString (colorName), null);\r
77 }, "~S");\r
78 c$.colorPtFromInt = Clazz.defineMethod (c$, "colorPtFromInt", \r
79 function (color, pt) {\r
80 if (pt == null) pt =  new JU.P3 ();\r
81 pt.set ((color >> 16) & 0xFF, (color >> 8) & 0xFF, color & 0xFF);\r
82 return pt;\r
83 }, "~N,JU.P3");\r
84 c$.colorPtToFFRGB = Clazz.defineMethod (c$, "colorPtToFFRGB", \r
85 function (pt) {\r
86 return JU.CU.colorTriadToFFRGB (pt.x, pt.y, pt.z);\r
87 }, "JU.T3");\r
88 c$.toRGB3f = Clazz.defineMethod (c$, "toRGB3f", \r
89 function (c, f) {\r
90 f[0] = ((c >> 16) & 0xFF) / 255;\r
91 f[1] = ((c >> 8) & 0xFF) / 255;\r
92 f[2] = (c & 0xFF) / 255;\r
93 }, "~N,~A");\r
94 c$.toFFGGGfromRGB = Clazz.defineMethod (c$, "toFFGGGfromRGB", \r
95 function (rgb) {\r
96 var grey = (Clazz.doubleToInt (((2989 * ((rgb >> 16) & 0xFF)) + (5870 * ((rgb >> 8) & 0xFF)) + (1140 * (rgb & 0xFF)) + 5000) / 10000)) & 0xFFFFFF;\r
97 return JU.CU.rgb (grey, grey, grey);\r
98 }, "~N");\r
99 c$.rgbToHSL = Clazz.defineMethod (c$, "rgbToHSL", \r
100 function (rgb, doRound) {\r
101 var r = rgb.x / 255;\r
102 var g = rgb.y / 255;\r
103 var b = rgb.z / 255;\r
104 var min = Math.min (r, Math.min (g, b));\r
105 var max = Math.max (r, Math.max (g, b));\r
106 var p = (max + min);\r
107 var q = (max - min);\r
108 var h = (60 * ((q == 0 ? 0 : max == r ? ((g - b) / q + 6) : max == g ? (b - r) / q + 2 : (r - g) / q + 4))) % 360;\r
109 var s = q / (q == 0 ? 1 : p <= 1 ? p : 2 - p);\r
110 return (doRound ? JU.P3.new3 (Math.round (h * 10) / 10, Math.round (s * 1000) / 10, Math.round (p * 500) / 10) : JU.P3.new3 (h, s * 100, p * 50));\r
111 }, "JU.P3,~B");\r
112 c$.hslToRGB = Clazz.defineMethod (c$, "hslToRGB", \r
113 function (hsl) {\r
114 var h = Math.max (0, Math.min (360, hsl.x)) / 60;\r
115 var s = Math.max (0, Math.min (100, hsl.y)) / 100;\r
116 var l = Math.max (0, Math.min (100, hsl.z)) / 100;\r
117 var p = l - (l < 0.5 ? l : 1 - l) * s;\r
118 var q = 2 * (l - p);\r
119 var r = JU.CU.toRGB (p, q, h + 2);\r
120 var g = JU.CU.toRGB (p, q, h);\r
121 var b = JU.CU.toRGB (p, q, h - 2);\r
122 return JU.P3.new3 (Math.round (r * 255), Math.round (g * 255), Math.round (b * 255));\r
123 }, "JU.P3");\r
124 c$.toRGB = Clazz.defineMethod (c$, "toRGB", \r
125  function (p, q, h) {\r
126 return ((h = (h + (h < 0 ? 6 : h > 6 ? -6 : 0))) < 1 ? p + q * h : h < 3 ? p + q : h < 4 ? p + q * (4 - h) : p);\r
127 }, "~N,~N,~N");\r
128 Clazz.defineStatics (c$,\r
129 "colorNames",  Clazz.newArray (-1, ["black", "pewhite", "pecyan", "pepurple", "pegreen", "peblue", "peviolet", "pebrown", "pepink", "peyellow", "pedarkgreen", "peorange", "pelightblue", "pedarkcyan", "pedarkgray", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "green", "greenyellow", "honeydew", "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "red", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", "bluetint", "greenblue", "greentint", "grey", "pinktint", "redorange", "yellowtint"]),\r
130 "colorArgbs",  Clazz.newIntArray (-1, [0xFF000000, 0xFFffffff, 0xFF00ffff, 0xFFd020ff, 0xFF00ff00, 0xFF6060ff, 0xFFff80c0, 0xFFa42028, 0xFFffd8d8, 0xFFffff00, 0xFF00c000, 0xFFffb000, 0xFFb0b0ff, 0xFF00a0a0, 0xFF606060, 0xFFF0F8FF, 0xFFFAEBD7, 0xFF00FFFF, 0xFF7FFFD4, 0xFFF0FFFF, 0xFFF5F5DC, 0xFFFFE4C4, 0xFFFFEBCD, 0xFF0000FF, 0xFF8A2BE2, 0xFFA52A2A, 0xFFDEB887, 0xFF5F9EA0, 0xFF7FFF00, 0xFFD2691E, 0xFFFF7F50, 0xFF6495ED, 0xFFFFF8DC, 0xFFDC143C, 0xFF00FFFF, 0xFF00008B, 0xFF008B8B, 0xFFB8860B, 0xFFA9A9A9, 0xFF006400, 0xFFBDB76B, 0xFF8B008B, 0xFF556B2F, 0xFFFF8C00, 0xFF9932CC, 0xFF8B0000, 0xFFE9967A, 0xFF8FBC8F, 0xFF483D8B, 0xFF2F4F4F, 0xFF00CED1, 0xFF9400D3, 0xFFFF1493, 0xFF00BFFF, 0xFF696969, 0xFF1E90FF, 0xFFB22222, 0xFFFFFAF0, 0xFF228B22, 0xFFFF00FF, 0xFFDCDCDC, 0xFFF8F8FF, 0xFFFFD700, 0xFFDAA520, 0xFF808080, 0xFF008000, 0xFFADFF2F, 0xFFF0FFF0, 0xFFFF69B4, 0xFFCD5C5C, 0xFF4B0082, 0xFFFFFFF0, 0xFFF0E68C, 0xFFE6E6FA, 0xFFFFF0F5, 0xFF7CFC00, 0xFFFFFACD, 0xFFADD8E6, 0xFFF08080, 0xFFE0FFFF, 0xFFFAFAD2, 0xFF90EE90, 0xFFD3D3D3, 0xFFFFB6C1, 0xFFFFA07A, 0xFF20B2AA, 0xFF87CEFA, 0xFF778899, 0xFFB0C4DE, 0xFFFFFFE0, 0xFF00FF00, 0xFF32CD32, 0xFFFAF0E6, 0xFFFF00FF, 0xFF800000, 0xFF66CDAA, 0xFF0000CD, 0xFFBA55D3, 0xFF9370DB, 0xFF3CB371, 0xFF7B68EE, 0xFF00FA9A, 0xFF48D1CC, 0xFFC71585, 0xFF191970, 0xFFF5FFFA, 0xFFFFE4E1, 0xFFFFE4B5, 0xFFFFDEAD, 0xFF000080, 0xFFFDF5E6, 0xFF808000, 0xFF6B8E23, 0xFFFFA500, 0xFFFF4500, 0xFFDA70D6, 0xFFEEE8AA, 0xFF98FB98, 0xFFAFEEEE, 0xFFDB7093, 0xFFFFEFD5, 0xFFFFDAB9, 0xFFCD853F, 0xFFFFC0CB, 0xFFDDA0DD, 0xFFB0E0E6, 0xFF800080, 0xFFFF0000, 0xFFBC8F8F, 0xFF4169E1, 0xFF8B4513, 0xFFFA8072, 0xFFF4A460, 0xFF2E8B57, 0xFFFFF5EE, 0xFFA0522D, 0xFFC0C0C0, 0xFF87CEEB, 0xFF6A5ACD, 0xFF708090, 0xFFFFFAFA, 0xFF00FF7F, 0xFF4682B4, 0xFFD2B48C, 0xFF008080, 0xFFD8BFD8, 0xFFFF6347, 0xFF40E0D0, 0xFFEE82EE, 0xFFF5DEB3, 0xFFFFFFFF, 0xFFF5F5F5, 0xFFFFFF00, 0xFF9ACD32, 0xFFAFD7FF, 0xFF2E8B57, 0xFF98FFB3, 0xFF808080, 0xFFFFABBB, 0xFFFF4500, 0xFFF6F675]));\r
131 c$.mapJavaScriptColors = c$.prototype.mapJavaScriptColors =  new java.util.Hashtable ();\r
132 {\r
133 for (var i = JU.CU.colorNames.length; --i >= 0; ) JU.CU.mapJavaScriptColors.put (JU.CU.colorNames[i], Integer.$valueOf (JU.CU.colorArgbs[i]));\r
134 \r
135 }});\r