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