JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / site / j2s / java / awt / Color.js
1 Clazz.declarePackage ("java.awt");\r
2 Clazz.load (["java.awt.Paint"], "java.awt.Color", ["java.lang.IllegalArgumentException", "java.awt.ColorPaintContext"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.value = 0;\r
5 this.frgbvalue = null;\r
6 this.falpha = 0.0;\r
7 this.context = null;\r
8 Clazz.instantialize (this, arguments);\r
9 }, java.awt, "Color", null, java.awt.Paint);\r
10 c$.testColorValueRange = Clazz.defineMethod (c$, "testColorValueRange", \r
11  function (r, g, b, a) {\r
12 var rangeError = false;\r
13 var badComponentString = "";\r
14 if (a < 0 || a > 255) {\r
15 rangeError = true;\r
16 badComponentString = badComponentString + " Alpha";\r
17 }if (r < 0 || r > 255) {\r
18 rangeError = true;\r
19 badComponentString = badComponentString + " Red";\r
20 }if (g < 0 || g > 255) {\r
21 rangeError = true;\r
22 badComponentString = badComponentString + " Green";\r
23 }if (b < 0 || b > 255) {\r
24 rangeError = true;\r
25 badComponentString = badComponentString + " Blue";\r
26 }if (rangeError == true) {\r
27 throw  new IllegalArgumentException ("Color parameter outside of expected range:" + badComponentString);\r
28 }}, "~N,~N,~N,~N");\r
29 Clazz.makeConstructor (c$, \r
30 function () {\r
31 {\r
32 var a = arguments;\r
33 switch(a.length) {\r
34 case 0:\r
35 break;\r
36 case 1:\r
37 this.value = (a[0].value ? a[0].value : 0xff000000 | a[0]);\r
38 break;\r
39 case 2:\r
40 this.value = (a[1] ? a[0] : 0xff000000 | a[0]);\r
41 break;\r
42 case 3:\r
43 this.setColor4(a[0], a[1], a[2], 255);\r
44 break;\r
45 case 4:\r
46 this.setColor4(a[0], a[1], a[2], a[3]);\r
47 break;\r
48 }\r
49 return this;\r
50 }});\r
51 Clazz.defineMethod (c$, "setColor4", \r
52  function (r, g, b, a) {\r
53 this.value = ((a & 0xFF) << 24) | ((r & 0xFF) << 16) | ((g & 0xFF) << 8) | ((b & 0xFF) << 0);\r
54 java.awt.Color.testColorValueRange (r, g, b, a);\r
55 }, "~N,~N,~N,~N");\r
56 Clazz.defineMethod (c$, "setFloat", \r
57  function (r, g, b, f) {\r
58 this.setColor4 (Clazz.doubleToInt (r * 255 + 0.5), Clazz.doubleToInt (g * 255 + 0.5), Clazz.doubleToInt (b * 255 + 0.5), Clazz.doubleToInt (f * 255 + 0.5));\r
59 this.frgbvalue =  Clazz.newFloatArray (3, 0);\r
60 this.frgbvalue[0] = r;\r
61 this.frgbvalue[1] = g;\r
62 this.frgbvalue[2] = b;\r
63 this.falpha = f;\r
64 }, "~N,~N,~N,~N");\r
65 c$.getColorF4 = Clazz.defineMethod (c$, "getColorF4", \r
66 function (r, g, b, a) {\r
67 var c =  new java.awt.Color ();\r
68 c.setFloat (r, g, b, a);\r
69 return c;\r
70 }, "~N,~N,~N,~N");\r
71 Clazz.defineMethod (c$, "getRed", \r
72 function () {\r
73 return (this.getRGB () >> 16) & 0xFF;\r
74 });\r
75 Clazz.defineMethod (c$, "getGreen", \r
76 function () {\r
77 return (this.getRGB () >> 8) & 0xFF;\r
78 });\r
79 Clazz.defineMethod (c$, "getBlue", \r
80 function () {\r
81 return (this.getRGB () >> 0) & 0xFF;\r
82 });\r
83 Clazz.defineMethod (c$, "getAlpha", \r
84 function () {\r
85 return (this.getRGB () >> 24) & 0xff;\r
86 });\r
87 Clazz.defineMethod (c$, "getRGB", \r
88 function () {\r
89 return this.value;\r
90 });\r
91 Clazz.defineMethod (c$, "brighter", \r
92 function () {\r
93 var r = this.getRed ();\r
94 var g = this.getGreen ();\r
95 var b = this.getBlue ();\r
96 var i = Clazz.doubleToInt (3.333333333333333);\r
97 if (r == 0 && g == 0 && b == 0) {\r
98 return  new java.awt.Color (i, i, i);\r
99 }if (r > 0 && r < i) r = i;\r
100 if (g > 0 && g < i) g = i;\r
101 if (b > 0 && b < i) b = i;\r
102 return  new java.awt.Color (Math.min (Clazz.doubleToInt (r / 0.7), 255), Math.min (Clazz.doubleToInt (g / 0.7), 255), Math.min (Clazz.doubleToInt (b / 0.7), 255));\r
103 });\r
104 Clazz.defineMethod (c$, "darker", \r
105 function () {\r
106 return  new java.awt.Color (Math.max (Clazz.doubleToInt (this.getRed () * 0.7), 0), Math.max (Clazz.doubleToInt (this.getGreen () * 0.7), 0), Math.max (Clazz.doubleToInt (this.getBlue () * 0.7), 0));\r
107 });\r
108 Clazz.overrideMethod (c$, "hashCode", \r
109 function () {\r
110 return this.value;\r
111 });\r
112 Clazz.overrideMethod (c$, "equals", \r
113 function (obj) {\r
114 return Clazz.instanceOf (obj, java.awt.Color) && (obj).getRGB () == this.getRGB ();\r
115 }, "~O");\r
116 Clazz.overrideMethod (c$, "toString", \r
117 function () {\r
118 return this.getClass ().getName () + "[r=" + this.getRed () + ",g=" + this.getGreen () + ",b=" + this.getBlue () + "]";\r
119 });\r
120 c$.decode = Clazz.defineMethod (c$, "decode", \r
121 function (nm) {\r
122 var intval = Integer.decode (nm);\r
123 var i = intval.intValue ();\r
124 return  new java.awt.Color ((i >> 16) & 0xFF, (i >> 8) & 0xFF, i & 0xFF);\r
125 }, "~S");\r
126 c$.getColor = Clazz.defineMethod (c$, "getColor", \r
127 function (nm) {\r
128 return java.awt.Color.getColor (nm, null);\r
129 }, "~S");\r
130 c$.getColor = Clazz.defineMethod (c$, "getColor", \r
131 function (nm, v) {\r
132 var intval = Integer.getInteger (nm);\r
133 if (intval == null) {\r
134 return v;\r
135 }var i = intval.intValue ();\r
136 return  new java.awt.Color ((i >> 16) & 0xFF, (i >> 8) & 0xFF, i & 0xFF);\r
137 }, "~S,java.awt.Color");\r
138 c$.getColor = Clazz.defineMethod (c$, "getColor", \r
139 function (nm, v) {\r
140 var intval = Integer.getInteger (nm);\r
141 var i = (intval != null) ? intval.intValue () : v;\r
142 return  new java.awt.Color ((i >> 16) & 0xFF, (i >> 8) & 0xFF, (i >> 0) & 0xFF);\r
143 }, "~S,~N");\r
144 c$.HSBtoRGB = Clazz.defineMethod (c$, "HSBtoRGB", \r
145 function (hue, saturation, brightness) {\r
146 var r = 0;\r
147 var g = 0;\r
148 var b = 0;\r
149 if (saturation == 0) {\r
150 r = g = b = Clazz.floatToInt (brightness * 255.0 + 0.5);\r
151 } else {\r
152 var h = (hue - Math.floor (hue)) * 6.0;\r
153 var f = h - java.lang.Math.floor (h);\r
154 var p = brightness * (1.0 - saturation);\r
155 var q = brightness * (1.0 - saturation * f);\r
156 var t = brightness * (1.0 - (saturation * (1.0 - f)));\r
157 switch (Clazz.floatToInt (h)) {\r
158 case 0:\r
159 r = Clazz.floatToInt (brightness * 255.0 + 0.5);\r
160 g = Clazz.floatToInt (t * 255.0 + 0.5);\r
161 b = Clazz.floatToInt (p * 255.0 + 0.5);\r
162 break;\r
163 case 1:\r
164 r = Clazz.floatToInt (q * 255.0 + 0.5);\r
165 g = Clazz.floatToInt (brightness * 255.0 + 0.5);\r
166 b = Clazz.floatToInt (p * 255.0 + 0.5);\r
167 break;\r
168 case 2:\r
169 r = Clazz.floatToInt (p * 255.0 + 0.5);\r
170 g = Clazz.floatToInt (brightness * 255.0 + 0.5);\r
171 b = Clazz.floatToInt (t * 255.0 + 0.5);\r
172 break;\r
173 case 3:\r
174 r = Clazz.floatToInt (p * 255.0 + 0.5);\r
175 g = Clazz.floatToInt (q * 255.0 + 0.5);\r
176 b = Clazz.floatToInt (brightness * 255.0 + 0.5);\r
177 break;\r
178 case 4:\r
179 r = Clazz.floatToInt (t * 255.0 + 0.5);\r
180 g = Clazz.floatToInt (p * 255.0 + 0.5);\r
181 b = Clazz.floatToInt (brightness * 255.0 + 0.5);\r
182 break;\r
183 case 5:\r
184 r = Clazz.floatToInt (brightness * 255.0 + 0.5);\r
185 g = Clazz.floatToInt (p * 255.0 + 0.5);\r
186 b = Clazz.floatToInt (q * 255.0 + 0.5);\r
187 break;\r
188 }\r
189 }return 0xff000000 | (r << 16) | (g << 8) | (b << 0);\r
190 }, "~N,~N,~N");\r
191 c$.RGBtoHSB = Clazz.defineMethod (c$, "RGBtoHSB", \r
192 function (r, g, b, hsbvals) {\r
193 var hue;\r
194 var saturation;\r
195 var brightness;\r
196 if (hsbvals == null) {\r
197 hsbvals =  Clazz.newFloatArray (3, 0);\r
198 }var cmax = (r > g) ? r : g;\r
199 if (b > cmax) cmax = b;\r
200 var cmin = (r < g) ? r : g;\r
201 if (b < cmin) cmin = b;\r
202 brightness = (cmax) / 255.0;\r
203 if (cmax != 0) saturation = ((cmax - cmin)) / (cmax);\r
204  else saturation = 0;\r
205 if (saturation == 0) hue = 0;\r
206  else {\r
207 var redc = ((cmax - r)) / ((cmax - cmin));\r
208 var greenc = ((cmax - g)) / ((cmax - cmin));\r
209 var bluec = ((cmax - b)) / ((cmax - cmin));\r
210 if (r == cmax) hue = bluec - greenc;\r
211  else if (g == cmax) hue = 2.0 + redc - bluec;\r
212  else hue = 4.0 + greenc - redc;\r
213 hue = hue / 6.0;\r
214 if (hue < 0) hue = hue + 1.0;\r
215 }hsbvals[0] = hue;\r
216 hsbvals[1] = saturation;\r
217 hsbvals[2] = brightness;\r
218 return hsbvals;\r
219 }, "~N,~N,~N,~A");\r
220 c$.getHSBColor = Clazz.defineMethod (c$, "getHSBColor", \r
221 function (h, s, b) {\r
222 return  new java.awt.Color (java.awt.Color.HSBtoRGB (h, s, b));\r
223 }, "~N,~N,~N");\r
224 Clazz.defineMethod (c$, "getRGBComponents", \r
225 function (compArray) {\r
226 var f;\r
227 if (compArray == null) {\r
228 f =  Clazz.newFloatArray (4, 0);\r
229 } else {\r
230 f = compArray;\r
231 }if (this.frgbvalue == null) {\r
232 f[0] = (this.getRed ()) / 255;\r
233 f[1] = (this.getGreen ()) / 255;\r
234 f[2] = (this.getBlue ()) / 255;\r
235 f[3] = (this.getAlpha ()) / 255;\r
236 } else {\r
237 f[0] = this.frgbvalue[0];\r
238 f[1] = this.frgbvalue[1];\r
239 f[2] = this.frgbvalue[2];\r
240 f[3] = this.falpha;\r
241 }return f;\r
242 }, "~A");\r
243 Clazz.defineMethod (c$, "getRGBColorComponents", \r
244 function (compArray) {\r
245 var f;\r
246 if (compArray == null) {\r
247 f =  Clazz.newFloatArray (3, 0);\r
248 } else {\r
249 f = compArray;\r
250 }if (this.frgbvalue == null) {\r
251 f[0] = (this.getRed ()) / 255;\r
252 f[1] = (this.getGreen ()) / 255;\r
253 f[2] = (this.getBlue ()) / 255;\r
254 } else {\r
255 f[0] = this.frgbvalue[0];\r
256 f[1] = this.frgbvalue[1];\r
257 f[2] = this.frgbvalue[2];\r
258 }return f;\r
259 }, "~A");\r
260 Clazz.overrideMethod (c$, "createContext", \r
261 function (cm, r, r2d, xform, hints) {\r
262 if (this.context == null || this.context.getRGB () != this.getRGB ()) {\r
263 this.context =  new java.awt.ColorPaintContext (this.getRGB (), cm);\r
264 }return this.context;\r
265 }, "java.awt.image.ColorModel,java.awt.Rectangle,java.awt.geom.Rectangle2D,java.awt.geom.AffineTransform,java.awt.RenderingHints");\r
266 Clazz.overrideMethod (c$, "getTransparency", \r
267 function () {\r
268 var alpha = this.getAlpha ();\r
269 if (alpha == 0xff) {\r
270 return 1;\r
271 } else if (alpha == 0) {\r
272 return 2;\r
273 } else {\r
274 return 3;\r
275 }});\r
276 c$.white = c$.prototype.white =  new java.awt.Color (255, 255, 255);\r
277 c$.WHITE = c$.prototype.WHITE = java.awt.Color.white;\r
278 c$.lightGray = c$.prototype.lightGray =  new java.awt.Color (192, 192, 192);\r
279 c$.LIGHT_GRAY = c$.prototype.LIGHT_GRAY = java.awt.Color.lightGray;\r
280 c$.gray = c$.prototype.gray =  new java.awt.Color (128, 128, 128);\r
281 c$.GRAY = c$.prototype.GRAY = java.awt.Color.gray;\r
282 c$.darkGray = c$.prototype.darkGray =  new java.awt.Color (64, 64, 64);\r
283 c$.DARK_GRAY = c$.prototype.DARK_GRAY = java.awt.Color.darkGray;\r
284 c$.black = c$.prototype.black =  new java.awt.Color (0, 0, 0);\r
285 c$.BLACK = c$.prototype.BLACK = java.awt.Color.black;\r
286 c$.red = c$.prototype.red =  new java.awt.Color (255, 0, 0);\r
287 c$.RED = c$.prototype.RED = java.awt.Color.red;\r
288 c$.pink = c$.prototype.pink =  new java.awt.Color (255, 175, 175);\r
289 c$.PINK = c$.prototype.PINK = java.awt.Color.pink;\r
290 c$.orange = c$.prototype.orange =  new java.awt.Color (255, 200, 0);\r
291 c$.ORANGE = c$.prototype.ORANGE = java.awt.Color.orange;\r
292 c$.yellow = c$.prototype.yellow =  new java.awt.Color (255, 255, 0);\r
293 c$.YELLOW = c$.prototype.YELLOW = java.awt.Color.yellow;\r
294 c$.green = c$.prototype.green =  new java.awt.Color (0, 255, 0);\r
295 c$.GREEN = c$.prototype.GREEN = java.awt.Color.green;\r
296 c$.magenta = c$.prototype.magenta =  new java.awt.Color (255, 0, 255);\r
297 c$.MAGENTA = c$.prototype.MAGENTA = java.awt.Color.magenta;\r
298 c$.cyan = c$.prototype.cyan =  new java.awt.Color (0, 255, 255);\r
299 c$.CYAN = c$.prototype.CYAN = java.awt.Color.cyan;\r
300 c$.blue = c$.prototype.blue =  new java.awt.Color (0, 0, 255);\r
301 c$.BLUE = c$.prototype.BLUE = java.awt.Color.blue;\r
302 Clazz.defineStatics (c$,\r
303 "FACTOR", 0.7);\r
304 });\r