From: <mu...@us...> - 2007-06-20 16:28:44
|
Revision: 41 http://jfreechart.svn.sourceforge.net/jfreechart/?rev=41&view=rev Author: mungady Date: 2007-06-20 09:28:38 -0700 (Wed, 20 Jun 2007) Log Message: ----------- New classes copied from JCommon. Added Paths: ----------- trunk/source/org/jfree/chart/util/ArrayUtilities.java trunk/source/org/jfree/chart/util/ObjectUtilities.java trunk/source/org/jfree/chart/util/PublicCloneable.java trunk/source/org/jfree/chart/util/ShapeUtilities.java Added: trunk/source/org/jfree/chart/util/ArrayUtilities.java =================================================================== --- trunk/source/org/jfree/chart/util/ArrayUtilities.java (rev 0) +++ trunk/source/org/jfree/chart/util/ArrayUtilities.java 2007-06-20 16:28:38 UTC (rev 41) @@ -0,0 +1,202 @@ +/* =========================================================== + * JFreeChart : a free chart library for the Java(tm) platform + * =========================================================== + * + * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors. + * + * Project Info: http://www.jfree.org/jfreechart/index.html + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This library 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 Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + * USA. + * + * [Java is a trademark or registered trademark of Sun Microsystems, Inc. + * in the United States and other countries.] + * + * ------------------- + * ArrayUtilities.java + * ------------------- + * (C) Copyright 2003-2007, by Object Refinery Limited. + * + * Original Author: David Gilbert (for Object Refinery Limited); + * Contributor(s): Thomas Morgner; + * + * $Id: ArrayUtilities.java,v 1.6 2006/07/04 10:20:40 taqua Exp $ + * + * Changes + * ------- + * 21-Aug-2003 : Version 1 (DG); + * 04-Oct-2004 : Renamed ArrayUtils --> ArrayUtilities (DG); + * 20-Jun-2007 : Copied from JCommon (DG); + * + */ + +package org.jfree.chart.util; + +import java.util.Arrays; + +/** + * Utility methods for working with arrays. + */ +public class ArrayUtilities { + + /** + * Private constructor prevents object creation. + */ + private ArrayUtilities() { + } + + /** + * Clones a two dimensional array of floats. + * + * @param array the array. + * + * @return A clone of the array. + */ + public static float[][] clone(float[][] array) { + + if (array == null) { + return null; + } + float[][] result = new float[array.length][]; + System.arraycopy(array, 0, result, 0, array.length); + + for (int i = 0; i < array.length; i++) { + float[] child = array[i]; + float[] copychild = new float[child.length]; + System.arraycopy(child, 0, copychild, 0, child.length); + result[i] = copychild; + } + + return result; + + } + + /** + * Returns <code>true</code> if all the references in <code>array1</code> + * are equal to all the references in <code>array2</code> (two + * <code>null</code> references are considered equal for this test). + * + * @param array1 the first array (<code>null</code> permitted). + * @param array2 the second array (<code>null</code> permitted). + * + * @return A boolean. + */ + public static boolean equalReferencesInArrays(Object[] array1, + Object[] array2) { + if (array1 == null) { + return (array2 == null); + } + if (array2 == null) { + return false; + } + if (array1.length != array2.length) { + return false; + } + for (int i = 0; i < array1.length; i++) { + if (array1[i] == null) { + if (array2[i] != null) { + return false; + } + } + if (array2[i] == null) { + if (array1[i] != null) { + return false; + } + } + if (array1[i] != array2[i]) { + return false; + } + } + return true; + } + + /** + * Tests two float arrays for equality. + * + * @param array1 the first array (<code>null</code> permitted). + * @param array2 the second arrray (<code>null</code> permitted). + * + * @return A boolean. + */ + public static boolean equal(float[][] array1, float[][] array2) { + if (array1 == null) { + return (array2 == null); + } + + if (array2 == null) { + return false; + } + + if (array1.length != array2.length) { + return false; + } + + for (int i = 0; i < array1.length; i++) { + if (!Arrays.equals(array1[i], array2[i])) { + return false; + } + } + return true; + } + + /** + * Returns <code>true</code> if any two items in the array are equal to + * one another. Any <code>null</code> values in the array are ignored. + * + * @param array the array to check. + * + * @return A boolean. + */ + public static boolean hasDuplicateItems(Object[] array) { + for (int i = 0; i < array.length; i++) { + for (int j = 0; j < i; j++) { + Object o1 = array[i]; + Object o2 = array[j]; + if (o1 != null && o2 != null) { + if (o1.equals(o2)) { + return true; + } + } + } + } + return false; + } + + public static int compareVersionArrays(Comparable[] a1, Comparable[] a2) + { + int length = Math.min (a1.length, a2.length); + for (int i = 0; i < length; i++) + { + Comparable o1 = a1[i]; + Comparable o2 = a2[i]; + if (o1 == null && o2 == null) { + // cannot decide .. + continue; + } + if (o1 == null) { + return 1; + } + if (o2 == null) { + return -1; + } + int retval = o1.compareTo(o2); + if (retval != 0) { + return retval; + } + } + return 0; + } + +} Added: trunk/source/org/jfree/chart/util/ObjectUtilities.java =================================================================== --- trunk/source/org/jfree/chart/util/ObjectUtilities.java (rev 0) +++ trunk/source/org/jfree/chart/util/ObjectUtilities.java 2007-06-20 16:28:38 UTC (rev 41) @@ -0,0 +1,482 @@ +/* =========================================================== + * JFreeChart : a free chart library for the Java(tm) platform + * =========================================================== + * + * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors. + * + * Project Info: http://www.jfree.org/jfreechart/index.html + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This library 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 Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + * USA. + * + * [Java is a trademark or registered trademark of Sun Microsystems, Inc. + * in the United States and other countries.] + * + * -------------------- + * ObjectUtilities.java + * -------------------- + * (C) Copyright 2003-2007, by Object Refinery Limited and Contributors. + * + * Original Author: David Gilbert (for Object Refinery Limited); + * Contributor(s): Thomas Morgner; + * + * $Id: ObjectUtilities.java,v 1.17 2006/12/03 15:33:33 taqua Exp $ + * + * Changes + * ------- + * 25-Mar-2003 : Version 1 (DG); + * 15-Sep-2003 : Fixed bug in clone(List) method (DG); + * 25-Nov-2004 : Modified clone(Object) method to fail with objects that + * cannot be cloned, added new deepClone(Collection) method. + * Renamed ObjectUtils --> ObjectUtilities (DG); + * 11-Jan-2005 : Removed deprecated code in preparation for 1.0.0 release (DG); + * 18-Aug-2005 : Added casts to suppress compiler warnings, as suggested in + * patch 1260622 (DG); + * 20-Jun-2007 : Copied from JCommon (DG); + * + */ + +package org.jfree.chart.util; + +import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.net.URL; +import java.util.Collection; +import java.util.Iterator; +import java.util.ArrayList; +import java.util.StringTokenizer; + +/** + * A collection of useful static utility methods for handling classes and object + * instantiation. + */ +public final class ObjectUtilities { + + /** + * A constant for using the TheadContext as source for the classloader. + */ + public static final String THREAD_CONTEXT = "ThreadContext"; + /** + * A constant for using the ClassContext as source for the classloader. + */ + public static final String CLASS_CONTEXT = "ClassContext"; + + /** + * By default use the thread context. + */ + private static String classLoaderSource = THREAD_CONTEXT; + /** + * The custom classloader to be used (if not null). + */ + private static ClassLoader classLoader; + + /** + * Default constructor - private. + */ + private ObjectUtilities() { + } + + /** + * Returns the internal configuration entry, whether the classloader of + * the thread context or the context classloader should be used. + * + * @return the classloader source, either THREAD_CONTEXT or CLASS_CONTEXT. + */ + public static String getClassLoaderSource() { + return classLoaderSource; + } + + /** + * Defines the internal configuration entry, whether the classloader of + * the thread context or the context classloader should be used. + * <p/> + * This setting can only be defined using the API, there is no safe way + * to put this into an external configuration file. + * + * @param classLoaderSource the classloader source, + * either THREAD_CONTEXT or CLASS_CONTEXT. + */ + public static void setClassLoaderSource(final String classLoaderSource) { + ObjectUtilities.classLoaderSource = classLoaderSource; + } + + /** + * Returns <code>true</code> if the two objects are equal OR both + * <code>null</code>. + * + * @param o1 object 1 (<code>null</code> permitted). + * @param o2 object 2 (<code>null</code> permitted). + * @return <code>true</code> or <code>false</code>. + */ + public static boolean equal(final Object o1, final Object o2) { + if (o1 == o2) { + return true; + } + if (o1 != null) { + return o1.equals(o2); + } + else { + return false; + } + } + + /** + * Returns a hash code for an object, or zero if the object is + * <code>null</code>. + * + * @param object the object (<code>null</code> permitted). + * @return The object's hash code (or zero if the object is + * <code>null</code>). + */ + public static int hashCode(final Object object) { + int result = 0; + if (object != null) { + result = object.hashCode(); + } + return result; + } + + /** + * Returns a clone of the specified object, if it can be cloned, otherwise + * throws a CloneNotSupportedException. + * + * @param object the object to clone (<code>null</code> not permitted). + * @return A clone of the specified object. + * @throws CloneNotSupportedException if the object cannot be cloned. + */ + public static Object clone(final Object object) + throws CloneNotSupportedException { + if (object == null) { + throw new IllegalArgumentException("Null 'object' argument."); + } + if (object instanceof PublicCloneable) { + final PublicCloneable pc = (PublicCloneable) object; + return pc.clone(); + } + else { + try { + final Method method = object.getClass().getMethod("clone", + (Class[]) null); + if (Modifier.isPublic(method.getModifiers())) { + return method.invoke(object, (Object[]) null); + } + } + catch (NoSuchMethodException e) { + e.printStackTrace(); + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + catch (InvocationTargetException e) { + e.printStackTrace(); + } + } + throw new CloneNotSupportedException("Failed to clone."); + } + + /** + * Returns a new collection containing clones of all the items in the + * specified collection. + * + * @param collection the collection (<code>null</code> not permitted). + * @return A new collection containing clones of all the items in the + * specified collection. + * @throws CloneNotSupportedException if any of the items in the collection + * cannot be cloned. + */ + public static Collection deepClone(final Collection collection) + throws CloneNotSupportedException { + + if (collection == null) { + throw new IllegalArgumentException("Null 'collection' argument."); + } + // all JDK-Collections are cloneable ... + // and if the collection is not clonable, then we should throw + // a CloneNotSupportedException anyway ... + final Collection result + = (Collection) ObjectUtilities.clone(collection); + result.clear(); + final Iterator iterator = collection.iterator(); + while (iterator.hasNext()) { + final Object item = iterator.next(); + if (item != null) { + result.add(clone(item)); + } + else { + result.add(null); + } + } + return result; + } + + /** + * Redefines the custom classloader. + * + * @param classLoader the new classloader or null to use the default. + */ + public synchronized static void setClassLoader( + final ClassLoader classLoader) { + ObjectUtilities.classLoader = classLoader; + } + + /** + * Returns the custom classloader or null, if no custom classloader is defined. + * + * @return the custom classloader or null to use the default. + */ + public static ClassLoader getClassLoader() { + return classLoader; + } + + /** + * Returns the classloader, which was responsible for loading the given + * class. + * + * @param c the classloader, either an application class loader or the + * boot loader. + * @return the classloader, never null. + * @throws SecurityException if the SecurityManager does not allow to grab + * the context classloader. + */ + public synchronized static ClassLoader getClassLoader(final Class c) { + if (classLoader != null) { + return classLoader; + } + if ("ThreadContext".equals(classLoaderSource)) { + final ClassLoader threadLoader + = Thread.currentThread().getContextClassLoader(); + if (threadLoader != null) { + return threadLoader; + } + } + + // Context classloader - do not cache .. + final ClassLoader applicationCL = c.getClassLoader(); + if (applicationCL == null) { + return ClassLoader.getSystemClassLoader(); + } + else { + return applicationCL; + } + } + + + /** + * Returns the resource specified by the <strong>absolute</strong> name. + * + * @param name the name of the resource + * @param c the source class + * @return the url of the resource or null, if not found. + */ + public static URL getResource(final String name, final Class c) { + final ClassLoader cl = getClassLoader(c); + if (cl == null) { + return null; + } + return cl.getResource(name); + } + + /** + * Returns the resource specified by the <strong>relative</strong> name. + * + * @param name the name of the resource relative to the given class + * @param c the source class + * @return the url of the resource or null, if not found. + */ + public static URL getResourceRelative(final String name, final Class c) { + final ClassLoader cl = getClassLoader(c); + final String cname = convertName(name, c); + if (cl == null) { + return null; + } + return cl.getResource(cname); + } + + /** + * Transform the class-relative resource name into a global name by + * appending it to the classes package name. If the name is already a + * global name (the name starts with a "/"), then the name is returned + * unchanged. + * + * @param name the resource name + * @param c the class which the resource is relative to + * @return the tranformed name. + */ + private static String convertName(final String name, Class c) { + if (name.startsWith("/")) { + // strip leading slash.. + return name.substring(1); + } + + // we cant work on arrays, so remove them ... + while (c.isArray()) { + c = c.getComponentType(); + } + // extract the package ... + final String baseName = c.getName(); + final int index = baseName.lastIndexOf('.'); + if (index == -1) { + return name; + } + + final String pkgName = baseName.substring(0, index); + return pkgName.replace('.', '/') + "/" + name; + } + + /** + * Returns the inputstream for the resource specified by the + * <strong>absolute</strong> name. + * + * @param name the name of the resource + * @param context the source class + * @return the url of the resource or null, if not found. + */ + public static InputStream getResourceAsStream(final String name, + final Class context) { + final URL url = getResource(name, context); + if (url == null) { + return null; + } + + try { + return url.openStream(); + } + catch (IOException e) { + return null; + } + } + + /** + * Returns the inputstream for the resource specified by the + * <strong>relative</strong> name. + * + * @param name the name of the resource relative to the given class + * @param context the source class + * @return the url of the resource or null, if not found. + */ + public static InputStream getResourceRelativeAsStream + (final String name, final Class context) { + final URL url = getResourceRelative(name, context); + if (url == null) { + return null; + } + + try { + return url.openStream(); + } + catch (IOException e) { + return null; + } + } + + /** + * Tries to create a new instance of the given class. This is a short cut + * for the common bean instantiation code. + * + * @param className the class name as String, never null. + * @param source the source class, from where to get the classloader. + * @return the instantiated object or null, if an error occured. + */ + public static Object loadAndInstantiate(final String className, + final Class source) { + try { + final ClassLoader loader = getClassLoader(source); + final Class c = loader.loadClass(className); + return c.newInstance(); + } + catch (Exception e) { + return null; + } + } + + /** + * Tries to create a new instance of the given class. This is a short cut + * for the common bean instantiation code. This method is a type-safe method + * and will not instantiate the class unless it is an instance of the given + * type. + * + * @param className the class name as String, never null. + * @param source the source class, from where to get the classloader. + * @return the instantiated object or null, if an error occured. + */ + public static Object loadAndInstantiate(final String className, + final Class source, + final Class type) { + try { + final ClassLoader loader = getClassLoader(source); + final Class c = loader.loadClass(className); + if (type.isAssignableFrom(c)) { + return c.newInstance(); + } + } + catch (Exception e) { + return null; + } + return null; + } + + + public static boolean isJDK14() { + final ClassLoader loader = getClassLoader(ObjectUtilities.class); + if (loader != null) { + try { + loader.loadClass("java.util.RandomAccess"); + return true; + } + catch (ClassNotFoundException e) { + return false; + } + catch(Exception e) { + // do nothing, but do not crash ... + } + } + // OK, the quick and dirty, but secure way failed. Lets try it + // using the standard way. + try { + final String version = System.getProperty + ("java.vm.specification.version"); + // parse the beast... + if (version == null) { + return false; + } + + String[] versions = parseVersions(version); + String[] target = new String[]{ "1", "4" }; + return (ArrayUtilities.compareVersionArrays(versions, target) >= 0); + } + catch(Exception e) { + return false; + } + } + + private static String[] parseVersions (String version) + { + if (version == null) + { + return new String[0]; + } + + final ArrayList versions = new ArrayList(); + StringTokenizer strtok = new StringTokenizer(version, "."); + while (strtok.hasMoreTokens()) + { + versions.add (strtok.nextToken()); + } + return (String[]) versions.toArray(new String[versions.size()]); + } +} Added: trunk/source/org/jfree/chart/util/PublicCloneable.java =================================================================== --- trunk/source/org/jfree/chart/util/PublicCloneable.java (rev 0) +++ trunk/source/org/jfree/chart/util/PublicCloneable.java 2007-06-20 16:28:38 UTC (rev 41) @@ -0,0 +1,61 @@ +/* =========================================================== + * JFreeChart : a free chart library for the Java(tm) platform + * =========================================================== + * + * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors. + * + * Project Info: http://www.jfree.org/jfreechart/index.html + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This library 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 Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + * USA. + * + * [Java is a trademark or registered trademark of Sun Microsystems, Inc. + * in the United States and other countries.] + * + * -------------------- + * PublicCloneable.java + * -------------------- + * (C) Copyright 2003-2007, by Object Refinery Limited. + * + * Original Author: David Gilbert (for Object Refinery Limited); + * Contributor(s): -; + * + * $Id: PublicCloneable.java,v 1.3 2005/10/18 13:24:19 mungady Exp $ + * + * Changes + * ------- + * 18-Aug-2003 : Version 1 (DG); + * 20-Jun-2007 : Copied from JCommon (DG); + * + */ + +package org.jfree.chart.util; + +/** + * An interface that exposes the clone() method. + */ +public interface PublicCloneable extends Cloneable { + + /** + * Returns a clone of the object. + * + * @return A clone. + * + * @throws CloneNotSupportedException if cloning is not supported for some + * reason. + */ + public Object clone() throws CloneNotSupportedException; + +} Added: trunk/source/org/jfree/chart/util/ShapeUtilities.java =================================================================== --- trunk/source/org/jfree/chart/util/ShapeUtilities.java (rev 0) +++ trunk/source/org/jfree/chart/util/ShapeUtilities.java 2007-06-20 16:28:38 UTC (rev 41) @@ -0,0 +1,599 @@ +/* =========================================================== + * JFreeChart : a free chart library for the Java(tm) platform + * =========================================================== + * + * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors. + * + * Project Info: http://www.jfree.org/jfreechart/index.html + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This library 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 Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + * USA. + * + * [Java is a trademark or registered trademark of Sun Microsystems, Inc. + * in the United States and other countries.] + * + * ------------------- + * ShapeUtilities.java + * ------------------- + * (C)opyright 2003-2007, by Object Refinery Limited and Contributors. + * + * Original Author: David Gilbert (for Object Refinery Limited); + * Contributor(s): -; + * + * $Id: ShapeUtilities.java,v 1.17 2005/11/02 16:31:50 mungady Exp $ + * + * Changes + * ------- + * 13-Aug-2003 : Version 1 (DG); + * 16-Mar-2004 : Moved rotateShape() from RefineryUtilities.java to here (DG); + * 13-May-2004 : Added new shape creation methods (DG); + * 30-Sep-2004 : Added createLineRegion() method (DG); + * Moved drawRotatedShape() method from RefineryUtilities class + * to this class (DG); + * 04-Oct-2004 : Renamed ShapeUtils --> ShapeUtilities (DG); + * 26-Oct-2004 : Added a method to test the equality of two Line2D + * instances (DG); + * 10-Nov-2004 : Added new translateShape() and equal(Ellipse2D, Ellipse2D) + * methods (DG); + * 11-Nov-2004 : Renamed translateShape() --> createTranslatedShape() (DG); + * 07-Jan-2005 : Minor Javadoc fix (DG); + * 11-Jan-2005 : Removed deprecated code in preparation for 1.0.0 release (DG); + * 21-Jan-2005 : Modified return type of RectangleAnchor.coordinates() + * method (DG); + * 22-Feb-2005 : Added equality tests for Arc2D and GeneralPath (DG); + * 16-Mar-2005 : Fixed bug where equal(Shape, Shape) fails for two Polygon + * instances (DG); + * 20-Jun-2007 : Copied from JCommon (DG); + * + */ + +package org.jfree.chart.util; + +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.Shape; +import java.awt.geom.AffineTransform; +import java.awt.geom.Arc2D; +import java.awt.geom.Ellipse2D; +import java.awt.geom.GeneralPath; +import java.awt.geom.Line2D; +import java.awt.geom.PathIterator; +import java.awt.geom.Point2D; +import java.awt.geom.Rectangle2D; +import java.util.Arrays; + +/** + * Utility methods for {@link Shape} objects. + */ +public class ShapeUtilities { + + /** + * Prevents instantiation. + */ + private ShapeUtilities() { + } + + /** + * Returns a clone of the specified shape, or <code>null</code>. At the + * current time, this method supports cloning for instances of + * <code>Line2D</code>, <code>RectangularShape</code>, <code>Area</code> + * and <code>GeneralPath</code>. + * <p> + * <code>RectangularShape</code> includes <code>Arc2D</code>, + * <code>Ellipse2D</code>, <code>Rectangle2D</code>, + * <code>RoundRectangle2D</code>. + * + * @param shape the shape to clone (<code>null</code> permitted, + * returns <code>null</code>). + * + * @return A clone or <code>null</code>. + */ + public static Shape clone(Shape shape) { + + if (shape instanceof Cloneable) { + try { + return (Shape) ObjectUtilities.clone(shape); + } + catch (CloneNotSupportedException cnse) { + } + } + Shape result = null; + return result; + } + + /** + * Tests two shapes for equality. If both shapes are <code>null</code>, + * this method will return <code>true</code>. + * <p> + * In the current implementation, the following shapes are supported: + * <code>Ellipse2D</code>, <code>Line2D</code> and <code>Rectangle2D</code> + * (implicit). + * + * @param s1 the first shape (<code>null</code> permitted). + * @param s2 the second shape (<code>null</code> permitted). + * + * @return A boolean. + */ + public static boolean equal(Shape s1, Shape s2) { + if (s1 instanceof Line2D && s2 instanceof Line2D) { + return equal((Line2D) s1, (Line2D) s2); + } + else if (s1 instanceof Ellipse2D && s2 instanceof Ellipse2D) { + return equal((Ellipse2D) s1, (Ellipse2D) s2); + } + else if (s1 instanceof Arc2D && s2 instanceof Arc2D) { + return equal((Arc2D) s1, (Arc2D) s2); + } + else if (s1 instanceof Polygon && s2 instanceof Polygon) { + return equal((Polygon) s1, (Polygon) s2); + } + else if (s1 instanceof GeneralPath && s2 instanceof GeneralPath) { + return equal((GeneralPath) s1, (GeneralPath) s2); + } + else { + // this will handle Rectangle2D... + return ObjectUtilities.equal(s1, s2); + } + } + + /** + * Compares two lines are returns <code>true</code> if they are equal or + * both <code>null</code>. + * + * @param l1 the first line (<code>null</code> permitted). + * @param l2 the second line (<code>null</code> permitted). + * + * @return A boolean. + */ + public static boolean equal(Line2D l1, Line2D l2) { + if (l1 == null) { + return (l2 == null); + } + if (l2 == null) { + return false; + } + if (!l1.getP1().equals(l2.getP1())) { + return false; + } + if (!l1.getP2().equals(l2.getP2())) { + return false; + } + return true; + } + + /** + * Compares two ellipses and returns <code>true</code> if they are equal or + * both <code>null</code>. + * + * @param e1 the first ellipse (<code>null</code> permitted). + * @param e2 the second ellipse (<code>null</code> permitted). + * + * @return A boolean. + */ + public static boolean equal(Ellipse2D e1, Ellipse2D e2) { + if (e1 == null) { + return (e2 == null); + } + if (e2 == null) { + return false; + } + if (!e1.getFrame().equals(e2.getFrame())) { + return false; + } + return true; + } + + /** + * Compares two arcs and returns <code>true</code> if they are equal or + * both <code>null</code>. + * + * @param a1 the first arc (<code>null</code> permitted). + * @param a2 the second arc (<code>null</code> permitted). + * + * @return A boolean. + */ + public static boolean equal(Arc2D a1, Arc2D a2) { + if (a1 == null) { + return (a2 == null); + } + if (a2 == null) { + return false; + } + if (!a1.getFrame().equals(a2.getFrame())) { + return false; + } + if (a1.getAngleStart() != a2.getAngleStart()) { + return false; + } + if (a1.getAngleExtent() != a2.getAngleExtent()) { + return false; + } + if (a1.getArcType() != a2.getArcType()) { + return false; + } + return true; + } + + /** + * Tests two polygons for equality. If both are <code>null</code> this + * method returns <code>true</code>. + * + * @param p1 polygon 1 (<code>null</code> permitted). + * @param p2 polygon 2 (<code>null</code> permitted). + * + * @return A boolean. + */ + public static boolean equal(Polygon p1, Polygon p2) { + if (p1 == null) { + return (p2 == null); + } + if (p2 == null) { + return false; + } + if (p1.npoints != p2.npoints) { + return false; + } + if (!Arrays.equals(p1.xpoints, p2.xpoints)) { + return false; + } + if (!Arrays.equals(p1.ypoints, p2.ypoints)) { + return false; + } + return true; + } + + /** + * Tests two polygons for equality. If both are <code>null</code> this + * method returns <code>true</code>. + * + * @param p1 path 1 (<code>null</code> permitted). + * @param p2 path 2 (<code>null</code> permitted). + * + * @return A boolean. + */ + public static boolean equal(GeneralPath p1, GeneralPath p2) { + if (p1 == null) { + return (p2 == null); + } + if (p2 == null) { + return false; + } + if (p1.getWindingRule() != p2.getWindingRule()) { + return false; + } + PathIterator iterator1 = p1.getPathIterator(null); + PathIterator iterator2 = p1.getPathIterator(null); + double[] d1 = new double[6]; + double[] d2 = new double[6]; + boolean done = iterator1.isDone() && iterator2.isDone(); + while (!done) { + if (iterator1.isDone() != iterator2.isDone()) { + return false; + } + int seg1 = iterator1.currentSegment(d1); + int seg2 = iterator2.currentSegment(d2); + if (seg1 != seg2) { + return false; + } + if (!Arrays.equals(d1, d2)) { + return false; + } + iterator1.next(); + iterator2.next(); + done = iterator1.isDone() && iterator2.isDone(); + } + return true; + } + + /** + * Creates and returns a translated shape. + * + * @param shape the shape (<code>null</code> not permitted). + * @param transX the x translation (in Java2D space). + * @param transY the y translation (in Java2D space). + * + * @return The translated shape. + */ + public static Shape createTranslatedShape(Shape shape, + double transX, + double transY) { + if (shape == null) { + throw new IllegalArgumentException("Null 'shape' argument."); + } + AffineTransform transform = AffineTransform.getTranslateInstance( + transX, transY); + return transform.createTransformedShape(shape); + } + + /** + * Translates a shape to a new location such that the anchor point + * (relative to the rectangular bounds of the shape) aligns with the + * specified (x, y) coordinate in Java2D space. + * + * @param shape the shape (<code>null</code> not permitted). + * @param anchor the anchor (<code>null</code> not permitted). + * @param locationX the x-coordinate (in Java2D space). + * @param locationY the y-coordinate (in Java2D space). + * + * @return A new and translated shape. + */ + public static Shape createTranslatedShape(Shape shape, + RectangleAnchor anchor, + double locationX, + double locationY) { + if (shape == null) { + throw new IllegalArgumentException("Null 'shape' argument."); + } + if (anchor == null) { + throw new IllegalArgumentException("Null 'anchor' argument."); + } + Point2D anchorPoint = RectangleAnchor.coordinates(shape.getBounds2D(), + anchor); + AffineTransform transform = AffineTransform.getTranslateInstance( + locationX - anchorPoint.getX(), locationY - anchorPoint.getY()); + return transform.createTransformedShape(shape); + } + + /** + * Rotates a shape about the specified coordinates. + * + * @param base the shape (<code>null</code> permitted, returns + * <code>null</code>). + * @param angle the angle (in radians). + * @param x the x coordinate for the rotation point (in Java2D space). + * @param y the y coordinate for the rotation point (in Java2D space). + * + * @return the rotated shape. + */ + public static Shape rotateShape(Shape base, double angle, + float x, float y) { + if (base == null) { + return null; + } + AffineTransform rotate = AffineTransform.getRotateInstance(angle, x, y); + Shape result = rotate.createTransformedShape(base); + return result; + } + + /** + * Draws a shape with the specified rotation about <code>(x, y)</code>. + * + * @param g2 the graphics device (<code>null</code> not permitted). + * @param shape the shape (<code>null</code> not permitted). + * @param angle the angle (in radians). + * @param x the x coordinate for the rotation point. + * @param y the y coordinate for the rotation point. + */ + public static void drawRotatedShape(Graphics2D g2, Shape shape, + double angle, float x, float y) { + + AffineTransform saved = g2.getTransform(); + AffineTransform rotate = AffineTransform.getRotateInstance(angle, x, y); + g2.transform(rotate); + g2.draw(shape); + g2.setTransform(saved); + + } + + /** A useful constant used internally. */ + private static final float SQRT2 = (float) Math.pow(2.0, 0.5); + + /** + * Creates a diagonal cross shape. + * + * @param l the length of each 'arm'. + * @param t the thickness. + * + * @return A diagonal cross shape. + */ + public static Shape createDiagonalCross(float l, float t) { + GeneralPath p0 = new GeneralPath(); + p0.moveTo(-l - t, -l + t); + p0.lineTo(-l + t, -l - t); + p0.lineTo(0.0f, -t * SQRT2); + p0.lineTo(l - t, -l - t); + p0.lineTo(l + t, -l + t); + p0.lineTo(t * SQRT2, 0.0f); + p0.lineTo(l + t, l - t); + p0.lineTo(l - t, l + t); + p0.lineTo(0.0f, t * SQRT2); + p0.lineTo(-l + t, l + t); + p0.lineTo(-l - t, l - t); + p0.lineTo(-t * SQRT2, 0.0f); + p0.closePath(); + return p0; + } + + /** + * Creates a diagonal cross shape. + * + * @param l the length of each 'arm'. + * @param t the thickness. + * + * @return A diagonal cross shape. + */ + public static Shape createRegularCross(float l, float t) { + GeneralPath p0 = new GeneralPath(); + p0.moveTo(-l, t); + p0.lineTo(-t, t); + p0.lineTo(-t, l); + p0.lineTo(t, l); + p0.lineTo(t, t); + p0.lineTo(l, t); + p0.lineTo(l, -t); + p0.lineTo(t, -t); + p0.lineTo(t, -l); + p0.lineTo(-t, -l); + p0.lineTo(-t, -t); + p0.lineTo(-l, -t); + p0.closePath(); + return p0; + } + + /** + * Creates a diamond shape. + * + * @param s the size factor (equal to half the height of the diamond). + * + * @return A diamond shape. + */ + public static Shape createDiamond(float s) { + GeneralPath p0 = new GeneralPath(); + p0.moveTo(0.0f, -s); + p0.lineTo(s, 0.0f); + p0.lineTo(0.0f, s); + p0.lineTo(-s, 0.0f); + p0.closePath(); + return p0; + } + + /** + * Creates a triangle shape that points upwards. + * + * @param s the size factor (equal to half the height of the triangle). + * + * @return A triangle shape. + */ + public static Shape createUpTriangle(float s) { + GeneralPath p0 = new GeneralPath(); + p0.moveTo(0.0f, -s); + p0.lineTo(s, s); + p0.lineTo(-s, s); + p0.closePath(); + return p0; + } + + /** + * Creates a triangle shape that points downwards. + * + * @param s the size factor (equal to half the height of the triangle). + * + * @return A triangle shape. + */ + public static Shape createDownTriangle(float s) { + GeneralPath p0 = new GeneralPath(); + p0.moveTo(0.0f, s); + p0.lineTo(s, -s); + p0.lineTo(-s, -s); + p0.closePath(); + return p0; + } + + /** + * Creates a region surrounding a line segment by 'widening' the line + * segment. A typical use for this method is the creation of a + * 'clickable' region for a line that is displayed on-screen. + * + * @param line the line (<code>null</code> not permitted). + * @param width the width of the region. + * + * @return A region that surrounds the line. + */ + public static Shape createLineRegion(Line2D line, float width) { + GeneralPath result = new GeneralPath(); + float x1 = (float) line.getX1(); + float x2 = (float) line.getX2(); + float y1 = (float) line.getY1(); + float y2 = (float) line.getY2(); + if ((x2 - x1) != 0.0) { + double theta = Math.atan((y2 - y1) / (x2 - x1)); + float dx = (float) Math.sin(theta) * width; + float dy = (float) Math.cos(theta) * width; + result.moveTo(x1 - dx, y1 + dy); + result.lineTo(x1 + dx, y1 - dy); + result.lineTo(x2 + dx, y2 - dy); + result.lineTo(x2 - dx, y2 + dy); + result.closePath(); + } + else { + // special case, vertical line + result.moveTo(x1 - width / 2.0f, y1); + result.lineTo(x1 + width / 2.0f, y1); + result.lineTo(x2 + width / 2.0f, y2); + result.lineTo(x2 - width / 2.0f, y2); + result.closePath(); + } + return result; + } + + /** + * Returns a point based on (x, y) but constrained to be within the bounds + * of a given rectangle. + * + * @param x the x-coordinate. + * @param y the y-coordinate. + * @param area the constraining rectangle (<code>null</code> not + * permitted). + * + * @return A point within the rectangle. + * + * @throws NullPointerException if <code>area</code> is <code>null</code>. + */ + public static Point2D getPointInRectangle(double x, double y, + Rectangle2D area) { + + x = Math.max(area.getMinX(), Math.min(x, area.getMaxX())); + y = Math.max(area.getMinY(), Math.min(y, area.getMaxY())); + return new Point2D.Double(x, y); + + } + + /** + * Checks, whether the given rectangle1 fully contains rectangle 2 + * (even if rectangle 2 has a height or width of zero!). + * + * @param rect1 the first rectangle. + * @param rect2 the second rectangle. + * + * @return A boolean. + */ + public static boolean contains(Rectangle2D rect1, Rectangle2D rect2) { + + double x0 = rect1.getX(); + double y0 = rect1.getY(); + double x = rect2.getX(); + double y = rect2.getY(); + double w = rect2.getWidth(); + double h = rect2.getHeight(); + + return ((x >= x0) && (y >= y0) + && ((x + w) <= (x0 + rect1.getWidth())) + && ((y + h) <= (y0 + rect1.getHeight()))); + + } + + + /** + * Checks, whether the given rectangle1 fully contains rectangle 2 + * (even if rectangle 2 has a height or width of zero!). + * + * @param rect1 the first rectangle. + * @param rect2 the second rectangle. + * + * @return A boolean. + */ + public static boolean intersects(Rectangle2D rect1, Rectangle2D rect2) { + + double x0 = rect1.getX(); + double y0 = rect1.getY(); + + double x = rect2.getX(); + double width = rect2.getWidth(); + double y = rect2.getY(); + double height = rect2.getHeight(); + return (x + width >= x0 && y + height >= y0 && x <= x0 + rect1.getWidth() + && y <= y0 + rect1.getHeight()); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mu...@us...> - 2007-06-21 10:34:30
|
Revision: 44 http://jfreechart.svn.sourceforge.net/jfreechart/?rev=44&view=rev Author: mungady Date: 2007-06-21 03:34:27 -0700 (Thu, 21 Jun 2007) Log Message: ----------- New classes copied from JCommon. Added Paths: ----------- trunk/source/org/jfree/chart/util/AbstractObjectList.java trunk/source/org/jfree/chart/util/AttributedStringUtilities.java trunk/source/org/jfree/chart/util/BooleanList.java trunk/source/org/jfree/chart/util/LengthAdjustmentType.java trunk/source/org/jfree/chart/util/ObjectList.java trunk/source/org/jfree/chart/util/PaintList.java trunk/source/org/jfree/chart/util/PaintUtilities.java trunk/source/org/jfree/chart/util/Rotation.java trunk/source/org/jfree/chart/util/SerialUtilities.java trunk/source/org/jfree/chart/util/ShapeList.java trunk/source/org/jfree/chart/util/StrokeList.java trunk/source/org/jfree/chart/util/TableOrder.java trunk/source/org/jfree/chart/util/UnitType.java Added: trunk/source/org/jfree/chart/util/AbstractObjectList.java =================================================================== --- trunk/source/org/jfree/chart/util/AbstractObjectList.java (rev 0) +++ trunk/source/org/jfree/chart/util/AbstractObjectList.java 2007-06-21 10:34:27 UTC (rev 44) @@ -0,0 +1,279 @@ +/* =========================================================== + * JFreeChart : a free chart library for the Java(tm) platform + * =========================================================== + * + * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors. + * + * Project Info: http://www.jfree.org/jfreechart/index.html + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This library 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 Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + * USA. + * + * [Java is a trademark or registered trademark of Sun Microsystems, Inc. + * in the United States and other countries.] + * + * ----------------------- + * AbstractObjectList.java + * ----------------------- + * (C)opyright 2003-2007, by Object Refinery Limited and Contributors. + * + * Original Author: David Gilbert (for Object Refinery Limited); + * Contributor(s): Bill Kelemen; + * Nicolas Brodu + * + * $Id: AbstractObjectList.java,v 1.5 2005/10/18 13:24:19 mungady Exp $ + * + * Changes + * ------- + * 13-Aug-2003 : Version 1, based on ObjectList (DG); + * 24-Aug-2003 : Fixed size (BK); + * 15-Sep-2003 : Fix serialization for subclasses (ShapeList, PaintList) (NB); + */ + +package org.jfree.chart.util; + +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; +import java.util.Arrays; + +/** + * A list of objects that can grow as required. + */ +public class AbstractObjectList implements Cloneable, Serializable { + + /** For serialization. */ + private static final long serialVersionUID = 7789833772597351595L; + + /** The default initial capacity of the list. */ + public static final int DEFAULT_INITIAL_CAPACITY = 8; + + /** Storage for the objects. */ + private transient Object[] objects; + + /** The current list size. */ + private int size = 0; + + /** The default increment. */ + private int increment = DEFAULT_INITIAL_CAPACITY; + + /** + * Creates a new list with the default initial capacity. + */ + protected AbstractObjectList() { + this(DEFAULT_INITIAL_CAPACITY); + } + + /** + * Creates a new list. + * + * @param initialCapacity the initial capacity. + */ + protected AbstractObjectList(int initialCapacity) { + this (initialCapacity, initialCapacity); + } + + /** + * Creates a new list. + * + * @param initialCapacity the initial capacity. + * @param increment the increment. + */ + protected AbstractObjectList(int initialCapacity, int increment) { + this.objects = new Object[initialCapacity]; + this.increment = increment; + } + + /** + * Returns the object at the specified index, if there is one, or + * <code>null</code>. + * + * @param index the object index. + * + * @return The object or <code>null</code>. + */ + protected Object get(int index) { + Object result = null; + if (index >= 0 && index < this.size) { + result = this.objects[index]; + } + return result; + } + + /** + * Sets an object reference (overwriting any existing object). + * + * @param index the object index. + * @param object the object (<code>null</code> permitted). + */ + protected void set(int index, Object object) { + if (index < 0) { + throw new IllegalArgumentException("Requires index >= 0."); + } + if (index >= this.objects.length) { + Object[] enlarged = new Object[index + this.increment]; + System.arraycopy(this.objects, 0, enlarged, 0, this.objects.length); + this.objects = enlarged; + } + this.objects[index] = object; + this.size = Math.max(this.size, index + 1); + } + + /** + * Clears the list. + */ + public void clear() { + Arrays.fill(this.objects, null); + this.size = 0; + } + + /** + * Returns the size of the list. + * + * @return The size of the list. + */ + public int size() { + return this.size; + } + + /** + * Returns the index of the specified object, or -1 if the object is not in + * the list. + * + * @param object the object. + * + * @return The index or -1. + */ + protected int indexOf(Object object) { + for (int index = 0; index < this.size; index++) { + if (this.objects[index] == object) { + return (index); + } + } + return -1; + } + + /** + * Tests this list for equality with another object. + * + * @param obj the object to test. + * + * @return A boolean. + */ + public boolean equals(Object obj) { + + if (obj == null) { + return false; + } + + if (obj == this) { + return true; + } + + if (!(obj instanceof AbstractObjectList)) { + return false; + } + + AbstractObjectList other = (AbstractObjectList) obj; + int listSize = size(); + for (int i = 0; i < listSize; i++) { + if (!ObjectUtilities.equal(get(i), other.get(i))) { + return false; + } + } + return true; + } + + /** + * Returns a hash code value for the object. + * + * @return the hashcode + */ + public int hashCode() { + return super.hashCode(); + } + + /** + * Clones the list of objects. The objects in the list are not cloned, so + * this is method makes a 'shallow' copy of the list. + * + * @return A clone. + * + * @throws CloneNotSupportedException if an item in the list does not + * support cloning. + */ + public Object clone() throws CloneNotSupportedException { + + AbstractObjectList clone = (AbstractObjectList) super.clone(); + if (this.objects != null) { + clone.objects = new Object[this.objects.length]; + System.arraycopy(this.objects, 0, clone.objects, 0, + this.objects.length); + } + return clone; + + } + + /** + * Provides serialization support. + * + * @param stream the output stream. + * + * @throws IOException if there is an I/O error. + */ + private void writeObject(ObjectOutputStream stream) + throws IOException { + + stream.defaultWriteObject(); + int count = size(); + stream.writeInt(count); + for (int i = 0; i < count; i++) { + final Object object = get(i); + if (object != null && object instanceof Serializable) { + stream.writeInt(i); + stream.writeObject(object); + } + else { + stream.writeInt(-1); + } + } + + } + + /** + * Provides serialization support. + * + * @param stream the input stream. + * + * @throws IOException if there is an I/O error. + * @throws ClassNotFoundException if there is a classpath problem. + */ + private void readObject(ObjectInputStream stream) + throws IOException, ClassNotFoundException { + + stream.defaultReadObject(); + this.objects = new Object[this.size]; + int count = stream.readInt(); + for (int i = 0; i < count; i++) { + int index = stream.readInt(); + if (index != -1) { + set(index, stream.readObject()); + } + } + + } + +} Added: trunk/source/org/jfree/chart/util/AttributedStringUtilities.java =================================================================== --- trunk/source/org/jfree/chart/util/AttributedStringUtilities.java (rev 0) +++ trunk/source/org/jfree/chart/util/AttributedStringUtilities.java 2007-06-21 10:34:27 UTC (rev 44) @@ -0,0 +1,109 @@ +/* =========================================================== + * JFreeChart : a free chart library for the Java(tm) platform + * =========================================================== + * + * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors. + * + * Project Info: http://www.jfree.org/jfreechart/index.html + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This library 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 Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + * USA. + * + * [Java is a trademark or registered trademark of Sun Microsystems, Inc. + * in the United States and other countries.] + * + * ------------------------------ + * AttributedStringUtilities.java + * ------------------------------ + * (C)opyright 2005, 2007, by Object Refinery Limited and Contributors. + * + * Original Author: David Gilbert (for Object Refinery Limited); + * Contributor(s): -; + * + * $Id: AttributedStringUtilities.java,v 1.2 2005/10/18 13:24:19 mungady Exp $ + * + * Changes + * ------- + * 29-Jul-2005 : Version 1 (DG); + * 21-Jun-2007 : Removed JCommon dependencies (DG); + * + */ + +package org.jfree.chart.util; + +import java.text.AttributedCharacterIterator; +import java.text.AttributedString; +import java.text.CharacterIterator; +import java.util.Map; + +/** + * Some utility methods for working with <code>AttributedString</code> objects. + */ +public class AttributedStringUtilities { + + /** + * Private constructor prevents object creation. + */ + private AttributedStringUtilities() { + } + + /** + * Tests two attributed strings for equality. + * + * @param s1 string 1 (<code>null</code> permitted). + * @param s2 string 2 (<code>null</code> permitted). + * + * @return <code>true</code> if <code>s1</code> and <code>s2</code> are + * equal or both <code>null</code>, and <code>false</code> + * otherwise. + */ + public static boolean equal(AttributedString s1, AttributedString s2) { + if (s1 == null) { + return (s2 == null); + } + if (s2 == null) { + return false; + } + AttributedCharacterIterator it1 = s1.getIterator(); + AttributedCharacterIterator it2 = s2.getIterator(); + char c1 = it1.first(); + char c2 = it2.first(); + int start = 0; + while (c1 != CharacterIterator.DONE) { + int limit1 = it1.getRunLimit(); + int limit2 = it2.getRunLimit(); + if (limit1 != limit2) { + return false; + } + // if maps aren't equivalent, return false + Map m1 = it1.getAttributes(); + Map m2 = it2.getAttributes(); + if (!m1.equals(m2)) { + return false; + } + // now check characters in the run are the same + for (int i = start; i < limit1; i++) { + if (c1 != c2) { + return false; + } + c1 = it1.next(); + c2 = it2.next(); + } + start = limit1; + } + return c2 == CharacterIterator.DONE; + } + +} Added: trunk/source/org/jfree/chart/util/BooleanList.java =================================================================== --- trunk/source/org/jfree/chart/util/BooleanList.java (rev 0) +++ trunk/source/org/jfree/chart/util/BooleanList.java 2007-06-21 10:34:27 UTC (rev 44) @@ -0,0 +1,109 @@ +/* =========================================================== + * JFreeChart : a free chart library for the Java(tm) platform + * =========================================================== + * + * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors. + * + * Project Info: http://www.jfree.org/jfreechart/index.html + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This library 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 Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + * USA. + * + * [Java is a trademark or registered trademark of Sun Microsystems, Inc. + * in the United States and other countries.] + * + * ---------------- + * BooleanList.java + * ---------------- + * (C) Copyright 2003-2007, by Object Refinery Limited. + * + * Original Author: David Gilbert (for Object Refinery Limited); + * Contributor(s): -; + * + * $Id: BooleanList.java,v 1.5 2005/10/18 13:24:19 mungady Exp $ + * + * Changes + * ------- + * 11-Jun-2003 : Version 1 (DG); + * 23-Jul-2003 : Renamed BooleanTable --> BooleanList and now extends + * ObjectList (DG); + * 13-Aug-2003 : Now extends new class AbstractObjectList (DG); + * 21-Oct-2004 : Removed duplicate implementation of Cloneable and Serializable, + * AbstractObjectList already implements that. + * 21-Jun-2007 : Removed JCommon dependencies (DG); + * + */ + +package org.jfree.chart.util; + +/** + * A list of <code>Boolean</code> objects. + */ +public class BooleanList extends AbstractObjectList { + + /** For serialization. */ + private static final long serialVersionUID = -8543170333219422042L; + + /** + * Creates a new list. + */ + public BooleanList() { + } + + /** + * Returns a {@link Boolean} from the list. + * + * @param index the index (zero-based). + * + * @return a {@link Boolean} from the list. + */ + public Boolean getBoolean(int index) { + return (Boolean) get(index); + } + + /** + * Sets the value for an item in the list. The list is expanded if + * necessary. + * + * @param index the index (zero-based). + * @param b the boolean. + */ + public void setBoolean(int index, Boolean b) { + set(index, b); + } + + /** + * Tests the list for equality with another object (typically also a list). + * + * @param obj the other object. + * + * @return A boolean. + */ + public boolean equals(Object obj) { + if (obj instanceof BooleanList) { + return super.equals(obj); + } + return false; + } + + /** + * Returns a hash code value for the object. + * + * @return the hashcode + */ + public int hashCode() { + return super.hashCode(); + } +} Added: trunk/source/org/jfree/chart/util/LengthAdjustmentType.java =================================================================== --- trunk/source/org/jfree/chart/util/LengthAdjustmentType.java (rev 0) +++ trunk/source/org/jfree/chart/util/LengthAdjustmentType.java 2007-06-21 10:34:27 UTC (rev 44) @@ -0,0 +1,142 @@ +/* =========================================================== + * JFreeChart : a free chart library for the Java(tm) platform + * =========================================================== + * + * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors. + * + * Project Info: http://www.jfree.org/jfreechart/index.html + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This library 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 Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + * USA. + * + * [Java is a trademark or registered trademark of Sun Microsystems, Inc. + * in the United States and other countries.] + * + * ------------------------- + * LengthAdjustmentType.java + * ------------------------- + * (C) Copyright 2005, 2007, by Object Refinery Limited. + * + * Original Author: David Gilbert (for Object Refinery Limited); + * Contributor(s): -; + * + * $Id: LengthAdjustmentType.java,v 1.5 2005/11/03 09:55:27 mungady Exp $ + * + * Changes: + * -------- + * 21-Jan-2005 : Version 1 (DG); + * 21-Jun-2007 : Copied from JCommon (DG); + * + */ + +package org.jfree.chart.util; + +import java.io.ObjectStreamException; +import java.io.Serializable; + +/** + * Represents the three options for adjusting a length: expand, contract, and + * no change. + */ +public final class LengthAdjustmentType implements Serializable { + + /** For serialization. */ + private static final long serialVersionUID = -6097408511380545010L; + + /** NO_CHANGE. */ + public static final LengthAdjustmentType NO_CHANGE + = new LengthAdjustmentType("NO_CHANGE"); + + /** EXPAND. */ + public static final LengthAdjustmentType EXPAND + = new LengthAdjustmentType("EXPAND"); + + /** CONTRACT. */ + public static final LengthAdjustmentType CONTRACT + = new LengthAdjustmentType("CONTRACT"); + + /** The name. */ + private String name; + + /** + * Private constructor. + * + * @param name the name. + */ + private LengthAdjustmentType(String name) { + this.name = name; + } + + /** + * Returns a string representing the object. + * + * @return The string. + */ + public String toString() { + return this.name; + } + + /** + * Returns <code>true</code> if this object is equal to the specified + * object, and <code>false</code> otherwise. + * + * @param obj the other object (<code>null</code> permitted). + * + * @return A boolean. + */ + public boolean equals(Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof LengthAdjustmentType)) { + return false; + } + final LengthAdjustmentType that = (LengthAdjustmentType) obj; + if (!this.name.equals(that.name)) { + return false; + } + return true; + } + + /** + * Returns a hash code value for the object. + * + * @return The hashcode + */ + public int hashCode() { + return this.name.hashCode(); + } + + /** + * Ensures that serialization returns the unique instances. + * + * @return The object. + * + * @throws ObjectStreamException if there is a problem. + */ + private Object readResolve() throws ObjectStreamException { + if (this.equals(LengthAdjustmentType.NO_CHANGE)) { + return LengthAdjustmentType.NO_CHANGE; + } + else if (this.equals(LengthAdjustmentType.EXPAND)) { + return LengthAdjustmentType.EXPAND; + } + else if (this.equals(LengthAdjustmentType.CONTRACT)) { + return LengthAdjustmentType.CONTRACT; + } + return null; + } + +} Added: trunk/source/org/jfree/chart/util/ObjectList.java =================================================================== --- trunk/source/org/jfree/chart/util/ObjectList.java (rev 0) +++ trunk/source/org/jfree/chart/util/ObjectList.java 2007-06-21 10:34:27 UTC (rev 44) @@ -0,0 +1,112 @@ +/* =========================================================== + * JFreeChart : a free chart library for the Java(tm) platform + * =========================================================== + * + * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors. + * + * Project Info: http://www.jfree.org/jfreechart/index.html + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This library 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 Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + * USA. + * + * [Java is a trademark or registered trademark of Sun Microsystems, Inc. + * in the United States and other countries.] + * + * --------------- + * ObjectList.java + * --------------- + * (C)opyright 2003-2007, by Object Refinery Limited and Contributors. + * + * Original Author: David Gilbert (for Object Refinery Limited); + * Contributor(s): -; + * + * $Id: ObjectList.java,v 1.6 2005/11/14 10:56:42 mungady Exp $ + * + * Changes + * ------- + * 17-Jul-2003 : Version 1 (DG); + * 13-Aug-2003 : Refactored to extend AbstractObjectList (DG); + * 21-Oct-2004 : removed duplicate interface declarations and empty methods. + * 22-Oct-2004 : Restored removed methods - see note in code (DG); + * 21-Jun-2007 : Copied from JCommon (DG); + * + */ + +package org.jfree.chart.util; + + +/** + * A list of objects that can grow as required. + * <p> + * When cloning, the objects in the list are NOT cloned, only the references. + */ +public class ObjectList extends AbstractObjectList { + + /** + * Default constructor. + */ + public ObjectList() { + } + + /** + * Creates a new list. + * + * @param initialCapacity the initial capacity. + */ + public ObjectList(int initialCapacity) { + super(initialCapacity); + } + + // NOTE: the methods below look redundant, but their purpose is to provide + // public access to the the get(), set() and indexOf() methods defined in + // the AbstractObjectList class, for this class only. For other classes + // (e.g. PaintList, ShapeList etc) we don't want the Object versions of + // these methods to be visible in the public API. + + /** + * Returns the object at the specified index, if there is one, or + * <code>null</code>. + * + * @param index the object index. + * + * @return The object or <code>null</code>. + */ + public Object get(int index) { + return super.get(index); + } + + /** + * Sets an object reference (overwriting any existing object). + * + * @param index the object index. + * @param object the object (<code>null</code> permitted). + */ + public void set(int index, Object object) { + super.set(index, object); + } + + /** + * Returns the index of the specified object, or -1 if the object is not + * in the list. + * + * @param object the object. + * + * @return The index or -1. + */ + public int indexOf(Object object) { + return super.indexOf(object); + } + +} Added: trunk/source/org/jfree/chart/util/PaintList.java =================================================================== --- trunk/source/org/jfree/chart/util/PaintList.java (rev 0) +++ trunk/source/org/jfree/chart/util/PaintList.java 2007-06-21 10:34:27 UTC (rev 44) @@ -0,0 +1,170 @@ +/* =========================================================== + * JFreeChart : a free chart library for the Java(tm) platform + * =========================================================== + * + * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors. + * + * Project Info: http://www.jfree.org/jfreechart/index.html + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This library 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 Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + * USA. + * + * [Java is a trademark or registered trademark of Sun Microsystems, Inc. + * in the United States and other countries.] + * + * -------------- + * PaintList.java + * -------------- + * (C) Copyright 2003-2007, by Object Refinery Limited. + * + * Original Author: David Gilbert (for Object Refinery Limited); + * Contributor(s): -; + * + * $Id: PaintList.java,v 1.5 2005/10/18 13:24:19 mungady Exp $ + * + * Changes + * ------- + * 13-Aug-2003 : Version 1 (DG); + * 27-Jun-2005 : Fixed equals() method to handle GradientPaint (DG); + * 21-Jun-2007 : Copied from JCommon (DG); + * + */ + +package org.jfree.chart.util; + +import java.awt.Paint; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; + +import org.jfree.io.SerialUtilities; + +/** + * A table of {@link Paint} objects. + */ +public class PaintList extends AbstractObjectList { + + /** + * Creates a new list. + */ + public PaintList() { + super(); + } + + /** + * Returns a {@link Paint} object from the list. + * + * @param index the index (zero-based). + * + * @return The object. + */ + public Paint getPaint(int index) { + return (Paint) get(index); + } + + /** + * Sets the {@link Paint} for an item in the list. The list is expanded + * if necessary. + * + * @param index the index (zero-based). + * @param paint the {@link Paint}. + */ + public void setPaint(int index, Paint paint) { + set(index, paint); + } + + /** + * Tests the list for equality with another object (typically also a list). + * + * @param obj the other object (<code>null</code> permitted). + * + * @return A boolean. + */ + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + if (obj == this) { + return true; + } + if (obj instanceof PaintList) { + PaintList that = (PaintList) obj; + int listSize = size(); + for (int i = 0; i < listSize; i++) { + if (!PaintUtilities.equal(getPaint(i), that.getPaint(i))) { + return false; + } + } + } + return true; + } + + /** + * Returns a hash code value for the object. + * + * @return the hashcode + */ + public int hashCode() { + return super.hashCode(); + } + + /** + * Provides serialization support. + * + * @param stream the output stream. + * + * @throws IOException if there is an I/O error. + */ + private void writeObject(ObjectOutputStream stream) throws IOException { + + stream.defaultWriteObject(); + int count = size(); + stream.writeInt(count); + for (int i = 0; i < count; i++) { + Paint paint = getPaint(i); + if (paint != null) { + stream.writeInt(i); + SerialUtilities.writePaint(paint, stream); + } + else { + stream.writeInt(-1); + } + } + + } + + /** + * Provides serialization support. + * + * @param stream the input stream. + * + * @throws IOException if there is an I/O error. + * @throws ClassNotFoundException if there is a classpath problem. + */ + private void readObject(ObjectInputStream stream) throws IOException, + ClassNotFoundException { + + stream.defaultReadObject(); + int count = stream.readInt(); + for (int i = 0; i < count; i++) { + final int index = stream.readInt(); + if (index != -1) { + setPaint(index, SerialUtilities.readPaint(stream)); + } + } + + } + +} Added: trunk/source/org/jfree/chart/util/PaintUtilities.java =================================================================== --- trunk/source/org/jfree/chart/util/PaintUtilities.java (rev 0) +++ trunk/source/org/jfree/chart/util/PaintUtilities.java 2007-06-21 10:34:27 UTC (rev 44) @@ -0,0 +1,178 @@ +/* =========================================================== + * JFreeChart : a free chart library for the Java(tm) platform + * =========================================================== + * + * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors. + * + * Project Info: http://www.jfree.org/jfreechart/index.html + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This library 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 Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + * USA. + * + * [Java is a trademark or registered trademark of Sun Microsystems, Inc. + * in the United States and other countries.] + * + * ------------------- + * PaintUtilities.java + * ------------------- + * (C) Copyright 2003-2007, by Object Refinery Limited. + * + * Original Author: David Gilbert (for Object Refinery Limited); + * Contributor(s): -; + * + * $Id: PaintUtilities.java,v 1.9 2005/11/16 15:58:41 taqua Exp $ + * + * Changes + * ------- + * 13-Nov-2003 : Version 1 (DG); + * 04-Oct-2004 : Renamed PaintUtils --> PaintUtilities (DG); + * 23-Feb-2005 : Rewrote equal() method with less indenting required (DG); + * 21-Jun-2007 : Copied from JCommon (DG); + * + */ + +package org.jfree.chart.util; + +import java.awt.GradientPaint; +import java.awt.Paint; +import java.awt.Color; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; + +/** + * Utility code that relates to <code>Paint</code> objects. + */ +public class PaintUtilities { + + /** + * Private constructor prevents object creation. + */ + private PaintUtilities() { + } + + /** + * Returns <code>true</code> if the two <code>Paint</code> objects are equal + * OR both <code>null</code>. This method handles + * <code>GradientPaint</code> as a special case. + * + * @param p1 paint 1 (<code>null</code> permitted). + * @param p2 paint 2 (<code>null</code> permitted). + * + * @return A boolean. + */ + public static boolean equal(Paint p1, Paint p2) { + + // handle cases where either or both arguments are null + if (p1 == null) { + return (p2 == null); + } + if (p2 == null) { + return false; + } + + boolean result = false; + // handle GradientPaint as a special case... + if (p1 instanceof GradientPaint && p2 instanceof GradientPaint) { + GradientPaint gp1 = (GradientPaint) p1; + GradientPaint gp2 = (GradientPaint) p2; + result = gp1.getColor1().equals(gp2.getColor1()) + && gp1.getColor2().equals(gp2.getColor2()) + && gp1.getPoint1().equals(gp2.getPoint1()) + && gp1.getPoint2().equals(gp2.getPoint2()) + && gp1.isCyclic() == gp2.isCyclic() + && gp1.getTransparency() == gp1.getTransparency(); + } + else { + result = p1.equals(p2); + } + return result; + + } + + /** + * Converts a color into a string. If the color is equal to one of the + * defined constant colors, that name is returned instead. Otherwise the + * color is returned as hex-string. + * + * @param c the color. + * @return the string for this color. + */ + public static String colorToString (Color c) + { + try { + Field[] fields = Color.class.getFields(); + for (int i = 0; i < fields.length; i++) { + Field f = fields[i]; + if (Modifier.isPublic(f.getModifiers()) + && Modifier.isFinal(f.getModifiers()) + && Modifier.isStatic(f.getModifiers())) { + String name = f.getName(); + Object oColor = f.get(null); + if (oColor instanceof Color) { + if (c.equals(oColor)) { + return name; + } + } + } + } + } + catch (Exception e) { + // + } + + // no defined constant color, so this must be a user defined color + String color = Integer.toHexString(c.getRGB() & 0x00ffffff); + StringBuffer retval = new StringBuffer(7); + retval.append("#"); + + int fillUp = 6 - color.length(); + for (int i = 0; i < fillUp; i++) { + retval.append("0"); + } + + retval.append(color); + return retval.toString(); + } + + /** + * Converts a given string into a color. + * + * @param value the string, either a name or a hex-string. + * @return the color. + */ + public static Color stringToColor(String value) + { + if (value == null) { + return Color.black; + } + try { + // get color by hex or octal value + return Color.decode(value); + } + catch (NumberFormatException nfe) { + // if we can't decode lets try to get it by name + try { + // try to get a color by name using reflection + final Field f = Color.class.getField(value); + + return (Color) f.get(null); + } + catch (Exception ce) { + // if we can't get any color return black + return Color.black; + } + } + } +} Added: trunk/source/org/jfree/chart/util/Rotation.java =================================================================== --- trunk/source/org/jfree/chart/util/Rotation.java (rev 0) +++ trunk/source/org/jfree/chart/util/Rotation.java 2007-06-21 10:34:27 UTC (rev 44) @@ -0,0 +1,159 @@ +/* =========================================================== + * JFreeChart : a free chart library for the Java(tm) platform + * =========================================================== + * + * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors. + * + * Project Info: http://www.jfree.org/jfreechart/index.html + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This library 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 Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + * USA. + * + * [Java is a trademark or registered trademark of Sun Microsystems, Inc. + * in the United States and other countries.] + * + * ------------- + * Rotation.java + * ------------- + * (C)opyright 2003-2007, by Object Refinery Limited and Contributors. + * + * Original Author: David Gilbert (for Object Refinery Limited); + * Contributor(s): -; + * + * $Id: Rotation.java,v 1.5 2005/11/16 15:58:41 taqua Exp $ + * + * Changes + * ------- + * 19-Aug-2003 : Version 1 (DG); + * 20-Feb-2004 : Updated Javadocs (DG); + * 21-Jun-2007 : Copied from JCommon (DG); + * + */ + +package org.jfree.chart.util; + +import java.io.ObjectStreamException; +import java.io.Serializable; + +/** + * Represents a direction of rotation (<code>CLOCKWISE</code> or + * <code>ANTICLOCKWISE</code>). + * @author David Gilbert + */ +public final class Rotation implements Serializable { + + /** For serialization. */ + private static final long serialVersionUID = -4662815260201591676L; + + /** Clockwise. */ + public static final Rotation CLOCKWISE + = new Rotation("Rotation.CLOCKWISE", -1.0); + + /** The reverse order renders the primary dataset first. */ + public static final Rotation ANTICLOCKWISE + = new Rotation("Rotation.ANTICLOCKWISE", 1.0); + + /** The name. */ + private String name; + + /** + * The factor (-1.0 for <code>CLOCKWISE</code> and 1.0 for + * <code>ANTICLOCKWISE</code>). + */ + private double factor; + + /** + * Private constructor. + * + * @param name the name. + * @param factor the rotation factor. + */ + private Rotation(final String name, final double factor) { + this.name = name; + this.factor = factor; + } + + /** + * Returns a string representing the object. + * + * @return the string (never <code>null</code>). + */ + public String toString() { + return this.name; + } + + /** + * Returns the rotation factor, which is -1.0 for <code>CLOCKWISE</code> + * and 1.0 for <code>ANTICLOCKWISE</code>. + * + * @return the rotation factor. + */ + public double getFactor() { + return this.factor; + } + + /** + * Compares this object for equality with an other object. + * Implementation note: This simply compares the factor instead + * of the name. + * + * @param o the other object + * @return true or false + */ + public boolean equals(final Object o) { + if (this == o) { + return true; + } + if (!(o instanceof Rotation)) { + return false; + } + + final Rotation rotation = (Rotation) o; + + if (this.factor != rotation.factor) { + return false; + } + + return true; + } + + /** + * Returns a hash code value for the object. + * + * @return the hashcode + */ + public int hashCode() { + final long temp = Double.doubleToLongBits(this.factor); + return (int) (temp ^ (temp >>> 32)); + } + + /** + * Ensures that serialization returns the unique instances. + * + * @return the object. + * + * @throws ObjectStreamException if there is a problem. + */ + private Object readResolve() throws ObjectStreamException { + if (this.equals(Rotation.CLOCKWISE)) { + return Rotation.CLOCKWISE; + } + else if (this.equals(Rotation.ANTICLOCKWISE)) { + return Rotation.ANTICLOCKWISE; + } + return null; + } + +} \ No newline at end of file Added: trunk/source/org/jfree/chart/util/SerialUtilities.java =================================================================== --- trunk/source/org/jfree/chart/util/SerialUtilities.java (rev 0) +++ trunk/source/org/jfree/chart/util/SerialUtilities.java 2007-06-21 10:34:27 UTC (rev 44) @@ -0,0 +1,573 @@ +/* =========================================================== + * JFreeChart : a free chart library for the Java(tm) platform + * =========================================================== + * + * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors. + * + * Project Info: http://www.jfree.org/jfreechart/index.html + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This library 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 Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + * USA. + * + * [Java is a trademark or registered trademark of Sun Microsystems, Inc. + * in the United States and other countries.] + * + * -------------------- + * SerialUtilities.java + * -------------------- + * (C) Copyright 2000-2007, by Object Refinery Limited. + * + * Original Author: David Gilbert (for Object Refinery Limited); + * Contributor(s): Arik Levin; + * + * $Id: SerialUtilities.java,v 1.13 2005/11/03 09:55:27 mungady Exp $ + * + * Changes + * ------- + * 25-Mar-2003 : Version 1 (DG); + * 18-Sep-2003 : Added capability to serialize GradientPaint (DG); + * 26-Apr-2004 : Added read/writePoint2D() methods (DG); + * 22-Feb-2005 : Added support for Arc2D - see patch 1147035 by Arik Levin (DG); + * 29-Jul-2005 : Added support for AttributedString (DG); + * 21-Jun-2007 : Copied from JCommon (DG); + * + */ + +package org.jfree.chart.util; + +import java.awt.BasicStroke; +import java.awt.Color; +import java.awt.GradientPaint; +import java.awt.Paint; +import java.awt.Shape; +import java.awt.Stroke; +import java.awt.geom.Arc2D; +import java.awt.geom.Ellipse2D; +import java.awt.geom.GeneralPath; +import java.awt.geom.Line2D; +import java.awt.geom.PathIterator; +import java.awt.geom.Point2D; +import java.awt.geom.Rectangle2D; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; +import java.text.AttributedCharacterIterator; +import java.text.AttributedString; +import java.text.CharacterIterator; +import java.util.HashMap; +import java.util.Map; + +/** + * A class containing useful utility methods relating to serialization. + */ +public class SerialUtilities { + + /** + * Private constructor prevents object creation. + */ + private SerialUtilities() { + } + + /** + * Returns <code>true</code> if a class implements <code>Serializable</code> + * and <code>false</code> otherwise. + * + * @param c the class. + * + * @return A boolean. + */ + public static boolean isSerializable(Class c) { + return Serializable.class.isAssignableFrom(c); + } + + /** + * Reads a <code>Paint</code> object that has been serialised by the + * {@link SerialUtilities#writePaint(Paint, ObjectOutputStream)} method. + * + * @param stream the input stream (<code>null</code> not permitted). + * + * @return The paint object (possibly <code>null</code>). + * + * @throws IOException if there is an I/O problem. + * @throws ClassNotFoundException if there is a problem loading a class. + */ + public static Paint readPaint(ObjectInputStream stream) + throws IOException, ClassNotFoundException { + + if (stream == null) { + throw new IllegalArgumentException("Null 'stream' argument."); + } + Paint result = null; + boolean isNull = stream.readBoolean(); + if (!isNull) { + Class c = (Class) stream.readObject(); + if (isSerializable(c)) { + result = (Paint) stream.readObject(); + } + else if (c.equals(GradientPaint.class)) { + float x1 = stream.readFloat(); + float y1 = stream.readFloat(); + Color c1 = (Color) stream.readObject(); + float x2 = stream.readFloat(); + float y2 = stream.readFloat(); + Color c2 = (Color) stream.readObject(); + boolean isCyclic = stream.readBoolean(); + result = new GradientPaint(x1, y1, c1, x2, y2, c2, isCyclic); + } + } + return result; + + } + + /** + * Serialises a <code>Paint</code> object. + * + * @param paint the paint object (<code>null</code> permitted). + * @param stream the output stream (<code>null</code> not permitted). + * + * @throws IOException if there is an I/O error. + */ + public static void writePaint(Paint paint, ObjectOutputStream stream) + throws IOException { + + if (stream == null) { + throw new IllegalArgumentException("Null 'stream' argument."); + } + if (paint != null) { + stream.writeBoolean(false); + stream.writeObject(paint.getClass()); + if (paint instanceof Serializable) { + stream.writeObject(paint); + } + else if (paint instanceof GradientPaint) { + GradientPaint gp = (GradientPaint) paint; + stream.writeFloat((float) gp.getPoint1().getX()); + stream.writeFloat((float) gp.getPoint1().getY()); + stream.writeObject(gp.getColor1()); + stream.writeFloat((float) gp.getPoint2().getX()); + stream.writeFloat((float) gp.getPoint2().getY()); + stream.writeObject(gp.getColor2()); + stream.writeBoolean(gp.isCyclic()); + } + } + else { + stream.writeBoolean(true); + } + + } + + /** + * Reads a <code>Stroke</code> object that has been serialised by the + * {@link SerialUtilities#writeStroke(Stroke, ObjectOutputStream)} method. + * + * @param stream the input stream (<code>null</code> not permitted). + * + * @return The stroke object (possibly <code>null</code>). + * + * @throws IOException if there is an I/O problem. + * @throws ClassNotFoundException if there is a problem loading a class. + */ + public static Stroke readStroke(ObjectInputStream stream) + throws IOException, ClassNotFoundException { + + if (stream == null) { + throw new IllegalArgumentException("Null 'stream' argument."); + } + Stroke result = null; + boolean isNull = stream.readBoolean(); + if (!isNull) { + Class c = (Class) stream.readObject(); + if (c.equals(BasicStroke.class)) { + float width = stream.readFloat(); + int cap = stream.readInt(); + int join = stream.readInt(); + float miterLimit = stream.readFloat(); + float[] dash = (float[]) stream.readObject(); + float dashPhase = stream.readFloat(); + result = new BasicStroke(width, cap, join, miterLimit, dash, + dashPhase); + } + else { + result = (Stroke) stream.readObject(); + } + } + return result; + + } + + /** + * Serialises a <code>Stroke</code> object. This code handles the + * <code>BasicStroke</code> class which is the only <code>Stroke</code> + * implementation provided by the JDK (and isn't directly + * <code>Serializable</code>). + * + * @param stroke the stroke object (<code>null</code> permitted). + * @param stream the output stream (<code>null</code> not permitted). + * + * @throws IOException if there is an I/O error. + */ + public static void writeStroke(Stroke stroke, ObjectOutputStream stream) + throws IOException { + + if (stream == null) { + throw new IllegalArgumentException("Null 'stream' argument."); + } + if (stroke != null) { + stream.writeBoolean(false); + if (stroke instanceof BasicStroke) { + BasicStroke s = (BasicStroke) stroke; + stream.writeObject(BasicStroke.class); + stream.writeFloat(s.getLineWidth()); + stream.writeInt(s.getEndCap()); + stream.writeInt(s.getLineJoin()); + stream.writeFloat(s.getMiterLimit()); + stream.writeObject(s.getDashArray()); + stream.writeFloat(s.getDashPhase()); + } + else { + stream.writeObject(stroke.getClass()); + stream.writeObject(stroke); + } + } + else { + stream.writeBoolean(true); + } + } + + /** + * Reads a <code>Shape</code> object that has been serialised by the + * {@link #writeShape(Shape, ObjectOutputStream)} method. + * + * @param stream the input stream (<code>null</code> not permitted). + * + * @return The shape object (possibly <code>null</code>). + * + * @throws IOException if there is an I/O problem. + * @throws ClassNotFoundException if there is a problem loading a class. + */ + public static Shape readShape(ObjectInputStream stream) + throws IOException, ClassNotFoundException { + + if (stream == null) { + throw new IllegalArgumentException("Null 'stream' argument."); + } + Shape result = null; + boolean isNull = stream.readBoolean(); + if (!isNull) { + Class c = (Class) stream.readObject(); + if (c.equals(Line2D.class)) { + double x1 = stream.readDouble(); + double y1 = stream.readDouble(); + double x2 = stream.readDouble(); + double y2 = stream.readDouble(); + result = new Line2D.Double(x1, y1, x2, y2); + } + else if (c.equals(Rectangle2D.class)) { + double x = stream.readDouble(); + double y = stream.readDouble(); + double w = stream.readDouble(); + double h = stream.readDouble(); + result = new Rectangle2D.Double(x, y, w, h); + } + else if (c.equals(Ellipse2D.class)) { + double x = stream.readDouble(); + double y = stream.readDouble(); + double w = stream.readDouble(); + double h = stream.readDouble(); + result = new Ellipse2D.Double(x, y, w, h); + } + else if (c.equals(Arc2D.class)) { + double x = stream.readDouble(); + double y = stream.readDouble(); + double w = stream.readDouble(); + double h = stream.readDouble(); + double as = stream.readDouble(); // Angle Start + double ae = stream.readDouble(); // Angle Extent + int at = stream.readInt(); // Arc type + result = new Arc2D.Double(x, y, w, h, as, ae, at); + } + else if (c.equals(GeneralPath.class)) { + GeneralPath gp = new GeneralPath(); + float[] args = new float[6]; + boolean hasNext = stream.readBoolean(); + while (!hasNext) { + int type = stream.readInt(); + for (int i = 0; i < 6; i++) { + args[i] = stream.readFloat(); + } + switch (type) { + case PathIterator.SEG_MOVETO : + gp.moveTo(args[0], args[1]); + break; + case PathIterator.SEG_LINETO : + gp.lineTo(args[0], args[1]); + break; + case PathIterator.SEG_CUBICTO : + gp.curveTo( + args[0], args[1], args[2], + args[3], args[4], args[5] + ); + break; + case PathIterator.SEG_QUADTO : + gp.quadTo(args[0], args[1], args[2], args[3]); + break; + case PathIterator.SEG_CLOSE : + //result = gp; + break; + default : + throw new RuntimeException( + "JFreeChart - No path exists" + ); + } + gp.setWindingRule(stream.readInt()); + hasNext = stream.readBoolean(); + } + result = gp; + } + else { + result = (Shape) stream.readObject(); + } + } + return result; + + } + + /** + * Serialises a <code>Shape</code> object. + * + * @param shape the shape object (<code>null</code> permitted). + * @param stream the output stream (<code>null</code> not permitted). + * + * @throws IOException if there is an I/O error. + */ + public static void writeShape(Shape shape, ObjectOutputStream stream) + throws IOException { + + if (stream == null) { + throw new IllegalArgumentException("Null 'stream' argument."); + } + if (shape != null) { + stream.writeBoolean(false); + if (shape instanceof Line2D) { + Line2D line = (Line2D) shape; + stream.writeObject(Line2D.class); + stream.writeDouble(line.getX1()); + stream.writeDouble(line.getY1()); + stream.writeDouble(line.getX2()); + stream.writeDouble(line.getY2()); + } + else if (shape instanceof Rectangle2D) { + Rectangle2D rectangle = (Rectangle2D) shape; + stream.writeObject(Rectangle2D.class); + stream.writeDouble(rectangle.getX()); + stream.writeDouble(rectangle.getY()); + stream.writeDouble(rectangle.getWidth()); + stream.writeDouble(rectangle.getHeight()); + } + else if (shape instanceof Ellipse2D) { + Ellipse2D ellipse = (Ellipse2D) shape; + stream.writeObject(Ellipse2D.class); + stream.writeDouble(ellipse.getX()); + stream.writeDouble(ellipse.getY()); + stream.writeDouble(ellipse.getWidth()); + stream.writeDouble(ellipse.getHeight()); + } + else if (shape instanceof Arc2D) { + Arc2D arc = (Arc2D) shape; + stream.writeObject(Arc2D.class); + stream.writeDouble(arc.getX()); + stream.writeDouble(arc.getY()); + stream.writeDouble(arc.getWidth()); + stream.writeDouble(arc.getHeight()); + stream.writeDouble(arc.getAngleStart()); + stream.writeDouble(arc.getAngleExtent()); + stream.writeInt(arc.getArcType()); + } + else if (shape instanceof GeneralPath) { + stream.writeObject(GeneralPath.class); + PathIterator pi = shape.getPathIterator(null); + float[] args = new float[6]; + stream.writeBoolean(pi.isDone()); + while (!pi.isDone()) { + int type = pi.currentSegment(args); + stream.writeInt(type); + // TODO: could write this to only stream the values + // required for the segment type + for (int i = 0; i < 6; i++) { + stream.writeFloat(args[i]); + } + stream.writeInt(pi.getWindingRule()); + pi.next(); + stream.writeBoolean(pi.isDone()); + } + } + else { + stream.writeObject(shape.getClass()); + stream.writeObject(shape); + } + } + else { + stream.writeBoolean(true); + } + } + + /** + * Reads a <code>Point2D</code> object that has been serialised by the + * {@link #writePoint2D(Point2D, ObjectOutputStream)} method. + * + * @param stream the input stream (<code>null</code> not permitted). + * + * @return The point object (possibly <code>null</code>). + * + * @throws IOException if there is an I/O problem. + */ + public static Point2D readPoint2D(ObjectInputStream stream) + throws IOException { + + if (stream == null) { + throw new IllegalArgumentException("Null 'stream' argument."); + } + Point2D result = null; + boolean isNull = stream.readBoolean(); + if (!isNull) { + double x = stream.readDouble(); + double y = stream.readDouble(); + result = new Poi... [truncated message content] |
From: <mu...@us...> - 2007-06-21 15:04:05
|
Revision: 71 http://jfreechart.svn.sourceforge.net/jfreechart/?rev=71&view=rev Author: mungady Date: 2007-06-21 08:04:03 -0700 (Thu, 21 Jun 2007) Log Message: ----------- Fixed Eclipse warnings. Modified Paths: -------------- trunk/source/org/jfree/chart/util/ArrayUtilities.java trunk/source/org/jfree/chart/util/ObjectUtilities.java Modified: trunk/source/org/jfree/chart/util/ArrayUtilities.java =================================================================== --- trunk/source/org/jfree/chart/util/ArrayUtilities.java 2007-06-21 15:03:33 UTC (rev 70) +++ trunk/source/org/jfree/chart/util/ArrayUtilities.java 2007-06-21 15:04:03 UTC (rev 71) @@ -174,29 +174,35 @@ return false; } - public static int compareVersionArrays(Comparable[] a1, Comparable[] a2) - { - int length = Math.min (a1.length, a2.length); - for (int i = 0; i < length; i++) - { - Comparable o1 = a1[i]; - Comparable o2 = a2[i]; - if (o1 == null && o2 == null) { - // cannot decide .. - continue; + /** + * Compares version arrays. + * + * @param a1 array 1. + * @param a2 array 2. + * + * @return A code for the comparison. + */ + public static int compareVersionArrays(Comparable[] a1, Comparable[] a2) { + int length = Math.min (a1.length, a2.length); + for (int i = 0; i < length; i++) { + Comparable o1 = a1[i]; + Comparable o2 = a2[i]; + if (o1 == null && o2 == null) { + // cannot decide .. + continue; + } + if (o1 == null) { + return 1; + } + if (o2 == null) { + return -1; + } + int retval = o1.compareTo(o2); + if (retval != 0) { + return retval; + } } - if (o1 == null) { - return 1; - } - if (o2 == null) { - return -1; - } - int retval = o1.compareTo(o2); - if (retval != 0) { - return retval; - } - } - return 0; + return 0; } } Modified: trunk/source/org/jfree/chart/util/ObjectUtilities.java =================================================================== --- trunk/source/org/jfree/chart/util/ObjectUtilities.java 2007-06-21 15:03:33 UTC (rev 70) +++ trunk/source/org/jfree/chart/util/ObjectUtilities.java 2007-06-21 15:04:03 UTC (rev 71) @@ -412,14 +412,16 @@ * * @param className the class name as String, never null. * @param source the source class, from where to get the classloader. + * @param type the type. + * * @return the instantiated object or null, if an error occured. */ - public static Object loadAndInstantiate(final String className, - final Class source, - final Class type) { + public static Object loadAndInstantiate(String className, + Class source, + Class type) { try { - final ClassLoader loader = getClassLoader(source); - final Class c = loader.loadClass(className); + ClassLoader loader = getClassLoader(source); + Class c = loader.loadClass(className); if (type.isAssignableFrom(c)) { return c.newInstance(); } @@ -430,9 +432,13 @@ return null; } - + /** + * Returns <code>true</code> if we are running on JRE 1.4 or later. + * + * @return A boolean. + */ public static boolean isJDK14() { - final ClassLoader loader = getClassLoader(ObjectUtilities.class); + ClassLoader loader = getClassLoader(ObjectUtilities.class); if (loader != null) { try { loader.loadClass("java.util.RandomAccess"); @@ -448,8 +454,8 @@ // OK, the quick and dirty, but secure way failed. Lets try it // using the standard way. try { - final String version = System.getProperty - ("java.vm.specification.version"); + String version = System.getProperty( + "java.vm.specification.version"); // parse the beast... if (version == null) { return false; @@ -464,18 +470,15 @@ } } - private static String[] parseVersions (String version) - { - if (version == null) - { + private static String[] parseVersions (String version) { + if (version == null) { return new String[0]; } - final ArrayList versions = new ArrayList(); + ArrayList versions = new ArrayList(); StringTokenizer strtok = new StringTokenizer(version, "."); - while (strtok.hasMoreTokens()) - { - versions.add (strtok.nextToken()); + while (strtok.hasMoreTokens()) { + versions.add (strtok.nextToken()); } return (String[]) versions.toArray(new String[versions.size()]); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mu...@us...> - 2007-10-10 11:21:21
|
Revision: 312 http://jfreechart.svn.sourceforge.net/jfreechart/?rev=312&view=rev Author: mungady Date: 2007-10-10 04:21:19 -0700 (Wed, 10 Oct 2007) Log Message: ----------- Removed CVS $Id tag. Modified Paths: -------------- trunk/source/org/jfree/chart/util/AbstractObjectList.java trunk/source/org/jfree/chart/util/Align.java trunk/source/org/jfree/chart/util/ApplicationFrame.java trunk/source/org/jfree/chart/util/ArrayUtilities.java trunk/source/org/jfree/chart/util/AttributedStringUtilities.java trunk/source/org/jfree/chart/util/BooleanList.java trunk/source/org/jfree/chart/util/GradientPaintTransformType.java trunk/source/org/jfree/chart/util/GradientPaintTransformer.java trunk/source/org/jfree/chart/util/HexNumberFormat.java trunk/source/org/jfree/chart/util/HorizontalAlignment.java trunk/source/org/jfree/chart/util/Layer.java trunk/source/org/jfree/chart/util/LengthAdjustmentType.java trunk/source/org/jfree/chart/util/LogFormat.java trunk/source/org/jfree/chart/util/NumberCellRenderer.java trunk/source/org/jfree/chart/util/ObjectList.java trunk/source/org/jfree/chart/util/ObjectUtilities.java trunk/source/org/jfree/chart/util/PaintList.java trunk/source/org/jfree/chart/util/PaintUtilities.java trunk/source/org/jfree/chart/util/PublicCloneable.java trunk/source/org/jfree/chart/util/RectangleAnchor.java trunk/source/org/jfree/chart/util/RectangleEdge.java trunk/source/org/jfree/chart/util/RectangleInsets.java trunk/source/org/jfree/chart/util/RefineryUtilities.java trunk/source/org/jfree/chart/util/RelativeDateFormat.java trunk/source/org/jfree/chart/util/Rotation.java trunk/source/org/jfree/chart/util/SerialUtilities.java trunk/source/org/jfree/chart/util/ShapeList.java trunk/source/org/jfree/chart/util/ShapeUtilities.java trunk/source/org/jfree/chart/util/Size2D.java trunk/source/org/jfree/chart/util/SortOrder.java trunk/source/org/jfree/chart/util/StandardGradientPaintTransformer.java trunk/source/org/jfree/chart/util/StringUtilities.java trunk/source/org/jfree/chart/util/StrokeList.java trunk/source/org/jfree/chart/util/TableOrder.java trunk/source/org/jfree/chart/util/UnitType.java trunk/source/org/jfree/chart/util/VerticalAlignment.java Modified: trunk/source/org/jfree/chart/util/AbstractObjectList.java =================================================================== --- trunk/source/org/jfree/chart/util/AbstractObjectList.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/AbstractObjectList.java 2007-10-10 11:21:19 UTC (rev 312) @@ -31,10 +31,8 @@ * * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): Bill Kelemen; - * Nicolas Brodu + * Nicolas Brodu; * - * $Id: AbstractObjectList.java,v 1.5 2005/10/18 13:24:19 mungady Exp $ - * * Changes * ------- * 13-Aug-2003 : Version 1, based on ObjectList (DG); Modified: trunk/source/org/jfree/chart/util/Align.java =================================================================== --- trunk/source/org/jfree/chart/util/Align.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/Align.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: Christian W. Zuckschwerdt; * Contributor(s): David Gilbert (for Object Refinery Limited); * - * $Id: Align.java,v 1.5 2005/10/18 13:18:34 mungady Exp $ - * * Changes (from 30-May-2002) * -------------------------- * 30-May-2002 : Added title (DG); Modified: trunk/source/org/jfree/chart/util/ApplicationFrame.java =================================================================== --- trunk/source/org/jfree/chart/util/ApplicationFrame.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/ApplicationFrame.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: ApplicationFrame.java,v 1.4 2005/11/16 15:58:41 taqua Exp $ - * * Changes (from 30-May-2002) * -------------------------- * 30-May-2002 : Added title (DG); Modified: trunk/source/org/jfree/chart/util/ArrayUtilities.java =================================================================== --- trunk/source/org/jfree/chart/util/ArrayUtilities.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/ArrayUtilities.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): Thomas Morgner; * - * $Id: ArrayUtilities.java,v 1.6 2006/07/04 10:20:40 taqua Exp $ - * * Changes * ------- * 21-Aug-2003 : Version 1 (DG); Modified: trunk/source/org/jfree/chart/util/AttributedStringUtilities.java =================================================================== --- trunk/source/org/jfree/chart/util/AttributedStringUtilities.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/AttributedStringUtilities.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: AttributedStringUtilities.java,v 1.2 2005/10/18 13:24:19 mungady Exp $ - * * Changes * ------- * 29-Jul-2005 : Version 1 (DG); Modified: trunk/source/org/jfree/chart/util/BooleanList.java =================================================================== --- trunk/source/org/jfree/chart/util/BooleanList.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/BooleanList.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: BooleanList.java,v 1.5 2005/10/18 13:24:19 mungady Exp $ - * * Changes * ------- * 11-Jun-2003 : Version 1 (DG); Modified: trunk/source/org/jfree/chart/util/GradientPaintTransformType.java =================================================================== --- trunk/source/org/jfree/chart/util/GradientPaintTransformType.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/GradientPaintTransformType.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: GradientPaintTransformType.java,v 1.4 2005/10/18 13:18:34 mungady Exp $ - * * Changes: * -------- * 21-Oct-2003 : Version 1 (DG); Modified: trunk/source/org/jfree/chart/util/GradientPaintTransformer.java =================================================================== --- trunk/source/org/jfree/chart/util/GradientPaintTransformer.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/GradientPaintTransformer.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: GradientPaintTransformer.java,v 1.4 2007/04/03 12:34:13 mungady Exp $ - * * Changes * ------- * 28-Oct-2003 : Version 1 (DG); Modified: trunk/source/org/jfree/chart/util/HexNumberFormat.java =================================================================== --- trunk/source/org/jfree/chart/util/HexNumberFormat.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/HexNumberFormat.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: Richard West; * Contributor(s): David Gilbert (for Object Refinery Limited); * - * $Id: HexNumberFormat.java,v 1.1.2.1 2007/06/14 09:16:42 mungady Exp $ - * * Changes: * -------- * 14-Jun-2007 : Version 1 (RW); Modified: trunk/source/org/jfree/chart/util/HorizontalAlignment.java =================================================================== --- trunk/source/org/jfree/chart/util/HorizontalAlignment.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/HorizontalAlignment.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: HorizontalAlignment.java,v 1.5 2005/10/18 13:18:34 mungady Exp $ - * * Changes: * -------- * 08-Jan-2004 : Version 1 (DG); Modified: trunk/source/org/jfree/chart/util/Layer.java =================================================================== --- trunk/source/org/jfree/chart/util/Layer.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/Layer.java 2007-10-10 11:21:19 UTC (rev 312) @@ -1,4 +1,29 @@ -/** +/* =========================================================== + * JFreeChart : a free chart library for the Java(tm) platform + * =========================================================== + * + * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors. + * + * Project Info: http://www.jfree.org/jfreechart/index.html + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This library 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 Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + * USA. + * + * [Java is a trademark or registered trademark of Sun Microsystems, Inc. + * in the United States and other countries.] + * * ---------- * Layer.java * ---------- @@ -7,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: Layer.java,v 1.4 2005/10/18 13:18:34 mungady Exp $ - * * Changes: * -------- * 17-Sep-2003 : Version 1 (DG); Modified: trunk/source/org/jfree/chart/util/LengthAdjustmentType.java =================================================================== --- trunk/source/org/jfree/chart/util/LengthAdjustmentType.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/LengthAdjustmentType.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: LengthAdjustmentType.java,v 1.5 2005/11/03 09:55:27 mungady Exp $ - * * Changes: * -------- * 21-Jan-2005 : Version 1 (DG); Modified: trunk/source/org/jfree/chart/util/LogFormat.java =================================================================== --- trunk/source/org/jfree/chart/util/LogFormat.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/LogFormat.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: LogAxis.java,v 1.1.2.2 2007/03/22 16:39:18 mungady Exp $ - * * Changes * ------- * 02-Aug-2007 : Version 1 (DG); Modified: trunk/source/org/jfree/chart/util/NumberCellRenderer.java =================================================================== --- trunk/source/org/jfree/chart/util/NumberCellRenderer.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/NumberCellRenderer.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: NumberCellRenderer.java,v 1.6 2006/04/30 09:07:20 taqua Exp $ - * * Changes (from 26-Oct-2001) * -------------------------- * 26-Oct-2001 : Changed package to com.jrefinery.ui.*; Modified: trunk/source/org/jfree/chart/util/ObjectList.java =================================================================== --- trunk/source/org/jfree/chart/util/ObjectList.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/ObjectList.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: ObjectList.java,v 1.6 2005/11/14 10:56:42 mungady Exp $ - * * Changes * ------- * 17-Jul-2003 : Version 1 (DG); Modified: trunk/source/org/jfree/chart/util/ObjectUtilities.java =================================================================== --- trunk/source/org/jfree/chart/util/ObjectUtilities.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/ObjectUtilities.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): Thomas Morgner; * - * $Id: ObjectUtilities.java,v 1.17 2006/12/03 15:33:33 taqua Exp $ - * * Changes * ------- * 25-Mar-2003 : Version 1 (DG); Modified: trunk/source/org/jfree/chart/util/PaintList.java =================================================================== --- trunk/source/org/jfree/chart/util/PaintList.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/PaintList.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: PaintList.java,v 1.5 2005/10/18 13:24:19 mungady Exp $ - * * Changes * ------- * 13-Aug-2003 : Version 1 (DG); Modified: trunk/source/org/jfree/chart/util/PaintUtilities.java =================================================================== --- trunk/source/org/jfree/chart/util/PaintUtilities.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/PaintUtilities.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: PaintUtilities.java,v 1.9 2005/11/16 15:58:41 taqua Exp $ - * * Changes * ------- * 13-Nov-2003 : Version 1 (DG); Modified: trunk/source/org/jfree/chart/util/PublicCloneable.java =================================================================== --- trunk/source/org/jfree/chart/util/PublicCloneable.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/PublicCloneable.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: PublicCloneable.java,v 1.3 2005/10/18 13:24:19 mungady Exp $ - * * Changes * ------- * 18-Aug-2003 : Version 1 (DG); Modified: trunk/source/org/jfree/chart/util/RectangleAnchor.java =================================================================== --- trunk/source/org/jfree/chart/util/RectangleAnchor.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/RectangleAnchor.java 2007-10-10 11:21:19 UTC (rev 312) @@ -1,4 +1,29 @@ -/** +/* =========================================================== + * JFreeChart : a free chart library for the Java(tm) platform + * =========================================================== + * + * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors. + * + * Project Info: http://www.jfree.org/jfreechart/index.html + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This library 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 Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + * USA. + * + * [Java is a trademark or registered trademark of Sun Microsystems, Inc. + * in the United States and other countries.] + * * -------------------- * RectangleAnchor.java * -------------------- @@ -7,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: RectangleAnchor.java,v 1.6 2005/10/18 13:18:34 mungady Exp $ - * * Changes: * -------- * 31-Oct-2003 (DG); Modified: trunk/source/org/jfree/chart/util/RectangleEdge.java =================================================================== --- trunk/source/org/jfree/chart/util/RectangleEdge.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/RectangleEdge.java 2007-10-10 11:21:19 UTC (rev 312) @@ -1,4 +1,29 @@ -/** +/* =========================================================== + * JFreeChart : a free chart library for the Java(tm) platform + * =========================================================== + * + * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors. + * + * Project Info: http://www.jfree.org/jfreechart/index.html + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This library 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 Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + * USA. + * + * [Java is a trademark or registered trademark of Sun Microsystems, Inc. + * in the United States and other countries.] + * * ------------- * RectangleEdge * ------------- @@ -7,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: RectangleEdge.java,v 1.4 2005/10/18 13:18:34 mungady Exp $ - * * Changes: * -------- * 14-Jul-2003 : Version 1(DG); Modified: trunk/source/org/jfree/chart/util/RectangleInsets.java =================================================================== --- trunk/source/org/jfree/chart/util/RectangleInsets.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/RectangleInsets.java 2007-10-10 11:21:19 UTC (rev 312) @@ -1,4 +1,29 @@ -/** +/* =========================================================== + * JFreeChart : a free chart library for the Java(tm) platform + * =========================================================== + * + * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors. + * + * Project Info: http://www.jfree.org/jfreechart/index.html + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This library 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 Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + * USA. + * + * [Java is a trademark or registered trademark of Sun Microsystems, Inc. + * in the United States and other countries.] + * * -------------------- * RectangleInsets.java * -------------------- @@ -7,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: RectangleInsets.java,v 1.15 2007/03/16 14:29:45 mungady Exp $ - * * Changes: * -------- * 11-Feb-2004 : Version 1 (DG); Modified: trunk/source/org/jfree/chart/util/RefineryUtilities.java =================================================================== --- trunk/source/org/jfree/chart/util/RefineryUtilities.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/RefineryUtilities.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): Jon Iles; * - * $Id: RefineryUtilities.java,v 1.10 2007/05/21 17:13:59 taqua Exp $ - * * Changes (from 26-Oct-2001) * -------------------------- * 26-Oct-2001 : Changed package to com.jrefinery.ui.*; Modified: trunk/source/org/jfree/chart/util/RelativeDateFormat.java =================================================================== --- trunk/source/org/jfree/chart/util/RelativeDateFormat.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/RelativeDateFormat.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: RelativeDateFormat.java,v 1.1.2.3 2007/03/05 13:47:40 mungady Exp $ - * * Changes: * -------- * 01-Nov-2006 : Version 1 (DG); Modified: trunk/source/org/jfree/chart/util/Rotation.java =================================================================== --- trunk/source/org/jfree/chart/util/Rotation.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/Rotation.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: Rotation.java,v 1.5 2005/11/16 15:58:41 taqua Exp $ - * * Changes * ------- * 19-Aug-2003 : Version 1 (DG); Modified: trunk/source/org/jfree/chart/util/SerialUtilities.java =================================================================== --- trunk/source/org/jfree/chart/util/SerialUtilities.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/SerialUtilities.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): Arik Levin; * - * $Id: SerialUtilities.java,v 1.13 2005/11/03 09:55:27 mungady Exp $ - * * Changes * ------- * 25-Mar-2003 : Version 1 (DG); Modified: trunk/source/org/jfree/chart/util/ShapeList.java =================================================================== --- trunk/source/org/jfree/chart/util/ShapeList.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/ShapeList.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: ShapeList.java,v 1.4 2005/10/18 13:24:19 mungady Exp $ - * * Changes * ------- * 13-Aug-2003 : Version 1 (DG); Modified: trunk/source/org/jfree/chart/util/ShapeUtilities.java =================================================================== --- trunk/source/org/jfree/chart/util/ShapeUtilities.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/ShapeUtilities.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: ShapeUtilities.java,v 1.17 2005/11/02 16:31:50 mungady Exp $ - * * Changes * ------- * 13-Aug-2003 : Version 1 (DG); Modified: trunk/source/org/jfree/chart/util/Size2D.java =================================================================== --- trunk/source/org/jfree/chart/util/Size2D.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/Size2D.java 2007-10-10 11:21:19 UTC (rev 312) @@ -1,4 +1,29 @@ -/** +/* =========================================================== + * JFreeChart : a free chart library for the Java(tm) platform + * =========================================================== + * + * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors. + * + * Project Info: http://www.jfree.org/jfreechart/index.html + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This library 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 Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + * USA. + * + * [Java is a trademark or registered trademark of Sun Microsystems, Inc. + * in the United States and other countries.] + * * ----------- * Size2D.java * ----------- @@ -7,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: Size2D.java,v 1.8 2005/11/16 15:58:41 taqua Exp $ - * * Changes (from 26-Oct-2001) * -------------------------- * 26-Oct-2001 : Changed package to com.jrefinery.ui.*; Modified: trunk/source/org/jfree/chart/util/SortOrder.java =================================================================== --- trunk/source/org/jfree/chart/util/SortOrder.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/SortOrder.java 2007-10-10 11:21:19 UTC (rev 312) @@ -1,5 +1,30 @@ -/** - * -------------- +/* =========================================================== + * JFreeChart : a free chart library for the Java(tm) platform + * =========================================================== + * + * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors. + * + * Project Info: http://www.jfree.org/jfreechart/index.html + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This library 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 Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + * USA. + * + * [Java is a trademark or registered trademark of Sun Microsystems, Inc. + * in the United States and other countries.] + * + * -------------- * SortOrder.java * -------------- * (C) Copyright 2003-2007, by Object Refinery Limited. @@ -7,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: SortOrder.java,v 1.6 2005/10/18 13:24:19 mungady Exp $ - * * Changes: * -------- * 05-Mar-2003 : Version 1 (DG); Modified: trunk/source/org/jfree/chart/util/StandardGradientPaintTransformer.java =================================================================== --- trunk/source/org/jfree/chart/util/StandardGradientPaintTransformer.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/StandardGradientPaintTransformer.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: StandardGradientPaintTransformer.java,v 1.11 2007/04/03 13:55:13 mungady Exp $ - * * Changes * ------- * 28-Oct-2003 : Version 1 (DG); Modified: trunk/source/org/jfree/chart/util/StringUtilities.java =================================================================== --- trunk/source/org/jfree/chart/util/StringUtilities.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/StringUtilities.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: Thomas Morgner; * Contributor(s): David Gilbert (for Object Refinery Limited); * - * $Id: StringUtils.java,v 1.5 2005/10/18 13:24:19 mungady Exp $ - * * Changes * ------- * 21-Jun-2003 : Initial version (TM); Modified: trunk/source/org/jfree/chart/util/StrokeList.java =================================================================== --- trunk/source/org/jfree/chart/util/StrokeList.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/StrokeList.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: StrokeList.java,v 1.5 2005/10/18 13:24:19 mungady Exp $ - * * Changes * ------- * 19-Aug-2003 : Version 1 (DG); Modified: trunk/source/org/jfree/chart/util/TableOrder.java =================================================================== --- trunk/source/org/jfree/chart/util/TableOrder.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/TableOrder.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: TableOrder.java,v 1.5 2005/10/18 13:24:19 mungady Exp $ - * * Changes: * -------- * 29-Jan-2004 : Version 1 (DG); Modified: trunk/source/org/jfree/chart/util/UnitType.java =================================================================== --- trunk/source/org/jfree/chart/util/UnitType.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/UnitType.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: UnitType.java,v 1.7 2005/10/18 13:24:19 mungady Exp $ - * * Changes: * -------- * 11-Feb-2004 : Version 1 (DG); Modified: trunk/source/org/jfree/chart/util/VerticalAlignment.java =================================================================== --- trunk/source/org/jfree/chart/util/VerticalAlignment.java 2007-10-10 11:20:26 UTC (rev 311) +++ trunk/source/org/jfree/chart/util/VerticalAlignment.java 2007-10-10 11:21:19 UTC (rev 312) @@ -32,8 +32,6 @@ * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; * - * $Id: VerticalAlignment.java,v 1.4 2005/10/18 13:18:34 mungady Exp $ - * * Changes: * -------- * 08-Jan-2004 : Version 1 (DG); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mu...@us...> - 2007-12-20 17:19:18
|
Revision: 698 http://jfreechart.svn.sourceforge.net/jfreechart/?rev=698&view=rev Author: mungady Date: 2007-12-20 09:19:03 -0800 (Thu, 20 Dec 2007) Log Message: ----------- Implement default hashCode(). Modified Paths: -------------- trunk/source/org/jfree/chart/util/AbstractObjectList.java trunk/source/org/jfree/chart/util/BooleanList.java Modified: trunk/source/org/jfree/chart/util/AbstractObjectList.java =================================================================== --- trunk/source/org/jfree/chart/util/AbstractObjectList.java 2007-12-20 16:15:38 UTC (rev 697) +++ trunk/source/org/jfree/chart/util/AbstractObjectList.java 2007-12-20 17:19:03 UTC (rev 698) @@ -38,6 +38,8 @@ * 13-Aug-2003 : Version 1, based on ObjectList (DG); * 24-Aug-2003 : Fixed size (BK); * 15-Sep-2003 : Fix serialization for subclasses (ShapeList, PaintList) (NB); + * 20-Dec-2007 : Implement default hashCode() (DG); + * */ package org.jfree.chart.util; @@ -198,10 +200,25 @@ /** * Returns a hash code value for the object. * - * @return the hashcode + * @return The hashcode. */ public int hashCode() { - return super.hashCode(); + int result = 127; + int size = size(); + result = HashUtilities.hashCode(result, size()); + // for efficiency, we just use the first, last and middle items to + // compute a hashCode... + if (size > 0) { + result = HashUtilities.hashCode(result, this.objects[0]); + if (size > 1) { + result = HashUtilities.hashCode(result, this.objects[size - 1]); + if (size > 2) { + result = HashUtilities.hashCode(result, + this.objects[size / 2]); + } + } + } + return result; } /** Modified: trunk/source/org/jfree/chart/util/BooleanList.java =================================================================== --- trunk/source/org/jfree/chart/util/BooleanList.java 2007-12-20 16:15:38 UTC (rev 697) +++ trunk/source/org/jfree/chart/util/BooleanList.java 2007-12-20 17:19:03 UTC (rev 698) @@ -99,7 +99,7 @@ /** * Returns a hash code value for the object. * - * @return the hashcode + * @return The hashcode. */ public int hashCode() { return super.hashCode(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |