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 () {
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) {
16 badComponentString = badComponentString + " Alpha";
17 }if (r < 0 || r > 255) {
19 badComponentString = badComponentString + " Red";
20 }if (g < 0 || g > 255) {
22 badComponentString = badComponentString + " Green";
23 }if (b < 0 || b > 255) {
25 badComponentString = badComponentString + " Blue";
26 }if (rangeError == true) {
27 throw new IllegalArgumentException ("Color parameter outside of expected range:" + badComponentString);
29 Clazz.makeConstructor (c$,
37 this.value = (a[0].value ? a[0].value : 0xff000000 | a[0]);
40 this.value = (a[1] ? a[0] : 0xff000000 | a[0]);
43 this.setColor4(a[0], a[1], a[2], 255);
46 this.setColor4(a[0], a[1], a[2], a[3]);
51 Clazz.defineMethod (c$, "setColor4",
52 function (r, g, b, a) {
53 this.value = ((a & 0xFF) << 24) | ((r & 0xFF) << 16) | ((g & 0xFF) << 8) | ((b & 0xFF) << 0);
54 java.awt.Color.testColorValueRange (r, g, b, a);
56 Clazz.defineMethod (c$, "setFloat",
57 function (r, g, b, f) {
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));
59 this.frgbvalue = Clazz.newFloatArray (3, 0);
60 this.frgbvalue[0] = r;
61 this.frgbvalue[1] = g;
62 this.frgbvalue[2] = b;
65 c$.getColorF4 = Clazz.defineMethod (c$, "getColorF4",
66 function (r, g, b, a) {
67 var c = new java.awt.Color ();
68 c.setFloat (r, g, b, a);
71 Clazz.defineMethod (c$, "getRed",
73 return (this.getRGB () >> 16) & 0xFF;
75 Clazz.defineMethod (c$, "getGreen",
77 return (this.getRGB () >> 8) & 0xFF;
79 Clazz.defineMethod (c$, "getBlue",
81 return (this.getRGB () >> 0) & 0xFF;
83 Clazz.defineMethod (c$, "getAlpha",
85 return (this.getRGB () >> 24) & 0xff;
87 Clazz.defineMethod (c$, "getRGB",
91 Clazz.defineMethod (c$, "brighter",
93 var r = this.getRed ();
94 var g = this.getGreen ();
95 var b = this.getBlue ();
96 var i = Clazz.doubleToInt (3.333333333333333);
97 if (r == 0 && g == 0 && b == 0) {
98 return new java.awt.Color (i, i, i);
99 }if (r > 0 && r < i) r = i;
100 if (g > 0 && g < i) g = i;
101 if (b > 0 && b < i) b = i;
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));
104 Clazz.defineMethod (c$, "darker",
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));
108 Clazz.overrideMethod (c$, "hashCode",
112 Clazz.overrideMethod (c$, "equals",
114 return Clazz.instanceOf (obj, java.awt.Color) && (obj).getRGB () == this.getRGB ();
116 Clazz.overrideMethod (c$, "toString",
118 return this.getClass ().getName () + "[r=" + this.getRed () + ",g=" + this.getGreen () + ",b=" + this.getBlue () + "]";
120 c$.decode = Clazz.defineMethod (c$, "decode",
122 var intval = Integer.decode (nm);
123 var i = intval.intValue ();
124 return new java.awt.Color ((i >> 16) & 0xFF, (i >> 8) & 0xFF, i & 0xFF);
126 c$.getColor = Clazz.defineMethod (c$, "getColor",
128 return java.awt.Color.getColor (nm, null);
130 c$.getColor = Clazz.defineMethod (c$, "getColor",
132 var intval = Integer.getInteger (nm);
133 if (intval == null) {
135 }var i = intval.intValue ();
136 return new java.awt.Color ((i >> 16) & 0xFF, (i >> 8) & 0xFF, i & 0xFF);
137 }, "~S,java.awt.Color");
138 c$.getColor = Clazz.defineMethod (c$, "getColor",
140 var intval = Integer.getInteger (nm);
141 var i = (intval != null) ? intval.intValue () : v;
142 return new java.awt.Color ((i >> 16) & 0xFF, (i >> 8) & 0xFF, (i >> 0) & 0xFF);
144 c$.HSBtoRGB = Clazz.defineMethod (c$, "HSBtoRGB",
145 function (hue, saturation, brightness) {
149 if (saturation == 0) {
150 r = g = b = Clazz.floatToInt (brightness * 255.0 + 0.5);
152 var h = (hue - Math.floor (hue)) * 6.0;
153 var f = h - java.lang.Math.floor (h);
154 var p = brightness * (1.0 - saturation);
155 var q = brightness * (1.0 - saturation * f);
156 var t = brightness * (1.0 - (saturation * (1.0 - f)));
157 switch (Clazz.floatToInt (h)) {
159 r = Clazz.floatToInt (brightness * 255.0 + 0.5);
160 g = Clazz.floatToInt (t * 255.0 + 0.5);
161 b = Clazz.floatToInt (p * 255.0 + 0.5);
164 r = Clazz.floatToInt (q * 255.0 + 0.5);
165 g = Clazz.floatToInt (brightness * 255.0 + 0.5);
166 b = Clazz.floatToInt (p * 255.0 + 0.5);
169 r = Clazz.floatToInt (p * 255.0 + 0.5);
170 g = Clazz.floatToInt (brightness * 255.0 + 0.5);
171 b = Clazz.floatToInt (t * 255.0 + 0.5);
174 r = Clazz.floatToInt (p * 255.0 + 0.5);
175 g = Clazz.floatToInt (q * 255.0 + 0.5);
176 b = Clazz.floatToInt (brightness * 255.0 + 0.5);
179 r = Clazz.floatToInt (t * 255.0 + 0.5);
180 g = Clazz.floatToInt (p * 255.0 + 0.5);
181 b = Clazz.floatToInt (brightness * 255.0 + 0.5);
184 r = Clazz.floatToInt (brightness * 255.0 + 0.5);
185 g = Clazz.floatToInt (p * 255.0 + 0.5);
186 b = Clazz.floatToInt (q * 255.0 + 0.5);
189 }return 0xff000000 | (r << 16) | (g << 8) | (b << 0);
191 c$.RGBtoHSB = Clazz.defineMethod (c$, "RGBtoHSB",
192 function (r, g, b, hsbvals) {
196 if (hsbvals == null) {
197 hsbvals = Clazz.newFloatArray (3, 0);
198 }var cmax = (r > g) ? r : g;
199 if (b > cmax) cmax = b;
200 var cmin = (r < g) ? r : g;
201 if (b < cmin) cmin = b;
202 brightness = (cmax) / 255.0;
203 if (cmax != 0) saturation = ((cmax - cmin)) / (cmax);
205 if (saturation == 0) hue = 0;
207 var redc = ((cmax - r)) / ((cmax - cmin));
208 var greenc = ((cmax - g)) / ((cmax - cmin));
209 var bluec = ((cmax - b)) / ((cmax - cmin));
210 if (r == cmax) hue = bluec - greenc;
211 else if (g == cmax) hue = 2.0 + redc - bluec;
212 else hue = 4.0 + greenc - redc;
214 if (hue < 0) hue = hue + 1.0;
216 hsbvals[1] = saturation;
217 hsbvals[2] = brightness;
220 c$.getHSBColor = Clazz.defineMethod (c$, "getHSBColor",
222 return new java.awt.Color (java.awt.Color.HSBtoRGB (h, s, b));
224 Clazz.defineMethod (c$, "getRGBComponents",
225 function (compArray) {
227 if (compArray == null) {
228 f = Clazz.newFloatArray (4, 0);
231 }if (this.frgbvalue == null) {
232 f[0] = (this.getRed ()) / 255;
233 f[1] = (this.getGreen ()) / 255;
234 f[2] = (this.getBlue ()) / 255;
235 f[3] = (this.getAlpha ()) / 255;
237 f[0] = this.frgbvalue[0];
238 f[1] = this.frgbvalue[1];
239 f[2] = this.frgbvalue[2];
243 Clazz.defineMethod (c$, "getRGBColorComponents",
244 function (compArray) {
246 if (compArray == null) {
247 f = Clazz.newFloatArray (3, 0);
250 }if (this.frgbvalue == null) {
251 f[0] = (this.getRed ()) / 255;
252 f[1] = (this.getGreen ()) / 255;
253 f[2] = (this.getBlue ()) / 255;
255 f[0] = this.frgbvalue[0];
256 f[1] = this.frgbvalue[1];
257 f[2] = this.frgbvalue[2];
260 Clazz.overrideMethod (c$, "createContext",
261 function (cm, r, r2d, xform, hints) {
262 if (this.context == null || this.context.getRGB () != this.getRGB ()) {
263 this.context = new java.awt.ColorPaintContext (this.getRGB (), cm);
264 }return this.context;
265 }, "java.awt.image.ColorModel,java.awt.Rectangle,java.awt.geom.Rectangle2D,java.awt.geom.AffineTransform,java.awt.RenderingHints");
266 Clazz.overrideMethod (c$, "getTransparency",
268 var alpha = this.getAlpha ();
271 } else if (alpha == 0) {
276 c$.white = c$.prototype.white = new java.awt.Color (255, 255, 255);
277 c$.WHITE = c$.prototype.WHITE = java.awt.Color.white;
278 c$.lightGray = c$.prototype.lightGray = new java.awt.Color (192, 192, 192);
279 c$.LIGHT_GRAY = c$.prototype.LIGHT_GRAY = java.awt.Color.lightGray;
280 c$.gray = c$.prototype.gray = new java.awt.Color (128, 128, 128);
281 c$.GRAY = c$.prototype.GRAY = java.awt.Color.gray;
282 c$.darkGray = c$.prototype.darkGray = new java.awt.Color (64, 64, 64);
283 c$.DARK_GRAY = c$.prototype.DARK_GRAY = java.awt.Color.darkGray;
284 c$.black = c$.prototype.black = new java.awt.Color (0, 0, 0);
285 c$.BLACK = c$.prototype.BLACK = java.awt.Color.black;
286 c$.red = c$.prototype.red = new java.awt.Color (255, 0, 0);
287 c$.RED = c$.prototype.RED = java.awt.Color.red;
288 c$.pink = c$.prototype.pink = new java.awt.Color (255, 175, 175);
289 c$.PINK = c$.prototype.PINK = java.awt.Color.pink;
290 c$.orange = c$.prototype.orange = new java.awt.Color (255, 200, 0);
291 c$.ORANGE = c$.prototype.ORANGE = java.awt.Color.orange;
292 c$.yellow = c$.prototype.yellow = new java.awt.Color (255, 255, 0);
293 c$.YELLOW = c$.prototype.YELLOW = java.awt.Color.yellow;
294 c$.green = c$.prototype.green = new java.awt.Color (0, 255, 0);
295 c$.GREEN = c$.prototype.GREEN = java.awt.Color.green;
296 c$.magenta = c$.prototype.magenta = new java.awt.Color (255, 0, 255);
297 c$.MAGENTA = c$.prototype.MAGENTA = java.awt.Color.magenta;
298 c$.cyan = c$.prototype.cyan = new java.awt.Color (0, 255, 255);
299 c$.CYAN = c$.prototype.CYAN = java.awt.Color.cyan;
300 c$.blue = c$.prototype.blue = new java.awt.Color (0, 0, 255);
301 c$.BLUE = c$.prototype.BLUE = java.awt.Color.blue;
302 Clazz.defineStatics (c$,