From: SourceForge.net <no...@so...> - 2008-02-13 22:32:04
|
Bugs item #1892707, was opened at 2008-02-13 13:27 Message generated for change (Comment added) made by mungady You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=115494&aid=1892707&group_id=15494 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: jcommon Group: None >Status: Closed >Resolution: Fixed Priority: 6 Private: No Submitted By: m.hilpert (mhilpert) Assigned to: David Gilbert (mungady) Summary: PiePlot.setLabelPadding(): uses wrong number Initial Comment: I tried to change the label padding by increasing only the bottom padding/inset. I wondered why also the top inset increased. Here's a test case: /** * Pie chart with custom label padding. Shows bug in JFreeChart 1.0.9 where padding for bottom is set to 50 * but also top is using this value. * * @return JFreeChart. */ private JFreeChart testPieLabelPadding() { JFreeChart result = null; final DefaultPieDataset ds = new DefaultPieDataset(); ds.setValue("One", new Double(43.2)); ds.setValue("Two", new Double(10.0)); ds.setValue("Three", new Double(27.5)); ds.setValue("Four", new Double(17.5)); ds.setValue("Five", new Double(11.0)); ds.setValue("Six", new Double(19.4)); result = ChartFactory.createPieChart("Pie Chart", ds, true, true, false); final PiePlot p = (PiePlot) result.getPlot(); p.setLabelPadding(new RectangleInsets(2,2,50,2)); return result; }//testPieChart() This should only increase the bottom padding, but as you can see in the resulting chart, the labels increased in bottom and in top! ---------------------------------------------------------------------- >Comment By: David Gilbert (mungady) Date: 2008-02-13 22:32 Message: Logged In: YES user_id=112975 Originator: NO Fix is in CVS for inclusion in the JCommon 1.0.13 release. Closing. ---------------------------------------------------------------------- Comment By: David Gilbert (mungady) Date: 2008-02-13 22:02 Message: Logged In: YES user_id=112975 Originator: NO Good spot. The bug is in the TextBox class in JCommon, and the following patch should fix it: Index: source/org/jfree/text/TextBox.java =================================================================== RCS file: /cvsroot/jfreechart/jcommon/source/org/jfree/text/TextBox.java,v retrieving revision 1.12 diff -u -r1.12 TextBox.java --- source/org/jfree/text/TextBox.java 16 Nov 2005 15:58:41 -0000 1.12 +++ source/org/jfree/text/TextBox.java 13 Feb 2008 22:00:15 -0000 @@ -2,7 +2,7 @@ * JCommon : a free general purpose class library for the Java(tm) platform * ======================================================================== * - * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors. + * (C) Copyright 2000-2008, by Object Refinery Limited and Contributors. * * Project Info: http://www.jfree.org/jcommon/index.html * @@ -27,7 +27,7 @@ * ------------ * TextBox.java * ------------ - * (C) Copyright 2004, by Object Refinery Limited and Contributors. + * (C) Copyright 2004, 2008, by Object Refinery Limited and Contributors. * * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; @@ -41,6 +41,7 @@ * 09-Nov-2004 : Renamed getAdjustedHeight() --> calculateExtendedHeight() in * Spacer class (DG); * 22-Feb-2005 : Replaced Spacer with RectangleInsets (DG); + * 14-Feb-2008 : Fixed alignment of text content with respect to insets (DG); * */ @@ -297,14 +298,14 @@ final double h = this.interiorGap.extendHeight(d1.getHeight()); final Size2D d2 = new Size2D(w, h); final Rectangle2D bounds - = RectangleAnchor.createRectangle(d2, x, y, anchor); + = RectangleAnchor.createRectangle(d2, x, y, anchor); + double xx = bounds.getX(); + double yy = bounds.getY(); if (this.shadowPaint != null) { final Rectangle2D shadow = new Rectangle2D.Double( - bounds.getX() + this.shadowXOffset, - bounds.getY() + this.shadowYOffset, - bounds.getWidth(), bounds.getHeight() - ); + xx + this.shadowXOffset, yy + this.shadowYOffset, + bounds.getWidth(), bounds.getHeight()); g2.setPaint(this.shadowPaint); g2.fill(shadow); } @@ -319,10 +320,10 @@ g2.draw(bounds); } - this.textBlock.draw( - g2, (float) bounds.getCenterX(), (float) bounds.getCenterY(), - TextBlockAnchor.CENTER - ); + this.textBlock.draw(g2, + (float) (xx + this.interiorGap.calculateLeftInset(w)), + (float) (yy + this.interiorGap.calculateTopInset(h)), + TextBlockAnchor.TOP_LEFT); } I'll include this fix in the JCommon 1.0.13 release. Regards, Dave Gilbert JFreeChart Project Leader ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=115494&aid=1892707&group_id=15494 |