From: David G. <mu...@us...> - 2006-07-10 16:25:28
|
Update of /cvsroot/jfreechart/jfreechart/source/org/jfree/chart/renderer/xy In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv25917/source/org/jfree/chart/renderer/xy Modified Files: Tag: STABLE_1-0-0 XYDotRenderer.java Log Message: 2006-07-10 David Gilbert <dav...@ob...> * source/org/jfree/chart/renderer/xy/XYDotRenderer.java (dotWidth): New field, (dotHeight): New field, (XYDotRenderer): Initialize new fields, (getDotWidth): New method, (setDotWidth): Likewise, (getDotHeight): New method, (setDotHeight): New method, (drawItem): Use variable dot size, (equals): Check new field values, * source/org/jfree/chart/renderer/xy/junit/XYDotRendererTests.java (testEquals): Extended test to cover new fields, (testHashCode): Likewise. Index: XYDotRenderer.java =================================================================== RCS file: /cvsroot/jfreechart/jfreechart/source/org/jfree/chart/renderer/xy/XYDotRenderer.java,v retrieving revision 1.5.2.1 retrieving revision 1.5.2.2 diff -C2 -d -r1.5.2.1 -r1.5.2.2 *** XYDotRenderer.java 25 Oct 2005 20:56:21 -0000 1.5.2.1 --- XYDotRenderer.java 10 Jul 2006 16:25:23 -0000 1.5.2.2 *************** *** 3,7 **** * =========================================================== * ! * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors. * * Project Info: http://www.jfree.org/jfreechart/index.html --- 3,7 ---- * =========================================================== * ! * (C) Copyright 2000-2006, by Object Refinery Limited and Contributors. * * Project Info: http://www.jfree.org/jfreechart/index.html *************** *** 28,32 **** * XYDotRenderer.java * ------------------ ! * (C) Copyright 2002-2005, by Object Refinery Limited. * * Original Author: David Gilbert (for Object Refinery Limited); --- 28,32 ---- * XYDotRenderer.java * ------------------ ! * (C) Copyright 2002-2006, by Object Refinery Limited. * * Original Author: David Gilbert (for Object Refinery Limited); *************** *** 46,49 **** --- 46,51 ---- * 25-Feb-2004 : Replaced CrosshairInfo with CrosshairState (DG); * 19-Jan-2005 : Now uses only primitives from dataset (DG); + * ------------- JFREECHART 1.0.0 --------------------------------------------- + * 10-Jul-2006 : Added dotWidth and dotHeight attributes (DG); * */ *************** *** 56,59 **** --- 58,62 ---- import org.jfree.chart.axis.ValueAxis; + import org.jfree.chart.event.RendererChangeEvent; import org.jfree.chart.plot.CrosshairState; import org.jfree.chart.plot.PlotOrientation; *************** *** 76,79 **** --- 79,88 ---- private static final long serialVersionUID = -2764344339073566425L; + /** The dot width. */ + private int dotWidth; + + /** The dot height. */ + private int dotHeight; + /** * Constructs a new renderer. *************** *** 81,87 **** --- 90,160 ---- public XYDotRenderer() { super(); + this.dotWidth = 1; + this.dotHeight = 1; } /** + * Returns the dot width (the default value is 1). + * + * @return The dot width. + * + * @since 1.0.2 + * @see #setDotWidth(int) + */ + public int getDotWidth() { + return this.dotWidth; + } + + /** + * Sets the dot width and sends a {@link RendererChangeEvent} to all + * registered listeners. + * + * @param w the new width (must be greater than zero). + * + * @throws IllegalArgumentException if <code>w</code> is less than one. + * + * @since 1.0.2 + * @see #getDotWidth() + */ + public void setDotWidth(int w) { + if (w < 1) { + throw new IllegalArgumentException("Requires w > 0."); + } + this.dotWidth = w; + notifyListeners(new RendererChangeEvent(this)); + } + + /** + * Returns the dot height (the default value is 1). + * + * @return The dot height. + * + * @since 1.0.2 + * @see #setDotHeight(int) + */ + public int getDotHeight() { + return this.dotHeight; + } + + /** + * Sets the dot height and sends a {@link RendererChangeEvent} to all + * registered listeners. + * + * @param h the new height (must be greater than zero). + * + * @throws IllegalArgumentException if <code>h</code> is less than one. + * + * @since 1.0.2 + * @see #getDotHeight() + */ + public void setDotHeight(int h) { + if (h < 1) { + throw new IllegalArgumentException("Requires h > 0."); + } + this.dotHeight = h; + notifyListeners(new RendererChangeEvent(this)); + } + + /** * Draws the visual representation of a single data item. * *************** *** 117,142 **** double x = dataset.getXValue(series, item); double y = dataset.getYValue(series, item); if (!Double.isNaN(y)) { RectangleEdge xAxisLocation = plot.getDomainAxisEdge(); RectangleEdge yAxisLocation = plot.getRangeAxisEdge(); ! double transX = domainAxis.valueToJava2D( ! x, dataArea, xAxisLocation ! ); ! double transY = rangeAxis.valueToJava2D( ! y, dataArea, yAxisLocation ! ); g2.setPaint(getItemPaint(series, item)); PlotOrientation orientation = plot.getOrientation(); if (orientation == PlotOrientation.HORIZONTAL) { ! g2.drawRect((int) transY, (int) transX, 1, 1); } else if (orientation == PlotOrientation.VERTICAL) { ! g2.drawRect((int) transX, (int) transY, 1, 1); } ! updateCrosshairValues( ! crosshairState, x, y, transX, transY, orientation ! ); } --- 190,216 ---- double x = dataset.getXValue(series, item); double y = dataset.getYValue(series, item); + double adjx = (this.dotWidth - 1) / 2.0; + double adjy = (this.dotHeight - 1) / 2.0; if (!Double.isNaN(y)) { RectangleEdge xAxisLocation = plot.getDomainAxisEdge(); RectangleEdge yAxisLocation = plot.getRangeAxisEdge(); ! double transX = domainAxis.valueToJava2D(x, dataArea, ! xAxisLocation) - adjx; ! double transY = rangeAxis.valueToJava2D(y, dataArea, yAxisLocation) ! - adjy; g2.setPaint(getItemPaint(series, item)); PlotOrientation orientation = plot.getOrientation(); if (orientation == PlotOrientation.HORIZONTAL) { ! g2.fillRect((int) transY, (int) transX, this.dotHeight, ! this.dotWidth); } else if (orientation == PlotOrientation.VERTICAL) { ! g2.fillRect((int) transX, (int) transY, this.dotWidth, ! this.dotHeight); } ! updateCrosshairValues(crosshairState, x, y, transX, transY, ! orientation); } *************** *** 144,147 **** --- 218,252 ---- /** + * Tests this renderer for equality with an arbitrary object. This method + * returns <code>true</code> if and only if: + * + * <ul> + * <li><code>obj</code> is not <code>null</code>;</li> + * <li><code>obj</code> is an instance of <code>XYDotRenderer</code>;</li> + * <li>both renderers have the same attribute values. + * </ul> + * + * @param obj the object (<code>null</code> permitted). + * + * @return A boolean. + */ + public boolean equals(Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof XYDotRenderer)) { + return false; + } + XYDotRenderer that = (XYDotRenderer) obj; + if (this.dotWidth != that.dotWidth) { + return false; + } + if (this.dotHeight != that.dotHeight) { + return false; + } + return super.equals(obj); + } + + /** * Returns a clone of the renderer. * |