001 /*
002 * Copyright (c) 2009 The openGion Project.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
013 * either express or implied. See the License for the specific language
014 * governing permissions and limitations under the License.
015 */
016 package org.opengion.fukurou.util;
017
018 import java.awt.Color;
019 import java.util.HashMap;
020 import java.util.Map;
021 import java.util.Locale ;
022
023 import static org.opengion.fukurou.util.HybsConst.CR; // 6.1.0.0 (2014/12/26) refactoring
024
025 /**
026 * ColorMap.java ã¯ã€å?通的ã«ä½¿ç”¨ã•れã‚?Color関連メソãƒ?ƒ‰ã‚’集ç´?—ãŸã?クラスã§ã™ã?
027 * StringUtil ã‹ã‚‰ã€Color関係ã?部åˆ?‚’独立ã•ã›ã¾ã—ãŸã€?
028 *
029 * @og.group ユーãƒ?‚£ãƒªãƒ?‚£
030 * @og.rev 6.0.2.1 (2014/09/26) æ–°è¦ä½œæ?
031 *
032 * @version 6.0
033 * @author Kazuhiko Hasegawa
034 * @since JDK5.0,
035 */
036 public final class ColorMap {
037
038 /** ãƒãƒƒãƒ•ã‚¡ã®åˆæœŸå®¹é‡ã‚’通常より多ã„ç›®ã«è¨å®šã—ã¾ã™ã?(200) */
039 // private static final int BUFFER_MIDDLE = 200;
040
041 // /** シスãƒ?ƒ ä¾å˜ã?改行記å·ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã? */
042 // private static final String CR = System.getProperty("line.separator");
043
044 // 4.0.3.0 (2007/12/26) 色コードã«PURPLE を追åŠ?
045 // 5.7.8.0 (2014/07/04) 逿?追åŠ?
046 private static final Map<String,Color> CLR_MAP;
047 static {
048 CLR_MAP = new HashMap<String,Color>();
049 // java.awt.Color static 定義色
050 CLR_MAP.put( "BLACK" ,Color.BLACK );
051 CLR_MAP.put( "BLUE" ,Color.BLUE );
052 CLR_MAP.put( "CYAN" ,Color.CYAN );
053 CLR_MAP.put( "DARKGRAY" ,Color.DARK_GRAY );
054 CLR_MAP.put( "GRAY" ,Color.GRAY );
055 CLR_MAP.put( "GREEN" ,Color.GREEN );
056 CLR_MAP.put( "LIGHTGRAY" ,Color.LIGHT_GRAY );
057 CLR_MAP.put( "MAGENTA" ,Color.MAGENTA );
058 CLR_MAP.put( "ORANGE" ,Color.ORANGE );
059 CLR_MAP.put( "PINK" ,Color.PINK );
060 CLR_MAP.put( "RED" ,Color.RED );
061 CLR_MAP.put( "WHITE" ,Color.WHITE );
062 CLR_MAP.put( "YELLOW" ,Color.YELLOW );
063
064 CLR_MAP.put( "TRANSPARENT" ,new Color( 255,255,255,0 ) ); // 5.7.8.0 (2014/07/04) 逿?追åŠ?
065
066 // 6.0.2.1 (2014/09/26) CSS1 / HTML3â€? / VGA ã®è‰²åç§° 追åŠ?
067 CLR_MAP.put( "LIME" ,Color.decode( "#00FF00" ) );
068 CLR_MAP.put( "AQUA" ,Color.decode( "#00FFFF" ) );
069 CLR_MAP.put( "SILVER" ,Color.decode( "#C0C0C0" ) );
070 CLR_MAP.put( "MAROON" ,Color.decode( "#800000" ) ); // X11ã§ã¯ã€?B03060
071 CLR_MAP.put( "OLIVE" ,Color.decode( "#808000" ) );
072 CLR_MAP.put( "TEAL" ,Color.decode( "#008080" ) );
073 CLR_MAP.put( "NAVY" ,Color.decode( "#000080" ) );
074 CLR_MAP.put( "FUCHSIA" ,Color.decode( "#FF00FF" ) );
075 CLR_MAP.put( "PURPLE" ,Color.decode( "#800080" ) ); // X11ã§ã¯ã€?A020F0
076
077 // 6.0.2.1 (2014/09/26) X11ã®è‰²åç§° 追åŠ?
078 CLR_MAP.put( "ALICEBLUE" ,Color.decode( "#F0F8FF" ) );
079 CLR_MAP.put( "ANTIQUEWHITE" ,Color.decode( "#FAEBD7" ) );
080 CLR_MAP.put( "AQUAMARINE" ,Color.decode( "#7FFFD4" ) );
081 CLR_MAP.put( "AZURE" ,Color.decode( "#F0FFFF" ) );
082 CLR_MAP.put( "BEIGE" ,Color.decode( "#F5F5DC" ) );
083 CLR_MAP.put( "BISQUE" ,Color.decode( "#FFE4C4" ) );
084 CLR_MAP.put( "BLANCHEDALMOND" ,Color.decode( "#FFEBCD" ) );
085 CLR_MAP.put( "BLUEVIOLET" ,Color.decode( "#8A2BE2" ) );
086 CLR_MAP.put( "BROWN" ,Color.decode( "#A52A2A" ) );
087 CLR_MAP.put( "BURLYWOOD" ,Color.decode( "#DEB887" ) );
088 CLR_MAP.put( "CADETBLUE" ,Color.decode( "#5F9EA0" ) );
089 CLR_MAP.put( "CHARTREUSE" ,Color.decode( "#7FFF00" ) );
090 CLR_MAP.put( "CHOCOLATE" ,Color.decode( "#D2691E" ) );
091 CLR_MAP.put( "CORAL" ,Color.decode( "#FF7F50" ) );
092 CLR_MAP.put( "CORNFLOWERBLUE" ,Color.decode( "#6495ED" ) );
093 CLR_MAP.put( "CORNSILK" ,Color.decode( "#FFF8DC" ) );
094 CLR_MAP.put( "CRIMSON" ,Color.decode( "#DC143C" ) );
095 CLR_MAP.put( "DARKBLUE" ,Color.decode( "#00008B" ) );
096 CLR_MAP.put( "DARKCYAN" ,Color.decode( "#008B8B" ) );
097 CLR_MAP.put( "DARKGOLDENROD" ,Color.decode( "#B8860B" ) );
098 CLR_MAP.put( "DARKGREEN" ,Color.decode( "#006400" ) );
099 CLR_MAP.put( "DARKKHAKI" ,Color.decode( "#BDB76B" ) );
100 CLR_MAP.put( "DARKMAGENTA" ,Color.decode( "#8B008B" ) );
101 CLR_MAP.put( "DARKOLIVEGREEN" ,Color.decode( "#556B2F" ) );
102 CLR_MAP.put( "DARKORANGE" ,Color.decode( "#FF8C00" ) );
103 CLR_MAP.put( "DARKORCHID" ,Color.decode( "#9932CC" ) );
104 CLR_MAP.put( "DARKRED" ,Color.decode( "#8B0000" ) );
105 CLR_MAP.put( "DARKSALMON" ,Color.decode( "#E9967A" ) );
106 CLR_MAP.put( "DARKSEAGREEN" ,Color.decode( "#8FBC8F" ) );
107 CLR_MAP.put( "DARKSLATEBLUE" ,Color.decode( "#483D8B" ) );
108 CLR_MAP.put( "DARKSLATEGRAY" ,Color.decode( "#2F4F4F" ) );
109 CLR_MAP.put( "DARKTURQUOISE" ,Color.decode( "#00CED1" ) );
110 CLR_MAP.put( "DARKVIOLET" ,Color.decode( "#9400D3" ) );
111 CLR_MAP.put( "DEEPPINK" ,Color.decode( "#FF1493" ) );
112 CLR_MAP.put( "DEEPSKYBLUE" ,Color.decode( "#00BFFF" ) );
113 CLR_MAP.put( "DIMGRAY" ,Color.decode( "#696969" ) );
114 CLR_MAP.put( "DODGERBLUE" ,Color.decode( "#1E90FF" ) );
115 CLR_MAP.put( "FIREBRICK" ,Color.decode( "#B22222" ) );
116 CLR_MAP.put( "FLORALWHITE" ,Color.decode( "#FFFAF0" ) );
117 CLR_MAP.put( "FORESTGREEN" ,Color.decode( "#228B22" ) );
118 CLR_MAP.put( "GAINSBORO" ,Color.decode( "#DCDCDC" ) );
119 CLR_MAP.put( "GHOSTWHITE" ,Color.decode( "#F8F8FF" ) );
120 CLR_MAP.put( "GOLD" ,Color.decode( "#FFD700" ) );
121 CLR_MAP.put( "GOLDENROD" ,Color.decode( "#DAA520" ) );
122 CLR_MAP.put( "GREENYELLOW" ,Color.decode( "#ADFF2F" ) );
123 CLR_MAP.put( "HONEYDEW" ,Color.decode( "#F0FFF0" ) );
124 CLR_MAP.put( "HOTPINK" ,Color.decode( "#FF69B4" ) );
125 CLR_MAP.put( "INDIANRED" ,Color.decode( "#CD5C5C" ) );
126 CLR_MAP.put( "INDIGO" ,Color.decode( "#4B0082" ) );
127 CLR_MAP.put( "IVORY" ,Color.decode( "#FFFFF0" ) );
128 CLR_MAP.put( "KHAKI" ,Color.decode( "#F0E68C" ) );
129 CLR_MAP.put( "LAVENDER" ,Color.decode( "#E6E6FA" ) );
130 CLR_MAP.put( "LAVENDERBLUSH" ,Color.decode( "#FFF0F5" ) );
131 CLR_MAP.put( "LAWNGREEN" ,Color.decode( "#7CFC00" ) );
132 CLR_MAP.put( "LEMONCHIFFON" ,Color.decode( "#FFFACD" ) );
133 CLR_MAP.put( "LIGHTBLUE" ,Color.decode( "#ADD8E6" ) );
134 CLR_MAP.put( "LIGHTCORAL" ,Color.decode( "#F08080" ) );
135 CLR_MAP.put( "LIGHTCYAN" ,Color.decode( "#E0FFFF" ) );
136 CLR_MAP.put( "LIGHTGOLDENRODYELLOW" ,Color.decode( "#FAFAD2" ) );
137 CLR_MAP.put( "LIGHTGREEN" ,Color.decode( "#90EE90" ) );
138 CLR_MAP.put( "LIGHTPINK" ,Color.decode( "#FFB6C1" ) );
139 CLR_MAP.put( "LIGHTSALMON" ,Color.decode( "#FFA07A" ) );
140 CLR_MAP.put( "LIGHTSEAGREEN" ,Color.decode( "#20B2AA" ) );
141 CLR_MAP.put( "LIGHTSKYBLUE" ,Color.decode( "#87CEFA" ) );
142 CLR_MAP.put( "LIGHTSLATEGRAY" ,Color.decode( "#778899" ) );
143 CLR_MAP.put( "LIGHTSTEELBLUE" ,Color.decode( "#B0C4DE" ) );
144 CLR_MAP.put( "LIGHTYELLOW" ,Color.decode( "#FFFFE0" ) );
145 CLR_MAP.put( "LIMEGREEN" ,Color.decode( "#32CD32" ) );
146 CLR_MAP.put( "LINEN" ,Color.decode( "#FAF0E6" ) );
147 CLR_MAP.put( "MEDIUMAQUAMARINE" ,Color.decode( "#66CDAA" ) );
148 CLR_MAP.put( "MEDIUMBLUE" ,Color.decode( "#0000CD" ) );
149 CLR_MAP.put( "MEDIUMORCHID" ,Color.decode( "#BA55D3" ) );
150 CLR_MAP.put( "MEDIUMPURPLE" ,Color.decode( "#9370DB" ) );
151 CLR_MAP.put( "MEDIUMSEAGREEN" ,Color.decode( "#3CB371" ) );
152 CLR_MAP.put( "MEDIUMSLATEBLUE" ,Color.decode( "#7B68EE" ) );
153 CLR_MAP.put( "MEDIUMSPRINGGREEN" ,Color.decode( "#00FA9A" ) );
154 CLR_MAP.put( "MEDIUMTURQUOISE" ,Color.decode( "#48D1CC" ) );
155 CLR_MAP.put( "MEDIUMVIOLETRED" ,Color.decode( "#C71585" ) );
156 CLR_MAP.put( "MIDNIGHTBLUE" ,Color.decode( "#191970" ) );
157 CLR_MAP.put( "MINTCREAM" ,Color.decode( "#F5FFFA" ) );
158 CLR_MAP.put( "MISTYROSE" ,Color.decode( "#FFE4E1" ) );
159 CLR_MAP.put( "MOCCASIN" ,Color.decode( "#FFE4B5" ) );
160 CLR_MAP.put( "NAVAJOWHITE" ,Color.decode( "#FFDEAD" ) );
161 CLR_MAP.put( "OLDLACE" ,Color.decode( "#FDF5E6" ) );
162 CLR_MAP.put( "OLIVEDRAB" ,Color.decode( "#6B8E23" ) );
163 CLR_MAP.put( "ORANGERED" ,Color.decode( "#FF4500" ) );
164 CLR_MAP.put( "ORCHID" ,Color.decode( "#DA70D6" ) );
165 CLR_MAP.put( "PALEGOLDENROD" ,Color.decode( "#EEE8AA" ) );
166 CLR_MAP.put( "PALEGREEN" ,Color.decode( "#98FB98" ) );
167 CLR_MAP.put( "PALETURQUOISE" ,Color.decode( "#AFEEEE" ) );
168 CLR_MAP.put( "PALEVIOLETRED" ,Color.decode( "#DB7093" ) );
169 CLR_MAP.put( "PAPAYAWHIP" ,Color.decode( "#FFEFD5" ) );
170 CLR_MAP.put( "PEACHPUFF" ,Color.decode( "#FFDAB9" ) );
171 CLR_MAP.put( "PERU" ,Color.decode( "#CD853F" ) );
172 CLR_MAP.put( "PLUM" ,Color.decode( "#DDA0DD" ) );
173 CLR_MAP.put( "POWDERBLUE" ,Color.decode( "#B0E0E6" ) );
174 CLR_MAP.put( "ROSYBROWN" ,Color.decode( "#BC8F8F" ) );
175 CLR_MAP.put( "ROYALBLUE" ,Color.decode( "#4169E1" ) );
176 CLR_MAP.put( "SADDLEBROWN" ,Color.decode( "#8B4513" ) );
177 CLR_MAP.put( "SALMON" ,Color.decode( "#FA8072" ) );
178 CLR_MAP.put( "SANDYBROWN" ,Color.decode( "#F4A460" ) );
179 CLR_MAP.put( "SEAGREEN" ,Color.decode( "#2E8B57" ) );
180 CLR_MAP.put( "SEASHELL" ,Color.decode( "#FFF5EE" ) );
181 CLR_MAP.put( "SIENNA" ,Color.decode( "#A0522D" ) );
182 CLR_MAP.put( "SKYBLUE" ,Color.decode( "#87CEEB" ) );
183 CLR_MAP.put( "SLATEBLUE" ,Color.decode( "#6A5ACD" ) );
184 CLR_MAP.put( "SLATEGRAY" ,Color.decode( "#708090" ) );
185 CLR_MAP.put( "SNOW" ,Color.decode( "#FFFAFA" ) );
186 CLR_MAP.put( "SPRINGGREEN" ,Color.decode( "#00FF7F" ) );
187 CLR_MAP.put( "STEELBLUE" ,Color.decode( "#4682B4" ) );
188 CLR_MAP.put( "TAN" ,Color.decode( "#D2B48C" ) );
189 CLR_MAP.put( "THISTLE" ,Color.decode( "#D8BFD8" ) );
190 CLR_MAP.put( "TOMATO" ,Color.decode( "#FF6347" ) );
191 CLR_MAP.put( "TURQUOISE" ,Color.decode( "#40E0D0" ) );
192 CLR_MAP.put( "VIOLET" ,Color.decode( "#EE82EE" ) );
193 CLR_MAP.put( "WHEAT" ,Color.decode( "#F5DEB3" ) );
194 CLR_MAP.put( "WHITESMOKE" ,Color.decode( "#F5F5F5" ) );
195 CLR_MAP.put( "YELLOWGREEN" ,Color.decode( "#9ACD32" ) );
196 }
197
198 /**
199 * ãƒ?ƒ•ォルトコンストラクターをprivateã«ã—ã¦ã€?
200 * オブジェクトã?生æ?ã‚’ã•ã›ãªã?‚ˆã?«ã™ã‚‹ã€?
201 *
202 */
203 private ColorMap() {}
204
205 /**
206 * カラーã‚ーワードよりã?Colorオブジェクトを作æ?ã—ã¾ã™ã?
207 *
208 * æŒ?®šæ–‡å—å?ã¯ã€java.awt.Color クラスã®static フィールドåã§æŒ?®šã—ã¾ã™ã?
209 * BLACK , BLUE , CYAN , DARK_GRAY , GRAY , GREEN , LIGHT_GRAY ,
210 * MAGENTA , ORANGE , PINK , RED , WHITE , YELLOW , PURPLE , TRANSPARENT(逿?) ãŒæŒ‡å®šã§ãã¾ã™ã?
211 *
212 * 6.0.2.1 (2014/09/26) 以é™ã§ã¯ã€CSS1/HTML3â€?/VGA ã®è‰²åç§°ã¨ã—ã¦ã€?
213 * LIME , AQUA , SILVER , MAROON , OLIVE , TEAL , NAVY , FUCHSIA を追�?
214 * ãれã¨ã€X11ã®è‰²åç§° を追åŠ?—ã¾ã—ãŸã€?
215 *
216 * ã¾ãŸã?å…ˆé?ã«ã€? を付ã‘る事ã§ã€?XXXXXXå½¢å¼ã?16bitRGB表è¨?ã§ã‚‚指定å¯èƒ½ã§ã™ã?
217 * static フィールドåã®Mapを管ç?—ã¦ã?¾ã™ãŒã€å˜åœ¨ã—ãªã??åˆã?ã€ã‚¨ãƒ©ãƒ¼ã«ãªã‚Šã¾ã™ã?
218 *
219 * @og.rev 3.8.9.1 (2007/06/29) æ–°è¦ä½œæ?
220 * @og.rev 4.1.1.0 (2008/02/04) CLR_MAP ã«å˜åœ¨ã—ãªã??åˆã?エラーã«ã—ã¾ã™ã?
221 * @og.rev 6.0.2.1 (2014/09/26) CSS1/HTML3â€?/VGA ã®è‰²åç§° , X11ã®è‰²åç§° 追åŠ?
222 *
223 * @param value java.awt.Color ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’ç¤ºã™æ–‡å—å?ã¾ãŸã?ã€?XXXXXXå½¢å¼ã?16bitRGB表è¨?
224 *
225 * @return Colorオブジェク�
226 * @see java.awt.Color#BLACK
227 */
228 public static Color getColorInstance( final String value ) {
229 final Color clr ;
230
231 // if( value.startsWith("#") ) {
232 if( value != null && value.length() > 0 && value.charAt(0) == '#' ) { // 6.1.0.0 (2014/12/26) refactoring
233 clr = Color.decode( value );
234 }
235 else {
236 final String val = value.replaceAll( "_" , "" ).toUpperCase(Locale.JAPAN);
237 clr = CLR_MAP.get( val );
238 if( clr == null ) {
239 final String errMsg = "æŒ?®šã?色コードã?使用ã§ãã¾ã›ã‚“ Color=[" + value + "]" + CR
240 + "ColorMap=" + CLR_MAP.keySet().toString();
241 throw new RuntimeException( errMsg );
242 }
243 }
244
245 return clr;
246 }
247
248 /**
249 * å†?ƒ¨ã§ç®¡ç?—ã¦ã?‚‹ ColorMap ã®ã‚ーé…å?ã‚’è¿”ã—ã¾ã™ã?
250 *
251 * @og.rev 6.0.2.1 (2014/09/26) æ–°è¦è¿½åŠ?
252 *
253 * @return ã‚ーé…å?
254 * @og.rtnNotNull
255 */
256 public static String[] getColorKeys() {
257 return CLR_MAP.keySet().toArray( new String[CLR_MAP.size()] );
258 }
259 }