1
4
5
9 class org.aswing.ASColor{
10
11 private static var FACTOR:Number = 0.7;
12
13 private var rgb:Number;
14 private var alpha:Number;
15
16 public function ASColor (color:Number, alpha:Number){
17 setRGB(color);
18 setAlpha(alpha);
19 }
20
21 private function setRGB(rgb:Number):Void{
22 if(rgb == null){
23 this.rgb = black.getRGB();
24 }else{
25 this.rgb = rgb;
26 }
27 }
28
29 private function setAlpha(alpha:Number):Void{
30 if(alpha == null){
31 this.alpha = 100;
32 }else{
33 this.alpha = Math.min(100, Math.max(0, alpha));
34 }
35 }
36
37
40 public function getAlpha():Number{
41 return alpha;
42 }
43
44
47 public function getRGB():Number{
48 return rgb;
49 }
50
51
56 public function getRed():Number{
57 return (rgb & 0x00FF0000) >> 16;
58 }
59
60
65 public function getGreen():Number{
66 return (rgb & 0x0000FF00) >> 8;
67 }
68
69
74 public function getBlue():Number{
75 return (rgb & 0x000000FF);
76 }
77
78
89 public function darker(factor:Number):ASColor{
90 if(factor == undefined){
91 factor = FACTOR;
92 }
93 var r:Number = getRed();
94 var g:Number = getGreen();
95 var b:Number = getBlue();
96 return getASColor(r*factor, g*factor, b*factor, alpha);
97 }
98
99
110 public function brighter(factor:Number):ASColor{
111 if(factor == undefined){
112 factor = FACTOR;
113 }
114 var r:Number = getRed();
115 var g:Number = getGreen();
116 var b:Number = getBlue();
117
118
123 var i:Number = Math.floor(1.0/(1.0-factor));
124 if ( r == 0 && g == 0 && b == 0) {
125 return getASColor(i, i, i, alpha);
126 }
127 if ( r > 0 && r < i ) r = i;
128 if ( g > 0 && g < i ) g = i;
129 if ( b > 0 && b < i ) b = i;
130
131 return getASColor(r/factor, g/factor, b/factor, alpha);
132 }
133
134
141 public static function getASColor(r:Number, g:Number, b:Number, a:Number):ASColor{
142 return new ASColor(getRGBWith(r, g, b), a);
143 }
144
145
148 public static function getRGBWith(rr:Number, gg:Number, bb:Number):Number {
149 var r:Number = Math.round(rr);
150 var g:Number = Math.round(gg);
151 var b:Number = Math.round(bb);
152 if(r < 0){
153 r = 0;
154 }
155 if(r > 255){
156 r = 255;
157 }
158 if(g < 0){
159 g = 0;
160 }
161 if(g > 255){
162 g = 255;
163 }
164 if(b < 0){
165 b = 0;
166 }
167 if(b > 255){
168 b = 255;
169 }
170 var color_n:Number = (r<<16) + (g<<8) +b;
171 return color_n;
172 }
173
174 public function toString():String{
175 return "ASColor(rgb:"+rgb.toString(16)+", alpha:"+alpha+")";
176 }
177
178 public function equals(o:Object):Boolean{
179 var c:ASColor = ASColor(o);
180 if(c!=null){
181 return c.alpha === alpha && c.rgb === rgb;
182 }else{
183 return false;
184 }
185 }
186
187 private static var white:ASColor = new ASColor(0xffffff);
188 public static function get WHITE():ASColor{
189 return white;
190 }
191
192 private static var lightGray:ASColor = new ASColor(0xc0c0c0);
193 public static function get LIGHT_GRAY():ASColor{
194 return lightGray;
195 }
196
197 private static var gray:ASColor = new ASColor(0x808080);
198 public static function get GRAY():ASColor{
199 return gray;
200 }
201
202 private static var darkGray:ASColor = new ASColor(0x404040);
203 public static function get DARK_GRAY():ASColor{
204 return darkGray;
205 }
206
207 private static var black:ASColor = new ASColor(0x000000);
208 public static function get BLACK():ASColor{
209 return black;
210 }
211
212 private static var red:ASColor = new ASColor(0xff0000);
213 public static function get RED():ASColor{
214 return red;
215 }
216
217 private static var pink:ASColor = new ASColor(0xffafaf);
218 public static function get PINK():ASColor{
219 return pink;
220 }
221
222 private static var orange:ASColor = new ASColor(0xffc800);
223 public static function get ORANGE():ASColor{
224 return orange;
225 }
226
227 private static var haloOrange:ASColor = new ASColor(0xFFC200);
228 public static function get HALO_ORANGE():ASColor{
229 return haloOrange;
230 }
231
232 private static var yellow:ASColor = new ASColor(0xffff00);
233 public static function get YELLOW():ASColor{
234 return yellow;
235 }
236
237 private static var green:ASColor = new ASColor(0x00ff00);
238 public static function get GREEN():ASColor{
239 return green;
240 }
241
242 private static var haloGreen:ASColor = new ASColor(0x80FF4D);
243 public static function get HALO_GREEN():ASColor{
244 return haloGreen;
245 }
246
247 private static var magenta:ASColor = new ASColor(0xff00ff);
248 public static function get MAGENTA():ASColor{
249 return magenta;
250 }
251
252 private static var cyan:ASColor = new ASColor(0x00ffff);
253 public static function get CYAN():ASColor{
254 return cyan;
255 }
256
257 private static var blue:ASColor = new ASColor(0x0000ff);
258 public static function get BLUE():ASColor{
259 return blue;
260 }
261
262 private static var haloBlue:ASColor = new ASColor(0x2BF5F5);
263 public static function get HALO_BLUE():ASColor{
264 return haloBlue;
265 }
266
267
268 }
269