001 /* 002 * Created by IntelliJ IDEA. 003 * User: Wei Wang 004 * Date: 2002-10-22 005 * Time: 20:12:14 006 * To change this template use Options | File Templates. 007 */ 008 009 package EVolve.util; 010 011 import java.awt.*; 012 import java.util.*; 013 014 public class ColorCache{ 015 private HashMap colorMap; 016 private Color[] defaultColors = { 017 new Color(51,153,204), new Color(51,204,153), new Color(153,204,51),new Color(153,51,204), 018 new Color(204,51,153), new Color(204,153,51), new Color(51,204,0),new Color(51,0,204), 019 new Color(204,0,51), new Color(204,51,0), new Color(0,51,204),new Color(0,204,51), 020 new Color(204,0,204), new Color(204,204,0), new Color(0,204,204),new Color(51,153,0), 021 new Color(51,0,153), new Color(153,0,51), new Color(153,51,0),new Color(0,51,153), 022 new Color(0,153,51), new Color(153,204,0), new Color(153,0,204),new Color(0,204,153), 023 new Color(0,153,204), new Color(204,0,153), new Color(204,153,0),new Color(151,255,151), 024 new Color(255,151,151), new Color(151,151,255), new Color(204,204,255),new Color(255,204,204), 025 new Color(204,255,204), new Color(251,151,180), new Color(251,180,151),new Color(151,180,251), 026 new Color(151,251,180), new Color(180,251,151), new Color(180,151,251),new Color(145,244,45), 027 new Color(145,45,244), new Color(45,244,145), new Color(45,145,244),new Color(244,145,45), 028 new Color(244,45,145), new Color(244,145,45), new Color(0,0,255),new Color(255,0,0), 029 new Color(0,255,0), new Color(130,28,247), new Color(130,247,28),new Color(247,28,130), 030 new Color(247,130,28), new Color(28,247,130), new Color(28,130,247),new Color(0,128,255), 031 new Color(0,255,128), new Color(255,128,0), new Color(255,0,128),new Color(128,0,255), 032 new Color(255,128,0), new Color(128,255,0), new Color(187,156,26),new Color(25,250,104) 033 }; 034 private int leftColor; 035 036 public ColorCache() { 037 colorMap = new HashMap(); 038 leftColor = defaultColors.length -1; 039 } 040 041 private Color getRandomColor() { 042 int sum = 0; 043 int rand[] = new int[3]; 044 045 if (leftColor>=0) { 046 return defaultColors[leftColor--]; 047 } 048 049 do { 050 while (sum<70) { 051 for (int i=0; i<rand.length;i++) { 052 rand[i] = 500; 053 while (rand[i]>255) { 054 rand[i] = (int)(java.lang.Math.random()*10000); 055 } 056 } 057 sum = rand[0] + rand[1] + rand[2]; 058 } 059 sum = 0; 060 } while (colorMap.containsValue(new Color(rand[0],rand[1],rand[2]))); 061 062 return new Color(rand[0],rand[1],rand[2]); 063 } 064 065 public Color getNextColor(int methodId) { 066 Color color; 067 if (!colorMap.containsKey(new Integer(methodId))) { 068 color = getRandomColor(); 069 colorMap.put(new Integer(methodId),color); 070 return color; 071 } 072 return (Color)colorMap.get(new Integer(methodId)); 073 } 074 075 public int getKeyFromColor(Color color) { 076 Iterator it = colorMap.keySet().iterator(); 077 int methodId = -1; 078 079 while (it.hasNext()) { 080 Integer key = (Integer)it.next(); 081 if (color != ((Color)colorMap.get(key))) continue; 082 083 methodId = key.intValue(); 084 return methodId; 085 } 086 return methodId; 087 } 088 }