Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: com/arranger/jarl/util/PaintUtil.java


1   package com.arranger.jarl.util;
2   
3   import org.w3c.dom.Element;
4   
5   import java.awt.*;
6   import java.lang.reflect.Field;
7   import java.util.HashMap;
8   import java.util.Map;
9   
10  /**
11   * PaintUtil created on Feb 21, 2003
12   */
13  public class PaintUtil {
14  
15      public static String PRIMARY_NAME = "color";
16      public static String DATA_NAME = "colorData";
17  
18      protected static boolean m_init = false;
19      protected static Map m_colorMap = new HashMap();
20      protected static Map m_nameColorMap = new HashMap();
21  
22      public static class Colors {
23  
24          public static final int OrangeRed = 0xFF2400;
25          public static final int MediumRed = 0xDB7093;
26          public static final int Red = 0xFF0000;
27          public static final int Scarlet = 0x8C1717;
28          public static final int VioletRed = 0xCC3299;
29          public static final int Orchid = 0xDB70DB;
30          public static final int MediumOrchid = 0x9370DB;
31          public static final int DarkOrchid = 0x9932CD;
32          public static final int DarkPlum = 0x871F78;
33          public static final int BlueViolet = 0x9F5F9F;
34          public static final int Fuchsia = 0xFF00FF;
35          public static final int Pink = 0xBC8F8F;
36          public static final int Plum = 0xEAADEA;
37          public static final int Violet = 0x4F2F4F;
38          public static final int SpicyPink = 0xFF1CAE;
39          public static final int DarkPurple = 0x871F78;
40          public static final int Purple = 0x8E236B;
41          public static final int MediumVioletRed = 0xDB7093;
42          public static final int NeonPink = 0xFF6E7C;
43          public static final int Salmon = 0x6F4242;
44          public static final int MidnightBlue = 0x2F2F4F;
45          public static final int DarkBlue = 0x23238E;
46          public static final int NewMidnightBlue = 0x00009C;
47          public static final int NeonBlue = 0x4DD4DFF;
48          public static final int RichBlue = 0x5959AB;
49          public static final int Sky = 0x3299CC;
50          public static final int SteelBlue = 0x236B8E;
51          public static final int SlateBlue = 0x007FFF;
52          public static final int Blue = 0x0000FF;
53          public static final int CadetBlue = 0x5F9F9F;
54          public static final int CornFlower = 0x42426F;
55          public static final int DarkSlate = 0x6B238E;
56          public static final int LightBlue = 0xC0D9D9;
57          public static final int DarkGreenCopper = 0x4A766E;
58          public static final int Firebrick = 0x8E2323;
59          public static final int Sienna = 0x8E6B23;
60          public static final int Orange = 0xFF7F00;
61          public static final int MediumGoldenrod = 0xEAEAAE;
62          public static final int MandarinOrange = 0xE47833;
63          public static final int Goldenrod = 0xDBDB70;
64          public static final int Coral = 0xFF7F00;
65          public static final int BrightGold = 0xD9D919;
66          public static final int Yellow = 0xFFFF00;
67          public static final int LimeGreen = 0x32CD32;
68          public static final int GreenYellow = 0x93DB70;
69          public static final int DarkOliveGreen = 0x4F4F2F;
70          public static final int YellowGreen = 0x99CC32;
71          public static final int SpringGreen = 0x00FF7F;
72          public static final int SeaGreen = 0x238E68;
73          public static final int LightGreen = 0x8FBC8F;
74          public static final int MediumSpringGreen = 0x7FFF00;
75          public static final int MediumSeaGreen = 0x426F42;
76          public static final int MediumForestGreen = 0x6B8E23;
77          public static final int ForestGreen = 0x238E23;
78          public static final int HunterGreen = 0x215EE21;
79          public static final int DarkGreen = 0x2F4F2F;
80          public static final int Green = 0x00FF00;
81          public static final int Aquamarine = 0x70DB93;
82          public static final int Aqua = 0x00FFFF;
83          public static final int MediumAquamarine = 0x32CD99;
84          public static final int MediumTurquoise = 0x70DBDB;
85          public static final int Turquoise = 0xADEAEA;
86          public static final int MediumSlateBlue = 0x7F00FF;
87          public static final int MediumBlue = 0x3232CD;
88          public static final int DarkTurquoise = 0x7093DB;
89          public static final int LightSteelBlue = 0x8F8FBD;
90          public static final int Brown = 0xA62A2A;
91          public static final int CoolCopper = 0xD98719;
92          public static final int Copper = 0xB87333;
93          public static final int Brass = 0xB5A642;
94          public static final int Bronze = 0x8C7853;
95          public static final int BronzeII = 0xA67D3D;
96          public static final int Gold = 0xCD7F32;
97          public static final int OldGold = 0xCFB53B;
98          public static final int Silver = 0xE6E8FA;
99          public static final int LightGray = 0xCDCDCD;
100         public static final int DustyRose = 0x856363;
101         public static final int DarkTan = 0x97694F;
102         public static final int Feldspar = 0xD19275;
103         public static final int Quartz = 0xD9D9F3;
104         public static final int NewTan = 0xEBC79E;
105         public static final int LightWood = 0xE9C2A6;
106         public static final int MediumWood = 0xA68064;
107         public static final int DarkWood = 0x855E42;
108         public static final int BakersChocolate = 0x5C3317;
109         public static final int DarkBrown = 0x5C4033;
110         public static final int GreenCopper = 0x527F76;
111         public static final int IndianRed = 0x215E21;
112         public static final int Khaki = 0x9F9F5F;
113         public static final int Chocolate = 0x6B4226;
114         public static final int Tan = 0xDB9370;
115         public static final int Thistle = 0xD8BFD8;
116         public static final int Wheat = 0xD8D8BF;
117         public static final int LightGrey = 0xA8A8A8;
118         public static final int DimGrey = 0x545454;
119         public static final int Grey = 0xC0C0C0;
120         public static final int DarkSlateGrey = 0x2F4F4F;
121         public static final int Black = 0x000000;
122         public static final int Gray = 0x08080;
123         public static final int Lime = 0x0FF00;
124         public static final int Maroon = 0x3F0000;
125         public static final int Navy = 0x00003F;
126         public static final int Olive = 0x008000;
127         public static final int White = 0xFFFFFF;
128         public static final int Teal = 0x000080;
129     }
130 
131 
132     /**
133      * Helper class for getting an instance of Paint
134      *
135      * @param element
136      * @param primaryName typically 'color'
137      * @param dataName typically 'colorData'
138      */
139     public static Paint getPaint(Element element, String primaryName, String dataName) {
140         Paint paint = null;
141         String colorName = element.getAttribute(primaryName);
142         if (!StringTools.isEmpty(colorName)) {
143             paint = getPaint(colorName);
144         } else {
145             String colorData = element.getAttribute(dataName);
146             if (!StringTools.isEmpty(colorData)) {
147                 int[] colors = StringTools.getIntArrayFromDelimitedString(colorData, ",");
148                 paint = new Color(colors[0], colors[1], colors[2]);
149             }
150         }
151         return paint;
152     }
153 
154     /**
155      * This will either be the value of a color ('black') or an rgb ('25, 25, 25);
156      */
157     public static Paint getPaintFromValue(String value) {
158         Paint paint = null;
159         if (value.indexOf(',') == -1) {
160             paint = getPaint(value);
161         } else {
162             int[] colors = StringTools.getIntArrayFromDelimitedString(value, ",");
163             paint = new Color(colors[0], colors[1], colors[2]);
164         }
165         return paint;
166     }
167 
168     /**
169      * Try to get a friendly name for this
170      * @param color
171      */
172     public static String getDisplayName(Color color) {
173         Object key = new Integer(color.getRed() << 16 | color.getGreen() << 8 | color.getBlue());
174         String name = (String) m_nameColorMap.get(key);
175         if (name != null) {
176             return name + " (" + color.getRed() + ", " + color.getGreen() + ", " + color.getBlue() + ")";
177         } else {
178             return color.toString();
179         }
180     }
181 
182     /**
183      * Loads color based on name
184      * @param paintName
185      * @see PaintUtil.Colors
186      */
187     public static Paint getPaint(String paintName) {
188         checkInit();
189         return (Paint) m_colorMap.get(paintName.toLowerCase());
190     }
191 
192     /**
193      * Smarter Interpolation of colors.
194      * @param startColor
195      * @param endColor
196      * @param pct the amount of time we are long from the start color to the end color
197      */
198     public static Color interpolatePaint(Color startColor, Color endColor, double pct) {
199         int red = (int) InterpolateUtil.interpolate(
200                 0,
201                 1,
202                 startColor.getRed(),
203                 endColor.getRed(),
204                 pct);
205 
206         int green = (int) InterpolateUtil.interpolate(
207                 0,
208                 1,
209                 startColor.getGreen(),
210                 endColor.getGreen(),
211                 pct);
212 
213         int blue = (int) InterpolateUtil.interpolate(
214                 0,
215                 1,
216                 startColor.getBlue(),
217                 endColor.getBlue(),
218                 pct);
219 
220         return new Color(red, green, blue);
221     }
222 
223     protected static void checkInit() {
224         if (!m_init) {
225             //iterate through all the fields in Colors
226             Field[] fields = Colors.class.getFields();
227             for (int index = 0; index < fields.length; index++) {
228                 Field field = fields[index];
229                 try {
230                     int rgb = field.getInt(Colors.class);
231                     m_colorMap.put(field.getName().toLowerCase(), new Color(rgb));
232                     m_nameColorMap.put(new Integer(rgb), field.getName().toLowerCase());
233                 } catch (Exception e) {
234                     e.printStackTrace();
235                 }
236             }
237             m_init = true;
238         }
239     }
240 }