From: David G. <mu...@us...> - 2006-09-27 13:45:54
|
Update of /cvsroot/jfreechart/jfreechart/source/org/jfree/chart/plot In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv3020/source/org/jfree/chart/plot Modified Files: Tag: STABLE_1-0-0 PiePlot.java PiePlot3D.java RingPlot.java Log Message: 2006-09-27 David Gilbert <dav...@ob...> * source/org/jfree/chart/plot/PiePlot.java (PiePlot(PieDataset)): Initialise baseSectionPaint to a non-null value, (lookupSectionPaint(int)): New method, (lookupSectionPaint(int, boolean)): Likewise, (getSectionPaint(int)): Reimplemented without lookup, (lookupSectionOutlinePaint(int)): New method, (lookupSectionOutlinePaint(int, boolean)): Likewise, (getSectionOutlinePaint(int)): Reimplemented without lookup, (lookupSectionOutlineStroke(int)): New method, (lookupSectionOutlineStroke(int, boolean)): Likewise, (getSectionOutlineStroke(int)): Reimplemented without lookup, (drawItem): Use new lookup methods, (getLegendItems): Likewise, * source/org/jfree/chart/plot/PiePlot3D.java (draw): Use new lookup methods, * source/org/jfree/chart/plot/RingPlot.java (drawItem): Use new lookup methods, * source/org/jfree/chart/plot/junit/PiePlotTests.java (testGetBaseSectionPaint): New method. Index: PiePlot3D.java =================================================================== RCS file: /cvsroot/jfreechart/jfreechart/source/org/jfree/chart/plot/PiePlot3D.java,v retrieving revision 1.10.2.2 retrieving revision 1.10.2.3 diff -C2 -d -r1.10.2.2 -r1.10.2.3 *** PiePlot3D.java 25 Oct 2005 20:52:08 -0000 1.10.2.2 --- PiePlot3D.java 27 Sep 2006 13:45:48 -0000 1.10.2.3 *************** *** 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 **** * PiePlot3D.java * -------------- ! * (C) Copyright 2000-2005, by Object Refinery and Contributors. * * Original Author: Tomer Peretz; --- 28,32 ---- * PiePlot3D.java * -------------- ! * (C) Copyright 2000-2006, by Object Refinery and Contributors. * * Original Author: Tomer Peretz; *************** *** 71,74 **** --- 71,77 ---- * 15-Nov-2004 : Removed creation of default tool tip generator (DG); * 16-Jun-2005 : Added default constructor (DG); + * ------------- JFREECHART 1.0.0 --------------------------------------------- + * 27-Sep-2006 : Updated draw() method for new lookup methods (DG); + * * */ *************** *** 386,390 **** int[] xs; int[] ys; ! outlinePaint = getSectionOutlinePaint(0); arc = new Arc2D.Double( arcX, arcY + depth, pieArea.getWidth(), pieArea.getHeight() - depth, --- 389,393 ---- int[] xs; int[] ys; ! outlinePaint = lookupSectionOutlinePaint(0); arc = new Arc2D.Double( arcX, arcY + depth, pieArea.getWidth(), pieArea.getHeight() - depth, *************** *** 399,405 **** continue; } ! paint = getSectionPaint(categoryIndex); ! outlinePaint = getSectionOutlinePaint(categoryIndex); ! outlineStroke = getSectionOutlineStroke(categoryIndex); g2.setPaint(paint); g2.fill(arc); --- 402,408 ---- continue; } ! paint = lookupSectionPaint(categoryIndex, true); ! outlinePaint = lookupSectionOutlinePaint(categoryIndex); ! outlineStroke = lookupSectionOutlineStroke(categoryIndex); g2.setPaint(paint); g2.fill(arc); *************** *** 440,446 **** Arc2D segment = (Arc2D) iterator.next(); if (segment != null) { ! paint = getSectionPaint(cat); ! outlinePaint = getSectionOutlinePaint(cat); ! outlineStroke = getSectionOutlineStroke(cat); drawSide( g2, pieArea, segment, front, back, paint, --- 443,449 ---- Arc2D segment = (Arc2D) iterator.next(); if (segment != null) { ! paint = lookupSectionPaint(cat, true); ! outlinePaint = lookupSectionOutlinePaint(cat); ! outlineStroke = lookupSectionOutlineStroke(cat); drawSide( g2, pieArea, segment, front, back, paint, *************** *** 458,464 **** Arc2D segment = (Arc2D) iterator.next(); if (segment != null) { ! paint = getSectionPaint(cat); ! outlinePaint = getSectionOutlinePaint(cat); ! outlineStroke = getSectionOutlineStroke(cat); drawSide( g2, pieArea, segment, front, back, paint, --- 461,467 ---- Arc2D segment = (Arc2D) iterator.next(); if (segment != null) { ! paint = lookupSectionPaint(cat); ! outlinePaint = lookupSectionOutlinePaint(cat); ! outlineStroke = lookupSectionOutlineStroke(cat); drawSide( g2, pieArea, segment, front, back, paint, *************** *** 485,491 **** ); ! paint = getSectionPaint(sectionIndex); ! outlinePaint = getSectionOutlinePaint(sectionIndex); ! outlineStroke = getSectionOutlineStroke(sectionIndex); g2.setPaint(paint); g2.fill(upperArc); --- 488,494 ---- ); ! paint = lookupSectionPaint(sectionIndex, true); ! outlinePaint = lookupSectionOutlinePaint(sectionIndex); ! outlineStroke = lookupSectionOutlineStroke(sectionIndex); g2.setPaint(paint); g2.fill(upperArc); Index: RingPlot.java =================================================================== RCS file: /cvsroot/jfreechart/jfreechart/source/org/jfree/chart/plot/RingPlot.java,v retrieving revision 1.4.2.5 retrieving revision 1.4.2.6 diff -C2 -d -r1.4.2.5 -r1.4.2.6 *** RingPlot.java 20 Dec 2005 17:26:12 -0000 1.4.2.5 --- RingPlot.java 27 Sep 2006 13:45:48 -0000 1.4.2.6 *************** *** 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 **** * RingPlot.java * ------------- ! * (C) Copyright 2004, 2005, by Object Refinery Limited. * * Original Author: David Gilbert (for Object Refinery Limtied); --- 28,32 ---- * RingPlot.java * ------------- ! * (C) Copyright 2004-2006, by Object Refinery Limited. * * Original Author: David Gilbert (for Object Refinery Limtied); *************** *** 43,47 **** * ------------- JFREECHART 1.0.0 --------------------------------------------- * 20-Dec-2005 : Fixed problem with entity shape (bug 1386328) (DG); ! * */ --- 43,48 ---- * ------------- JFREECHART 1.0.0 --------------------------------------------- * 20-Dec-2005 : Fixed problem with entity shape (bug 1386328) (DG); ! * 27-Sep-2006 : Updated drawItem() method for new lookup methods (DG); ! * */ *************** *** 335,343 **** else if (currentPass == 1) { ! Paint paint = getSectionPaint(section); g2.setPaint(paint); g2.fill(path); ! Paint outlinePaint = getSectionOutlinePaint(section); ! Stroke outlineStroke = getSectionOutlineStroke(section); if (outlinePaint != null && outlineStroke != null) { g2.setPaint(outlinePaint); --- 336,344 ---- else if (currentPass == 1) { ! Paint paint = lookupSectionPaint(section, true); g2.setPaint(paint); g2.fill(path); ! Paint outlinePaint = lookupSectionOutlinePaint(section); ! Stroke outlineStroke = lookupSectionOutlineStroke(section); if (outlinePaint != null && outlineStroke != null) { g2.setPaint(outlinePaint); Index: PiePlot.java =================================================================== RCS file: /cvsroot/jfreechart/jfreechart/source/org/jfree/chart/plot/PiePlot.java,v retrieving revision 1.17.2.11 retrieving revision 1.17.2.12 diff -C2 -d -r1.17.2.11 -r1.17.2.12 *** PiePlot.java 28 Feb 2006 16:16:55 -0000 1.17.2.11 --- PiePlot.java 27 Sep 2006 13:45:48 -0000 1.17.2.12 *************** *** 136,139 **** --- 136,141 ---- * 28-Feb-2006 : Fixed bug 1440415, bad distribution of pie section * labels (DG); + * 27-Sep-2006 : Initialised baseSectionPaint correctly, added lookup methods + * for section paint, outline paint and outline stroke (DG); * */ *************** *** 432,436 **** this.sectionPaint = null; this.sectionPaintList = new PaintList(); ! this.baseSectionPaint = null; this.sectionOutlinesVisible = true; --- 434,438 ---- this.sectionPaint = null; this.sectionPaintList = new PaintList(); ! this.baseSectionPaint = Color.gray; this.sectionOutlinesVisible = true; *************** *** 683,686 **** --- 685,758 ---- /** + * Returns the paint for the specified section. This is equivalent to + * <code>lookupSectionPaint(section, false)</code>. + * + * @param section the section index. + * + * @return The paint for the specified section. + * + * @since 1.0.3 + * + * @see #lookupSectionPaint(int, boolean) + */ + protected Paint lookupSectionPaint(int section) { + return lookupSectionPaint(section, false); + } + + /** + * Returns the paint for the specified section. The lookup involves these + * steps: + * <ul> + * <li>if {@link #getSectionPaint()} is non-<code>null</code>, return + * it;</li> + * <li>if {@link #getSectionPaint(int)} is non-<code>null</code> return + * it;</li> + * <li>if {@link #getSectionPaint(int)} is <code>null</code> but + * <code>autoPopulate</code> is <code>true</code>, attempt to fetch + * a new paint from the drawing supplier + * ({@link #getDrawingSupplier()}); + * <li>if all else fails, return {@link #getBaseSectionPaint()}. + * </ul> + * + * @param section the section index. + * @param autoPopulate a flag that controls whether the drawing supplier + * is used to auto-populate the section paint settings. + * + * @return The paint. + * + * @since 1.0.3 + */ + protected Paint lookupSectionPaint(int section, boolean autoPopulate) { + + // is there an override? + Paint result = getSectionPaint(); + if (result != null) { + return result; + } + + // if not, check if there is a paint defined for the specified key + result = this.sectionPaintList.getPaint(section); + if (result != null) { + return result; + } + + // nothing defined - do we autoPopulate? + if (autoPopulate) { + DrawingSupplier ds = getDrawingSupplier(); + if (ds != null) { + result = ds.getNextPaint(); + this.sectionPaintList.setPaint(section, result); + } + else { + result = this.baseSectionPaint; + } + } + else { + result = this.baseSectionPaint; + } + return result; + } + + /** * Returns the paint for ALL sections in the plot. * *************** *** 708,735 **** * @param section the section index (zero-based). * ! * @return The paint (never <code>null</code>). */ public Paint getSectionPaint(int section) { ! ! // return the override, if there is one... ! if (this.sectionPaint != null) { ! return this.sectionPaint; ! } ! ! // otherwise look up the paint list ! Paint result = this.sectionPaintList.getPaint(section); ! if (result == null) { ! DrawingSupplier supplier = getDrawingSupplier(); ! if (supplier != null) { ! Paint p = supplier.getNextPaint(); ! this.sectionPaintList.setPaint(section, p); ! result = p; ! } ! else { ! result = this.baseSectionPaint; ! } ! } ! return result; ! } --- 780,787 ---- * @param section the section index (zero-based). * ! * @return The paint (possibly <code>null</code>). */ public Paint getSectionPaint(int section) { ! return this.sectionPaintList.getPaint(section); } *************** *** 748,752 **** /** * Returns the base section paint. This is used when no other paint is ! * available. * * @return The paint (never <code>null</code>). --- 800,804 ---- /** * Returns the base section paint. This is used when no other paint is ! * defined, which is rare. The default value is <code>Color.gray</code>. * * @return The paint (never <code>null</code>). *************** *** 757,761 **** /** ! * Sets the base section paint. * * @param paint the paint (<code>null</code> not permitted). --- 809,814 ---- /** ! * Sets the base section paint and sends a {@link PlotChangeEvent} to all ! * registered listeners. * * @param paint the paint (<code>null</code> not permitted). *************** *** 795,798 **** --- 848,922 ---- /** + * Returns the outline paint for the specified section. This is equivalent + * to <code>lookupSectionPaint(section, false)</code>. + * + * @param section the section index. + * + * @return The paint for the specified section. + * + * @since 1.0.3 + * + * @see #lookupSectionOutlinePaint(int, boolean) + */ + protected Paint lookupSectionOutlinePaint(int section) { + return lookupSectionOutlinePaint(section, false); + } + + /** + * Returns the outline paint for the specified section. The lookup + * involves these steps: + * <ul> + * <li>if {@link #getSectionOutlinePaint()} is non-<code>null</code>, + * return it;</li> + * <li>otherwise, if {@link #getSectionOutlinePaint(int)} is + * non-<code>null</code> return it;</li> + * <li>if {@link #getSectionOutlinePaint(int)} is <code>null</code> but + * <code>autoPopulate</code> is <code>true</code>, attempt to fetch + * a new outline paint from the drawing supplier + * ({@link #getDrawingSupplier()}); + * <li>if all else fails, return {@link #getBaseSectionOutlinePaint()}. + * </ul> + * + * @param section the section index. + * @param autoPopulate a flag that controls whether the drawing supplier + * is used to auto-populate the section outline paint settings. + * + * @return The paint. + * + * @since 1.0.3 + */ + protected Paint lookupSectionOutlinePaint(int section, + boolean autoPopulate) { + + // is there an override? + Paint result = getSectionOutlinePaint(); + if (result != null) { + return result; + } + + // if not, check if there is a paint defined for the specified key + result = this.sectionOutlinePaintList.getPaint(section); + if (result != null) { + return result; + } + + // nothing defined - do we autoPopulate? + if (autoPopulate) { + DrawingSupplier ds = getDrawingSupplier(); + if (ds != null) { + result = ds.getNextOutlinePaint(); + this.sectionOutlinePaintList.setPaint(section, result); + } + else { + result = this.baseSectionOutlinePaint; + } + } + else { + result = this.baseSectionOutlinePaint; + } + return result; + } + + /** * Returns the outline paint for ALL sections in the plot. * *************** *** 820,839 **** * @param section the section index (zero-based). * ! * @return The paint (never <code>null</code>). */ public Paint getSectionOutlinePaint(int section) { ! ! // return the override, if there is one... ! if (this.sectionOutlinePaint != null) { ! return this.sectionOutlinePaint; ! } ! ! // otherwise look up the paint list ! Paint result = this.sectionOutlinePaintList.getPaint(section); ! if (result == null) { ! result = this.baseSectionOutlinePaint; ! } ! return result; ! } --- 944,951 ---- * @param section the section index (zero-based). * ! * @return The paint (possibly <code>null</code>). */ public Paint getSectionOutlinePaint(int section) { ! return this.sectionOutlinePaintList.getPaint(section); } *************** *** 876,879 **** --- 988,1062 ---- /** + * Returns the outline stroke for the specified section. This is equivalent + * to <code>lookupSectionOutlineStroke(section, false)</code>. + * + * @param section the section index. + * + * @return The stroke for the specified section. + * + * @since 1.0.3 + * + * @see #lookupSectionOutlineStroke(int, boolean) + */ + protected Stroke lookupSectionOutlineStroke(int section) { + return lookupSectionOutlineStroke(section, false); + } + + /** + * Returns the outline stroke for the specified section. The lookup + * involves these steps: + * <ul> + * <li>if {@link #getSectionOutlineStroke()} is non-<code>null</code>, + * return it;</li> + * <li>otherwise, if {@link #getSectionOutlineStroke(int)} is + * non-<code>null</code> return it;</li> + * <li>if {@link #getSectionOutlineStroke(int)} is <code>null</code> but + * <code>autoPopulate</code> is <code>true</code>, attempt to fetch + * a new outline stroke from the drawing supplier + * ({@link #getDrawingSupplier()}); + * <li>if all else fails, return {@link #getBaseSectionOutlineStroke()}. + * </ul> + * + * @param section the section index. + * @param autoPopulate a flag that controls whether the drawing supplier + * is used to auto-populate the section outline stroke settings. + * + * @return The stroke. + * + * @since 1.0.3 + */ + protected Stroke lookupSectionOutlineStroke(int section, + boolean autoPopulate) { + + // is there an override? + Stroke result = getSectionOutlineStroke(); + if (result != null) { + return result; + } + + // if not, check if there is a stroke defined for the specified key + result = this.sectionOutlineStrokeList.getStroke(section); + if (result != null) { + return result; + } + + // nothing defined - do we autoPopulate? + if (autoPopulate) { + DrawingSupplier ds = getDrawingSupplier(); + if (ds != null) { + result = ds.getNextOutlineStroke(); + this.sectionOutlineStrokeList.setStroke(section, result); + } + else { + result = this.baseSectionOutlineStroke; + } + } + else { + result = this.baseSectionOutlineStroke; + } + return result; + } + + /** * Returns the outline stroke for ALL sections in the plot. * *************** *** 901,920 **** * @param section the section index (zero-based). * ! * @return The stroke (never <code>null</code>). */ public Stroke getSectionOutlineStroke(int section) { ! ! // return the override, if there is one... ! if (this.sectionOutlineStroke != null) { ! return this.sectionOutlineStroke; ! } ! ! // otherwise look up the paint list ! Stroke result = this.sectionOutlineStrokeList.getStroke(section); ! if (result == null) { ! result = this.baseSectionOutlineStroke; ! } ! return result; ! } --- 1084,1091 ---- * @param section the section index (zero-based). * ! * @return The stroke (possibly <code>null</code>). */ public Stroke getSectionOutlineStroke(int section) { ! return this.sectionOutlineStrokeList.getStroke(section); } *************** *** 1711,1720 **** else if (currentPass == 1) { ! Paint paint = getSectionPaint(section); g2.setPaint(paint); g2.fill(arc); ! Paint outlinePaint = getSectionOutlinePaint(section); ! Stroke outlineStroke = getSectionOutlineStroke(section); if (this.sectionOutlinesVisible) { g2.setPaint(outlinePaint); --- 1882,1891 ---- else if (currentPass == 1) { ! Paint paint = lookupSectionPaint(section, true); g2.setPaint(paint); g2.fill(arc); ! Paint outlinePaint = lookupSectionOutlinePaint(section); ! Stroke outlineStroke = lookupSectionOutlineStroke(section); if (this.sectionOutlinesVisible) { g2.setPaint(outlinePaint); *************** *** 1960,1966 **** } String urlText = null; ! Paint paint = getSectionPaint(section); ! Paint outlinePaint = getSectionOutlinePaint(section); ! Stroke outlineStroke = getSectionOutlineStroke(section); LegendItem item = new LegendItem(label, description, --- 2131,2137 ---- } String urlText = null; ! Paint paint = lookupSectionPaint(section, true); ! Paint outlinePaint = lookupSectionOutlinePaint(section); ! Stroke outlineStroke = lookupSectionOutlineStroke(section); LegendItem item = new LegendItem(label, description, |