/* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* * VisualizeUtils.java * Copyright (C) 2000 University of Waikato, Hamilton, New Zealand * */ package weka.gui.visualize; import weka.core.Utils; import java.util.Properties; import java.io.FileInputStream; import java.awt.Color; import javax.swing.JOptionPane; /** * This class contains utility routines for visualization * * @author Mark Hall (mhall@cs.waikato.ac.nz) * @version $Revision: 1.9 $ */ public class VisualizeUtils { /** The name of the properties file */ protected static String PROPERTY_FILE = "weka/gui/visualize/Visualize.props"; /** Contains the visualization properties */ protected static Properties VISUALIZE_PROPERTIES; /** Default maximum precision for the display of numeric values */ protected static int MAX_PRECISION = 10; static { try { VISUALIZE_PROPERTIES = Utils.readProperties(PROPERTY_FILE); String precision = VISUALIZE_PROPERTIES.getProperty("weka.gui.visualize.precision"); if (precision == null) { /* System.err.println("Warning: no configuration property found in" +PROPERTY_FILE +" for weka.gui.visualize.precision. Using" +" default instead.");*/ } else { MAX_PRECISION = Integer.parseInt(precision); // System.err.println("Setting numeric precision to: "+precision); } } catch (Exception ex) { JOptionPane.showMessageDialog(null, "VisualizeUtils: Could not read a visualization configuration file.\n" +"An example file is included in the Weka distribution.\n" +"This file should be named \"" + PROPERTY_FILE + "\" and\n" +"should be placed either in your user home (which is set\n" +"to \"" + System.getProperties().getProperty("user.home") + "\")\n" +"or the directory that java was started from\n", "Plot2D", JOptionPane.ERROR_MESSAGE); } } /** * Parses a string containing either a named colour or r,g,b values. * @param colourDef the string containing the named colour (or r,g,b) * @param defaultColour the colour to return if parsing fails * @return the Color corresponding to the string. */ public static Color processColour(String colourDef, Color defaultColour) { String colourDefBack = new String(colourDef); Color retC = defaultColour; if (colourDef.indexOf(",") >= 0) { // Looks like property value is in R, G, B format try { int index = colourDef.indexOf(","); int R = Integer.parseInt(colourDef.substring(0,index)); colourDef = colourDef.substring(index+1,colourDef.length()); index = colourDef.indexOf(","); int G = Integer.parseInt(colourDef.substring(0,index)); colourDef = colourDef.substring(index+1,colourDef.length()); int B = Integer.parseInt(colourDef); //System.err.println(R+" "+G+" "+B); retC = new Color(R,G,B); } catch (Exception ex) { System.err.println("VisualizeUtils: Problem parsing colour property " +"value ("+colourDefBack+")."); } } else { // assume that the string is the name of a default Color.color if (colourDef.compareTo("black") == 0) { retC = Color.black; } else if (colourDef.compareTo("blue") == 0) { retC = Color.blue; } else if (colourDef.compareTo("cyan") == 0) { retC = Color.cyan; } else if (colourDef.compareTo("darkGray") == 0) { retC = Color.darkGray; } else if (colourDef.compareTo("gray") == 0) { retC = Color.gray; } else if (colourDef.compareTo("green") == 0) { retC = Color.green; } else if (colourDef.compareTo("lightGray") == 0) { retC = Color.lightGray; } else if (colourDef.compareTo("magenta") == 0) { retC = Color.magenta; } else if (colourDef.compareTo("orange") == 0) { retC = Color.orange; } else if (colourDef.compareTo("pink") == 0) { retC = Color.pink; } else if (colourDef.compareTo("red") == 0) { retC = Color.red; } else if (colourDef.compareTo("white") == 0) { retC = Color.white; } else if (colourDef.compareTo("yellow") == 0) { retC = Color.yellow; } else { System.err.println("VisualizeUtils: colour property name not recognized " +"("+colourDefBack+")."); } } return retC; } }