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 */ 016package org.opengion.fukurou.util; 017 018import org.opengion.fukurou.system.OgRuntimeException ; // 6.4.2.0 (2016/01/29) 019import java.awt.Color; 020import java.util.LinkedHashMap; // 6.4.6.1 (2016/06/03) 021import java.util.Map; 022import java.util.List; // 6.9.9.2 (2018/09/18) 023import java.util.ArrayList; // 6.9.9.2 (2018/09/18) 024import java.util.Locale ; 025 026import static org.opengion.fukurou.system.HybsConst.CR; // 6.1.0.0 (2014/12/26) refactoring 027 028/** 029 * ColorMap.java は、共通的に使用される Color関連メソッドを集約した、クラスです。 030 * StringUtil から、Color関係の部分を独立させました。 031 * 032 * カラー文字列は、java.awt.Color static 定義色、CSS1 / HTML3–4 / VGA の色名称、 033 * X11の色名称 が指定できます。 034 * 035 * カラー番号は、0:BLUE,1:CYAN,2:GRAY,3:GREEN,4:LIGHT_GRAY, 036 * 5:MAGENTA,6:DARK_GRAY,7:ORANGE,8:PINK,9:RED,10:YELLOW 037 * となっており、配列数を超えると、0:BLUE に戻ります。 038 * 039 * @og.group ユーティリティ 040 * @og.rev 6.0.2.1 (2014/09/26) 新規作成 041 * @og.rev 6.4.3.3 (2016/03/04) ViewForm_ImageTimeBar#FlgColorMap 内部クラスから機能移動 042 * 043 * @version 6.0 044 * @author Kazuhiko Hasegawa 045 * @since JDK8.0, 046 */ 047public final class ColorMap { 048// // 6.9.9.2 (2018/09/18) Map から、CLR_ARY を作成します。 049// // 6.4.3.3 (2016/03/04) ViewForm_ImageTimeBar#FlgColorMap 内部クラスから移動 050// private static final Color[] CLR_ARY = new Color[] { 051// Color.BLUE ,Color.CYAN ,Color.GRAY ,Color.GREEN ,Color.LIGHT_GRAY ,Color.MAGENTA , 052// Color.DARK_GRAY ,Color.ORANGE ,Color.PINK ,Color.RED ,Color.YELLOW 053// }; 054 055 // 6.9.9.2 (2018/09/18) パステルカラー の色コード配列追加 056 private static final String[] PSTL_KEY = new String[] { 057 "#FF7F7F" , "#7FFFFF" , "#BF7FFF" , "#BFFF7F" , 058 "#FF7FBF" , "#7FFFBF" , "#7F7FFF" , "#FFFF7F" , 059 "#FF7FFF" , "#7FFF7F" , "#7FBFFF" , "#FFBF7F" 060 }; 061 062 // 4.0.3.0 (2007/12/26) 色コードにPURPLE を追加 063 // 5.7.8.0 (2014/07/04) 透明追加 064 private static final List<Color> CLR_LIST = new ArrayList<>(); // 6.9.9.2 (2018/09/18) 色配列ではなく、リストに変更します。 065 /** staticイニシャライザ。読み取り専用(Collections.unmodifiableMap(Map))や、ConcurrentHashMap を使用しません。 */ 066 private static final Map<String,Color> CLR_MAP = new LinkedHashMap<>(); // 6.4.6.1 (2016/06/03) 登録順をキープします。 067 static { 068 // java.awt.Color static 定義色 069 CLR_MAP.put( "BLUE" ,Color.BLUE ); 070 CLR_MAP.put( "CYAN" ,Color.CYAN ); 071 CLR_MAP.put( "GRAY" ,Color.GRAY ); 072 CLR_MAP.put( "GREEN" ,Color.GREEN ); 073 CLR_MAP.put( "LIGHTGRAY" ,Color.LIGHT_GRAY ); 074 CLR_MAP.put( "MAGENTA" ,Color.MAGENTA ); 075 CLR_MAP.put( "DARKGRAY" ,Color.DARK_GRAY ); 076 CLR_MAP.put( "ORANGE" ,Color.ORANGE ); 077 CLR_MAP.put( "PINK" ,Color.PINK ); 078 CLR_MAP.put( "RED" ,Color.RED ); 079 CLR_MAP.put( "YELLOW" ,Color.YELLOW ); 080 081// // 6.9.9.2 (2018/09/18) CSS1 / HTML3–4 / VGA の色名称の後ろに移動。 082// CLR_MAP.put( "WHITE" ,Color.WHITE ); 083// CLR_MAP.put( "BLACK" ,Color.BLACK ); 084// CLR_MAP.put( "TRANSPARENT" ,new Color( 255,255,255,0 ) ); // 5.7.8.0 (2014/07/04) 透明追加 085 086 // 6.0.2.1 (2014/09/26) CSS1 / HTML3–4 / VGA の色名称 追加 087 CLR_MAP.put( "LIME" ,Color.decode( "#00FF00" ) ); 088 CLR_MAP.put( "AQUA" ,Color.decode( "#00FFFF" ) ); 089 CLR_MAP.put( "SILVER" ,Color.decode( "#C0C0C0" ) ); 090 CLR_MAP.put( "MAROON" ,Color.decode( "#800000" ) ); // X11では、#B03060 091 CLR_MAP.put( "OLIVE" ,Color.decode( "#808000" ) ); 092 CLR_MAP.put( "TEAL" ,Color.decode( "#008080" ) ); 093 CLR_MAP.put( "NAVY" ,Color.decode( "#000080" ) ); 094 CLR_MAP.put( "FUCHSIA" ,Color.decode( "#FF00FF" ) ); 095 CLR_MAP.put( "PURPLE" ,Color.decode( "#800080" ) ); // X11では、#A020F0 096 097 // 6.9.9.2 (2018/09/18) Map から、CLR_LIST を作成するのは、ここまで。 098 CLR_LIST.addAll( CLR_MAP.values() ); 099 100 // 6.9.9.2 (2018/09/18) パステルカラー の色コード配列追加 101 for( final String col : PSTL_KEY ) { 102 CLR_LIST.add( Color.decode( col ) ); 103 } 104 105 CLR_MAP.put( "WHITE" ,Color.WHITE ); 106 CLR_MAP.put( "BLACK" ,Color.BLACK ); 107 CLR_MAP.put( "TRANSPARENT" ,new Color( 255,255,255,0 ) ); // 5.7.8.0 (2014/07/04) 透明追加 108 109 // 6.0.2.1 (2014/09/26) X11の色名称 追加 110 CLR_MAP.put( "ALICEBLUE" ,Color.decode( "#F0F8FF" ) ); 111 CLR_MAP.put( "ANTIQUEWHITE" ,Color.decode( "#FAEBD7" ) ); 112 CLR_MAP.put( "AQUAMARINE" ,Color.decode( "#7FFFD4" ) ); 113 CLR_MAP.put( "AZURE" ,Color.decode( "#F0FFFF" ) ); 114 CLR_MAP.put( "BEIGE" ,Color.decode( "#F5F5DC" ) ); 115 CLR_MAP.put( "BISQUE" ,Color.decode( "#FFE4C4" ) ); 116 CLR_MAP.put( "BLANCHEDALMOND" ,Color.decode( "#FFEBCD" ) ); 117 CLR_MAP.put( "BLUEVIOLET" ,Color.decode( "#8A2BE2" ) ); 118 CLR_MAP.put( "BROWN" ,Color.decode( "#A52A2A" ) ); 119 CLR_MAP.put( "BURLYWOOD" ,Color.decode( "#DEB887" ) ); 120 CLR_MAP.put( "CADETBLUE" ,Color.decode( "#5F9EA0" ) ); 121 CLR_MAP.put( "CHARTREUSE" ,Color.decode( "#7FFF00" ) ); 122 CLR_MAP.put( "CHOCOLATE" ,Color.decode( "#D2691E" ) ); 123 CLR_MAP.put( "CORAL" ,Color.decode( "#FF7F50" ) ); 124 CLR_MAP.put( "CORNFLOWERBLUE" ,Color.decode( "#6495ED" ) ); 125 CLR_MAP.put( "CORNSILK" ,Color.decode( "#FFF8DC" ) ); 126 CLR_MAP.put( "CRIMSON" ,Color.decode( "#DC143C" ) ); 127 CLR_MAP.put( "DARKBLUE" ,Color.decode( "#00008B" ) ); 128 CLR_MAP.put( "DARKCYAN" ,Color.decode( "#008B8B" ) ); 129 CLR_MAP.put( "DARKGOLDENROD" ,Color.decode( "#B8860B" ) ); 130 CLR_MAP.put( "DARKGREEN" ,Color.decode( "#006400" ) ); 131 CLR_MAP.put( "DARKKHAKI" ,Color.decode( "#BDB76B" ) ); 132 CLR_MAP.put( "DARKMAGENTA" ,Color.decode( "#8B008B" ) ); 133 CLR_MAP.put( "DARKOLIVEGREEN" ,Color.decode( "#556B2F" ) ); 134 CLR_MAP.put( "DARKORANGE" ,Color.decode( "#FF8C00" ) ); 135 CLR_MAP.put( "DARKORCHID" ,Color.decode( "#9932CC" ) ); 136 CLR_MAP.put( "DARKRED" ,Color.decode( "#8B0000" ) ); 137 CLR_MAP.put( "DARKSALMON" ,Color.decode( "#E9967A" ) ); 138 CLR_MAP.put( "DARKSEAGREEN" ,Color.decode( "#8FBC8F" ) ); 139 CLR_MAP.put( "DARKSLATEBLUE" ,Color.decode( "#483D8B" ) ); 140 CLR_MAP.put( "DARKSLATEGRAY" ,Color.decode( "#2F4F4F" ) ); 141 CLR_MAP.put( "DARKTURQUOISE" ,Color.decode( "#00CED1" ) ); 142 CLR_MAP.put( "DARKVIOLET" ,Color.decode( "#9400D3" ) ); 143 CLR_MAP.put( "DEEPPINK" ,Color.decode( "#FF1493" ) ); 144 CLR_MAP.put( "DEEPSKYBLUE" ,Color.decode( "#00BFFF" ) ); 145 CLR_MAP.put( "DIMGRAY" ,Color.decode( "#696969" ) ); 146 CLR_MAP.put( "DODGERBLUE" ,Color.decode( "#1E90FF" ) ); 147 CLR_MAP.put( "FIREBRICK" ,Color.decode( "#B22222" ) ); 148 CLR_MAP.put( "FLORALWHITE" ,Color.decode( "#FFFAF0" ) ); 149 CLR_MAP.put( "FORESTGREEN" ,Color.decode( "#228B22" ) ); 150 CLR_MAP.put( "GAINSBORO" ,Color.decode( "#DCDCDC" ) ); 151 CLR_MAP.put( "GHOSTWHITE" ,Color.decode( "#F8F8FF" ) ); 152 CLR_MAP.put( "GOLD" ,Color.decode( "#FFD700" ) ); 153 CLR_MAP.put( "GOLDENROD" ,Color.decode( "#DAA520" ) ); 154 CLR_MAP.put( "GREENYELLOW" ,Color.decode( "#ADFF2F" ) ); 155 CLR_MAP.put( "HONEYDEW" ,Color.decode( "#F0FFF0" ) ); 156 CLR_MAP.put( "HOTPINK" ,Color.decode( "#FF69B4" ) ); 157 CLR_MAP.put( "INDIANRED" ,Color.decode( "#CD5C5C" ) ); 158 CLR_MAP.put( "INDIGO" ,Color.decode( "#4B0082" ) ); 159 CLR_MAP.put( "IVORY" ,Color.decode( "#FFFFF0" ) ); 160 CLR_MAP.put( "KHAKI" ,Color.decode( "#F0E68C" ) ); 161 CLR_MAP.put( "LAVENDER" ,Color.decode( "#E6E6FA" ) ); 162 CLR_MAP.put( "LAVENDERBLUSH" ,Color.decode( "#FFF0F5" ) ); 163 CLR_MAP.put( "LAWNGREEN" ,Color.decode( "#7CFC00" ) ); 164 CLR_MAP.put( "LEMONCHIFFON" ,Color.decode( "#FFFACD" ) ); 165 CLR_MAP.put( "LIGHTBLUE" ,Color.decode( "#ADD8E6" ) ); 166 CLR_MAP.put( "LIGHTCORAL" ,Color.decode( "#F08080" ) ); 167 CLR_MAP.put( "LIGHTCYAN" ,Color.decode( "#E0FFFF" ) ); 168 CLR_MAP.put( "LIGHTGOLDENRODYELLOW" ,Color.decode( "#FAFAD2" ) ); 169 CLR_MAP.put( "LIGHTGREEN" ,Color.decode( "#90EE90" ) ); 170 CLR_MAP.put( "LIGHTPINK" ,Color.decode( "#FFB6C1" ) ); 171 CLR_MAP.put( "LIGHTSALMON" ,Color.decode( "#FFA07A" ) ); 172 CLR_MAP.put( "LIGHTSEAGREEN" ,Color.decode( "#20B2AA" ) ); 173 CLR_MAP.put( "LIGHTSKYBLUE" ,Color.decode( "#87CEFA" ) ); 174 CLR_MAP.put( "LIGHTSLATEGRAY" ,Color.decode( "#778899" ) ); 175 CLR_MAP.put( "LIGHTSTEELBLUE" ,Color.decode( "#B0C4DE" ) ); 176 CLR_MAP.put( "LIGHTYELLOW" ,Color.decode( "#FFFFE0" ) ); 177 CLR_MAP.put( "LIMEGREEN" ,Color.decode( "#32CD32" ) ); 178 CLR_MAP.put( "LINEN" ,Color.decode( "#FAF0E6" ) ); 179 CLR_MAP.put( "MEDIUMAQUAMARINE" ,Color.decode( "#66CDAA" ) ); 180 CLR_MAP.put( "MEDIUMBLUE" ,Color.decode( "#0000CD" ) ); 181 CLR_MAP.put( "MEDIUMORCHID" ,Color.decode( "#BA55D3" ) ); 182 CLR_MAP.put( "MEDIUMPURPLE" ,Color.decode( "#9370DB" ) ); 183 CLR_MAP.put( "MEDIUMSEAGREEN" ,Color.decode( "#3CB371" ) ); 184 CLR_MAP.put( "MEDIUMSLATEBLUE" ,Color.decode( "#7B68EE" ) ); 185 CLR_MAP.put( "MEDIUMSPRINGGREEN" ,Color.decode( "#00FA9A" ) ); 186 CLR_MAP.put( "MEDIUMTURQUOISE" ,Color.decode( "#48D1CC" ) ); 187 CLR_MAP.put( "MEDIUMVIOLETRED" ,Color.decode( "#C71585" ) ); 188 CLR_MAP.put( "MIDNIGHTBLUE" ,Color.decode( "#191970" ) ); 189 CLR_MAP.put( "MINTCREAM" ,Color.decode( "#F5FFFA" ) ); 190 CLR_MAP.put( "MISTYROSE" ,Color.decode( "#FFE4E1" ) ); 191 CLR_MAP.put( "MOCCASIN" ,Color.decode( "#FFE4B5" ) ); 192 CLR_MAP.put( "NAVAJOWHITE" ,Color.decode( "#FFDEAD" ) ); 193 CLR_MAP.put( "OLDLACE" ,Color.decode( "#FDF5E6" ) ); 194 CLR_MAP.put( "OLIVEDRAB" ,Color.decode( "#6B8E23" ) ); 195 CLR_MAP.put( "ORANGERED" ,Color.decode( "#FF4500" ) ); 196 CLR_MAP.put( "ORCHID" ,Color.decode( "#DA70D6" ) ); 197 CLR_MAP.put( "PALEGOLDENROD" ,Color.decode( "#EEE8AA" ) ); 198 CLR_MAP.put( "PALEGREEN" ,Color.decode( "#98FB98" ) ); 199 CLR_MAP.put( "PALETURQUOISE" ,Color.decode( "#AFEEEE" ) ); 200 CLR_MAP.put( "PALEVIOLETRED" ,Color.decode( "#DB7093" ) ); 201 CLR_MAP.put( "PAPAYAWHIP" ,Color.decode( "#FFEFD5" ) ); 202 CLR_MAP.put( "PEACHPUFF" ,Color.decode( "#FFDAB9" ) ); 203 CLR_MAP.put( "PERU" ,Color.decode( "#CD853F" ) ); 204 CLR_MAP.put( "PLUM" ,Color.decode( "#DDA0DD" ) ); 205 CLR_MAP.put( "POWDERBLUE" ,Color.decode( "#B0E0E6" ) ); 206 CLR_MAP.put( "ROSYBROWN" ,Color.decode( "#BC8F8F" ) ); 207 CLR_MAP.put( "ROYALBLUE" ,Color.decode( "#4169E1" ) ); 208 CLR_MAP.put( "SADDLEBROWN" ,Color.decode( "#8B4513" ) ); 209 CLR_MAP.put( "SALMON" ,Color.decode( "#FA8072" ) ); 210 CLR_MAP.put( "SANDYBROWN" ,Color.decode( "#F4A460" ) ); 211 CLR_MAP.put( "SEAGREEN" ,Color.decode( "#2E8B57" ) ); 212 CLR_MAP.put( "SEASHELL" ,Color.decode( "#FFF5EE" ) ); 213 CLR_MAP.put( "SIENNA" ,Color.decode( "#A0522D" ) ); 214 CLR_MAP.put( "SKYBLUE" ,Color.decode( "#87CEEB" ) ); 215 CLR_MAP.put( "SLATEBLUE" ,Color.decode( "#6A5ACD" ) ); 216 CLR_MAP.put( "SLATEGRAY" ,Color.decode( "#708090" ) ); 217 CLR_MAP.put( "SNOW" ,Color.decode( "#FFFAFA" ) ); 218 CLR_MAP.put( "SPRINGGREEN" ,Color.decode( "#00FF7F" ) ); 219 CLR_MAP.put( "STEELBLUE" ,Color.decode( "#4682B4" ) ); 220 CLR_MAP.put( "TAN" ,Color.decode( "#D2B48C" ) ); 221 CLR_MAP.put( "THISTLE" ,Color.decode( "#D8BFD8" ) ); 222 CLR_MAP.put( "TOMATO" ,Color.decode( "#FF6347" ) ); 223 CLR_MAP.put( "TURQUOISE" ,Color.decode( "#40E0D0" ) ); 224 CLR_MAP.put( "VIOLET" ,Color.decode( "#EE82EE" ) ); 225 CLR_MAP.put( "WHEAT" ,Color.decode( "#F5DEB3" ) ); 226 CLR_MAP.put( "WHITESMOKE" ,Color.decode( "#F5F5F5" ) ); 227 CLR_MAP.put( "YELLOWGREEN" ,Color.decode( "#9ACD32" ) ); 228 229// // 6.4.4.1 (2016/03/18) 数字に対応する 230// for( int i=0; i<CLR_ARY.length; i++ ) { 231// CLR_MAP.put( String.valueOf( i ) ,CLR_ARY[i] ); // 0:BLUE , 1:CYAN , 2:GRAY ・・・ を、Mapに登録しておきます。 232// } 233 234 // 6.9.9.2 (2018/09/18) 数字に対応する(配列からリストに変更の対応) 235 for( int i=0; i<CLR_LIST.size(); i++ ) { 236 CLR_MAP.put( String.valueOf( i ) ,CLR_LIST.get(i) ); // 0:BLUE , 1:CYAN , 2:GRAY ・・・ を、Mapに登録しておきます。 237 } 238 } 239 240 /** 241 * デフォルトコンストラクターをprivateにして、 242 * オブジェクトの生成をさせないようにする。 243 * 244 */ 245 private ColorMap() {} 246 247 /** 248 * カラーキーワードより、Colorオブジェクトを作成します。 249 * 250 * 指定文字列は、java.awt.Color クラスのstatic フィールド名で指定します。 251 * BLACK , BLUE , CYAN , DARK_GRAY , GRAY , GREEN , LIGHT_GRAY , 252 * MAGENTA , ORANGE , PINK , RED , WHITE , YELLOW , PURPLE , TRANSPARENT(透明) が指定できます。 253 * 254 * 6.0.2.1 (2014/09/26) 以降では、CSS1/HTML3–4/VGA の色名称として、 255 * LIME , AQUA , SILVER , MAROON , OLIVE , TEAL , NAVY , FUCHSIA を追加。 256 * それと、X11の色名称 を追加しました。 257 * 258 * また、先頭に、# を付ける事で、#XXXXXX形式の16bitRGB表記 でも指定可能です。 259 * static フィールド名のMapを管理していますが、存在しない場合は、エラーになります。 260 * 261 * @og.rev 3.8.9.1 (2007/06/29) 新規作成 262 * @og.rev 4.1.1.0 (2008/02/04) CLR_MAP に存在しない場合はエラーにします。 263 * @og.rev 6.0.2.1 (2014/09/26) CSS1/HTML3–4/VGA の色名称 , X11の色名称 追加 264 * @og.rev 6.3.9.0 (2015/11/06) valueのnullチェックの仕方が間違っていた。 265 * @og.rev 6.4.6.1 (2016/06/03) 色番号の取得も対応しておきます。 266 * 267 * @param value java.awt.Color フィールドを示す文字列または、#XXXXXX形式の16bitRGB表記 268 * 269 * @return Colorオブジェクト 270 * @see java.awt.Color#BLACK 271 */ 272 public static Color getColorInstance( final String value ) { 273 // 6.3.9.0 (2015/11/06) valueのnullチェックの仕方が間違っていた。 274 if( value == null || value.length() == 0 ) { 275 final String errMsg = "色コードが指定されていません。" + CR // 6.4.6.1 (2016/06/03) 276 + "ColorMap=" + CLR_MAP.keySet().toString(); 277 throw new OgRuntimeException( errMsg ); 278 } 279 280 Color clr = null ; // 6.4.6.1 (2016/06/03) 色番号で、再設定しているため、final をはずす。 281 282 if( value.charAt(0) == '#' ) { 283 try { 284 clr = Color.decode( value ); 285 } 286 catch( final NumberFormatException ex ) { // 10進、8進、および16進の整数値に変換できない場合 287 final String errMsg = "指定の色コードのフォーマットが異なります Color=[" + value + "]" + CR 288 + "ColorMap=" + CLR_MAP.keySet().toString(); 289 throw new OgRuntimeException( errMsg,ex ); 290 } 291 } 292 else { 293 // "_"を削除するのは、LIGHT_GRAY などの表記を統一するため。 294 final String val = value.replaceAll( "_" , "" ).toUpperCase(Locale.JAPAN); 295 clr = CLR_MAP.get( val ); 296 if( clr == null ) { 297 // 6.4.6.1 (2016/06/03) 色番号の取得も対応しておきます。 298 // 0 ~ 10 は登録済みなので、それ以降の数字の繰り返しが出来ない 299 try { 300 clr = getColorInstance( Integer.parseInt( value ) ); 301 } 302 catch( final NumberFormatException ex ) { // 数字ではない value をパースしているので、この、Exception は伝播不要。 303 final String errMsg = "指定の色コードは使用できません Color=[" + value + "]" + CR 304 + "ColorMap=" + CLR_MAP.keySet().toString(); 305 throw new OgRuntimeException( errMsg,ex ); 306 } 307 } 308 } 309 310 return clr; 311 } 312 313 /** 314 * 指定の番号に対応した、色オブジェクトを返します。 315 * 316 * 以前は、ViewForm_ImageTimeBar#uniqColor() メソッドで、ユニークな色を 317 * 返していました。配列を超えると、自動的にランダムな色を出していましたが、 318 * 実質的にそのような色を出すのではなく、番号に応じて、繰り返すことにします。 319 * 割り当てた色の番号は、0:BLUE,1:CYAN,2:GRAY,3:GREEN,4:LIGHT_GRAY, 320 * 5:MAGENTA,6:DARK_GRAY,7:ORANGE,8:PINK,9:RED,10:YELLOW 321 * となっており、それを超えると、0:BLUE に戻ります。 322 * 323 * @og.rev 6.4.3.3 (2016/03/04) ViewForm_ImageTimeBar#uniqColor() メソッドから移動。 324 * @og.rev 6.9.9.2 (2018/09/18) 配列からリストに変更の対応 325 * 326 * @param no 内部で管理している色番号 327 * @return 色オブジェクト 328 */ 329 public static Color getColorInstance( final int no ) { 330// return CLR_ARY[no % CLR_ARY.length]; 331 return CLR_LIST.get( no % CLR_LIST.size() ); 332 } 333 334 /** 335 * 内部で管理している ColorMap のキー配列を返します。 336 * 337 * @og.rev 6.0.2.1 (2014/09/26) 新規追加 338 * 339 * @return キー配列 340 * @og.rtnNotNull 341 */ 342 public static String[] getColorKeys() { 343 return CLR_MAP.keySet().toArray( new String[CLR_MAP.size()] ); 344 } 345 346 /** 347 * 指定の番号に対応した、パステルカラーの色オブジェクトを返します。 348 * 349 * #getColorInstance(int) とほぼ同じ機能で、返すのは、パステルカラーの色オブジェクトです。 350 * https://www.colordic.org/p/ 351 * 352 * 12色のパステルカラーを、指定の番号に応じて、返します。 353 * 隣接する色は、できるだけ離れるようにしています。 354 * 355 * @og.rev 6.9.9.2 (2018/09/18) パステルカラーの色オブジェクト 356 * 357 * @param no 内部で管理している色番号 358 * @return パステルカラーの色オブジェクト 359 */ 360 public static Color getPastelColor( final int no ) { 361 return Color.decode( PSTL_KEY[no % PSTL_KEY.length] ); 362 } 363 364 /** 365 * 内部で管理している パステルカラー のキー配列を返します。 366 * 367 * @og.rev 6.9.9.2 (2018/09/18) パステルカラーの色オブジェクト 368 * 369 * @return パステルカラーのキー配列 370 */ 371 public static String[] getPastelColorKeys() { 372 return PSTL_KEY.clone(); 373 } 374}