001 /*--------------------------------------------------------------------------+ 002 $Id: ColorUtils.java 26283 2010-02-18 11:18:57Z juergens $ 003 | | 004 | Copyright 2005-2010 Technische Universitaet Muenchen | 005 | | 006 | Licensed under the Apache License, Version 2.0 (the "License"); | 007 | you may not use this file except in compliance with the License. | 008 | You may obtain a copy of the License at | 009 | | 010 | http://www.apache.org/licenses/LICENSE-2.0 | 011 | | 012 | Unless required by applicable law or agreed to in writing, software | 013 | distributed under the License is distributed on an "AS IS" BASIS, | 014 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 015 | See the License for the specific language governing permissions and | 016 | limitations under the License. | 017 +--------------------------------------------------------------------------*/ 018 package edu.tum.cs.commons.color; 019 020 import java.awt.Color; 021 import java.util.regex.Pattern; 022 023 import edu.tum.cs.commons.enums.EnumUtils; 024 025 /** 026 * Methods for handling colors. 027 * 028 * @author Benjamin Hummel 029 * @author $Author: juergens $ 030 * @version $Rev: 26283 $ 031 * @levd.rating GREEN Hash: 38B8ECE8FE52143FC23C834589C88499 032 */ 033 public class ColorUtils { 034 035 /** Pattern used for finding */ 036 private static Pattern HTML_COLOR_PATTERN = Pattern.compile("#[0-9a-f]{6}", 037 Pattern.CASE_INSENSITIVE); 038 039 /** 040 * Returns a color from a string. If the string could not be decoded, null 041 * is returned. This methods supports the html color format (i.e. #RRGGBB) 042 * and some predefined names (e.g. red, green, etc.). 043 */ 044 public static Color fromString(String s) { 045 046 if (HTML_COLOR_PATTERN.matcher(s).matches()) { 047 return Color.decode("0x" + s.substring(1)); 048 } 049 050 if (s.startsWith("ccsm-")) { 051 ECCSMColor color = EnumUtils.valueOfIgnoreCase(ECCSMColor.class, s 052 .substring(5)); 053 if (color != null) { 054 return color.getColor(); 055 } 056 } 057 058 EAWTColors color = EnumUtils.valueOfIgnoreCase(EAWTColors.class, s); 059 if (color != null) { 060 return color.getColor(); 061 } 062 063 return null; 064 } 065 066 /** List of colors defined in AWT used as a lookup table. */ 067 private static enum EAWTColors { 068 069 /** Red */ 070 RED(Color.RED), 071 072 /** Green */ 073 GREEN(Color.GREEN), 074 075 /** Blue */ 076 BLUE(Color.BLUE), 077 078 /** Yellow */ 079 YELLOW(Color.YELLOW), 080 081 /** Orange */ 082 ORANGE(Color.ORANGE), 083 084 /** White */ 085 WHITE(Color.WHITE), 086 087 /** Black */ 088 BLACK(Color.BLACK), 089 090 /** Gray */ 091 GRAY(Color.GRAY), 092 093 /** Cyan */ 094 CYAN(Color.CYAN), 095 096 /** Magenta */ 097 MAGENTA(Color.MAGENTA); 098 099 /** The color actual color. */ 100 private final Color color; 101 102 /** Constructor. */ 103 private EAWTColors(Color color) { 104 this.color = color; 105 } 106 107 /** Returns the color for a enum constant. */ 108 public Color getColor() { 109 return color; 110 } 111 } 112 }