001/*******************************************************************************
002 * This software is provided as a supplement to the authors' textbooks on digital
003 *  image processing published by Springer-Verlag in various languages and editions.
004 * Permission to use and distribute this software is granted under the BSD 2-Clause 
005 * "Simplified" License (see http://opensource.org/licenses/BSD-2-Clause). 
006 * Copyright (c) 2006-2016 Wilhelm Burger, Mark J. Burge. All rights reserved. 
007 * Visit http://imagingbook.com for additional details.
008 *******************************************************************************/
009
010package imagingbook.lib.color;
011
012import java.awt.*;
013
014public enum CssColor {
015        AliceBlue(0xF0, 0xF8, 0xFF),
016        AntiqueWhite(0xFA, 0xEB, 0xD7),
017        Aqua(0x00, 0xFF, 0xFF),
018        AquaMarine(0x7F, 0xFF, 0xD4),
019        Azure(0xF0, 0xFF, 0xFF),
020        Beige(0xF5, 0xF5, 0xDC),
021        Bisque(0xFF, 0xE4, 0xC4),
022        Black(0x00, 0x00, 0x00),
023        BlanchedAlmond(0xFF, 0xEB, 0xCD),
024        Blue(0x00, 0x00, 0xFF),
025        BlueViolet(0x8A, 0x2B, 0xE2),
026        Brown(0xA5, 0x2A, 0x2A),
027        BurlyWood(0xDE, 0xB8, 0x87),
028        CadetBlue(0x5F, 0x9E, 0xA0),
029        Chartreuse(0x7F, 0xFF, 0x00),
030        Chocolate(0xD2, 0x69, 0x1E),
031        Coral(0xFF, 0x7F, 0x50),
032        CornFlowerBlue(0x64, 0x95, 0xED),
033        CornSilk(0xFF, 0xF8, 0xDC),
034        Crimson  (0xDC, 0x14, 0x3C),
035        Cyan(0x00, 0xFF, 0xFF),
036        DarkBlue(0x00, 0x00, 0x8B),
037        DarkCyan(0x00, 0x8B, 0x8B),
038        DarkGoldenRod(0xB8, 0x86, 0x0B),
039        DarkGray(0xA9, 0xA9, 0xA9),
040        DarkGreen(0x00, 0x64, 0x00),
041        DarkKhaki(0xBD, 0xB7, 0x6B),
042        DarkMagenta(0x8B, 0x00, 0x8B),
043        DarkOliveGreen(0x55, 0x6B, 0x2F),
044        DarkOrange(0xFF, 0x8C, 0x00),
045        DarkOrchid(0x99, 0x32, 0xCC),
046        DarkRed(0x8B, 0x00, 0x00),
047        DarkSalmon(0xE9, 0x96, 0x7A),
048        DarkSeaGreen(0x8F, 0xBC, 0x8F),
049        DarkSlateBlue(0x48, 0x3D, 0x8B),
050        DarkSlateGray(0x2F, 0x4F, 0x4F),
051        DarkTurquoise(0x00, 0xCE, 0xD1),
052        DarkViolet(0x94, 0x00, 0xD3),
053        DeepPink(0xFF, 0x14, 0x93),
054        DeepSkyBlue(0x00, 0xBF, 0xFF),
055        DimGray(0x69, 0x69, 0x69),
056        DodgerBlue(0x1E, 0x90, 0xFF),
057        FireBrick(0xB2, 0x22, 0x22),
058        FloralWhite(0xFF, 0xFA, 0xF0),
059        ForestGreen(0x22, 0x8B, 0x22),
060        Fuchsia(0xFF, 0x00, 0xFF),
061        Gainsboro(0xDC, 0xDC, 0xDC),
062        GhostWhite(0xF8, 0xF8, 0xFF),
063        Gold(0xFF, 0xD7, 0x00),
064        GoldenRod(0xDA, 0xA5, 0x20),
065        Gray(0x80, 0x80, 0x80),
066        Green(0x00, 0x80, 0x00),
067        GreenYellow(0xAD, 0xFF, 0x2F),
068        HoneyDew(0xF0, 0xFF, 0xF0),
069        HotPink(0xFF, 0x69, 0xB4),
070        IndianRed(0xCD, 0x5C, 0x5C),
071        Indigo(0x4B, 0x00, 0x82),
072        Ivory(0xFF, 0xFF, 0xF0),
073        Khaki(0xF0, 0xE6, 0x8C),
074        Lavender(0xE6, 0xE6, 0xFA),
075        LavenderBlush(0xFF, 0xF0, 0xF5),
076        LawnGreen(0x7C, 0xFC, 0x00),
077        LemonChiffon(0xFF, 0xFA, 0xCD),
078        LightBlue(0xAD, 0xD8, 0xE6),
079        LightCoral(0xF0, 0x80, 0x80),
080        LightCyan(0xE0, 0xFF, 0xFF),
081        LightGoldenRodYellow(0xFA, 0xFA, 0xD2),
082        LightGreen(0x90, 0xEE, 0x90),
083        LightGray(0xD3, 0xD3, 0xD3),
084        LightPink(0xFF, 0xB6, 0xC1),
085        LightSalmon(0xFF, 0xA0, 0x7A),
086        LightSeaGreen(0x20, 0xB2, 0xAA),
087        LightSkyBlue(0x87, 0xCE, 0xFA),
088        LightSlateGray(0x77, 0x88, 0x99),
089        LightSteelBlue(0xB0, 0xC4, 0xDE),
090        LightYellow(0xFF, 0xFF, 0xE0),
091        Lime(0x00, 0xFF, 0x00),
092        LimeGreen(0x32, 0xCD, 0x32),
093        Linen(0xFA, 0xF0, 0xE6),
094        Magenta(0xFF, 0x00, 0xFF),
095        Maroon(0x80, 0x00, 0x00),
096        MediumAquaMarine(0x66, 0xCD, 0xAA),
097        MediumBlue(0x00, 0x00, 0xCD),
098        MediumOrchid(0xBA, 0x55, 0xD3),
099        MediumPurple(0x93, 0x70, 0xDB),
100        MediumSeaGreen(0x3C, 0xB3, 0x71),
101        MediumSlateBlue(0x7B, 0x68, 0xEE),
102        MediumSpringGreen(0x00, 0xFA, 0x9A),
103        MediumTurquoise(0x48, 0xD1, 0xCC),
104        MediumVioletRed(0xC7, 0x15, 0x85),
105        MidnightBlue(0x19, 0x19, 0x70),
106        MintCream(0xF5, 0xFF, 0xFA),
107        MistyRose(0xFF, 0xE4, 0xE1),
108        Moccasin(0xFF, 0xE4, 0xB5),
109        NavajoWhite(0xFF, 0xDE, 0xAD),
110        Navy(0x00, 0x00, 0x80),
111        OldLace(0xFD, 0xF5, 0xE6),
112        Olive(0x80, 0x80, 0x00),
113        OliveDrab(0x6B, 0x8E, 0x23),
114        Orange(0xFF, 0xA5, 0x00),
115        OrangeRed(0xFF, 0x45, 0x00),
116        Orchid(0xDA, 0x70, 0xD6),
117        PaleGoldenRod(0xEE, 0xE8, 0xAA),
118        PaleGreen(0x98, 0xFB, 0x98),
119        PaleTurquoise(0xAF, 0xEE, 0xEE),
120        PaleVioletRed(0xDB, 0x70, 0x93),
121        PapayaWhip(0xFF, 0xEF, 0xD5),
122        PeachPuff(0xFF, 0xDA, 0xB9),
123        Peru(0xCD, 0x85, 0x3F),
124        Pink(0xFF, 0xC0, 0xCB),
125        Plum(0xDD, 0xA0, 0xDD),
126        PowderBlue(0xB0, 0xE0, 0xE6),
127        Purple(0x80, 0x00, 0x80),
128        Red(0xFF, 0x00, 0x00),
129        RosyBrown(0xBC, 0x8F, 0x8F),
130        RoyalBlue(0x41, 0x69, 0xE1),
131        SaddleBrown(0x8B, 0x45, 0x13),
132        Salmon(0xFA, 0x80, 0x72),
133        SandyBrown(0xF4, 0xA4, 0x60),
134        SeaGreen(0x2E, 0x8B, 0x57),
135        SeaShell(0xFF, 0xF5, 0xEE),
136        Sienna(0xA0, 0x52, 0x2D),
137        Silver(0xC0, 0xC0, 0xC0),
138        SkyBlue(0x87, 0xCE, 0xEB),
139        SlateBlue(0x6A, 0x5A, 0xCD),
140        SlateGray(0x70, 0x80, 0x90),
141        Snow(0xFF, 0xFA, 0xFA),
142        SpringGreen(0x00, 0xFF, 0x7F),
143        SteelBlue(0x46, 0x82, 0xB4),
144        Tan(0xD2, 0xB4, 0x8C),
145        Teal(0x00, 0x80, 0x80),
146        Thistle(0xD8, 0xBF, 0xD8),
147        Tomato(0xFF, 0x63, 0x47),
148        Turquoise(0x40, 0xE0, 0xD0),
149        Violet(0xEE, 0x82, 0xEE),
150        Wheat(0xF5, 0xDE, 0xB3),
151        White(0xFF, 0xFF, 0xFF),
152        WhiteSmoke(0xF5, 0xF5, 0xF5),
153        Yellow(0xFF, 0xFF, 0x00),
154        YellowGreen(0x9A, 0xCD, 0x32);
155        
156        private final int r, g, b;
157
158        CssColor(int r, int g, int b) {
159                this.r = r;
160                this.g = g;
161                this.b = b;
162        }
163
164        public int getRed() {
165                return r;
166        }
167
168        public int getGreen() {
169                return g;
170        }
171
172        public int getBlue() {
173                return b;
174        }
175
176        public Color getColor() {
177                return new Color(r, g, b);
178        }
179
180        public int getRGB() {
181                return getColor().getRGB();
182        }
183
184        public String getRGBString() {
185                /*
186                 * toHexString will return "0" instead of "00" String.format will not
187                 * 0-pad Strings or Hex Have to do it manually...
188                 */
189                return String.format("#%s%s%s",
190                                (r < 0x10 ? "0" : "") + Integer.toHexString(r), (g < 0x10 ? "0"
191                                                : "") + Integer.toHexString(g), (b < 0x10 ? "0" : "")
192                                                + Integer.toHexString(b));
193        }
194        
195        // Added by wilbur:
196        public static Color[] getColors(CssColor ... wcols) {
197                Color[] rgbColors = new Color[wcols.length];
198                for (int i=0; i<wcols.length; i++) {
199                        rgbColors[i] = wcols[i].getColor();
200                }
201                return rgbColors;
202        }
203        
204        public static final Color[] PreferredColors =
205                        getColors(
206                                        MediumBlue,
207                                        Crimson,
208                                        MediumSeaGreen,
209                                        BlueViolet,
210                                        Tomato,
211                                        CornFlowerBlue,
212                                        DeepPink,
213                                        YellowGreen,
214                                        Magenta,
215                                        //OliveDrab,
216                                        
217                                        DarkCyan
218                                        );
219}