1JFreeChart 1.0.17 2----------------- 324 November 2013 4 5Enhanced XYSplineRenderer with new area fill (contributed by Klaus Rheinwald), 6added a notify flag to all datasets that extend AbstractDataset, extended 7TimeSeriesCollection to validate TimeSeries keys for uniqueness, added a new 8DirectionalGradientPaintTransformer (by Peter Kolb), updated OHLCSeries, added 9HMSNumberFormat, updated JCommon to version 1.0.21 (includes rotated text 10improvements) and fixed some minor bugs. 11 12Bug Fixes: 13 14 977 : Multithreading issue with DateAxis; 151084 : BorderArrangement.add() possible ClassCastException; 161099 : XYSeriesCollection.removeSeries(int) does not deregister listener; 171109 : WaterfallBarRenderer uses wrong color for diff 0. 18 19And now a word from our sponsors, Object Refinery Limited... 20 21> ORSON CHARTS 3D 22> --------------- 23> We are pleased to announce the release of Orson Charts, a 3D chart library 24> for the Java(tm) platform. Orson Charts has a similar architecture to 25> JFreeChart and provides high-quality 3D chart rendering using just the Java2D 26> API. The built-in Swing-based viewer provides zooming and full 360 degree 27> rotation of charts in any direction. Export options include PNG, PDF and SVG. 28> You can download a free evaluation copy of Orson Charts from: 29> 30> http://www.object-refinery.com/orsoncharts 31> 32> We've also added a tab to the JFreeChart demo application so you can see 33> Orson Charts in action. Orson Charts is not free, but provides a superb 34> complement to the extensive 2D charting capabilities of JFreeChart. 35 36 37JFreeChart 1.0.16 38----------------- 3913 September 2013 40 41*** THIS RELEASE REQUIRES JDK/JRE 1.6.0 OR LATER. *** 42 43Provided subscript/superscript support for axis labels (via AttributedString), 44new axis label positioning options, simplified ChartFactory methods, 45added new methods to DatasetUtilities to interpolate y-values in XYDatasets, 46added URLs to labels on CategoryAxis, seamless integration with 47JFreeSVG (http://www.jfree.org/jfreesvg/) and OrsonPDF 48(http://www.object-refinery.com/pdf/), improved the consistency of the 49SWTGraphics2D implementation, and fixed various bugs. All the JUnit tests 50have been upgraded to JUnit 4. 51 52Bug Fixes: 531107 : Fixed TimeZone issue in PeriodAxis. 54 55Also fixed a line drawing issue with the StackedXYAreaRenderer, and a memory 56leak in the SWT ChartComposite class. 57 58IMPORTANT: Funding is vital to the continued success of the JFreeChart project. 59Please ask/persuade/beg your company to support us buy purchasing the 60JFreeChart Developer Guide and demo source code (site license options are 61available for big companies)...and also please take a look at JFreeSVG and 62OrsonPDF, useful products that we are charging money for! 63 64 65JFreeChart 1.0.15 66----------------- 674-July-2013 68 69Added support for non-visible series in XYBarRenderer, minor gridlines in 70PolarPlot, legend item ordering, chart editor enhancements, updates to 71StandardDialScale, localisation files for Japanese and refactored parameter 72checks. 73 74This release also fixes a minor security flaw in the DisplayChart class, 75detected and reported by OSI Security: 76 77http://www.osisecurity.com.au/advisories/jfreechart-path-disclosure 78 79Patches: 80 813500621 : LegendTitle order attribute (by Simon Kaczor); 823463807 : ChartComposite does not dispose popup (by Sebastiao Correia); 833204823 : PaintAlpha for 3D effects (by Dave Law); 84 85Bug Fixes: 86 873561093 : Rendering anomaly for XYPlots; 883555275 : ValueAxis.reserveSpace() problem for axes with fixed dimension; 893521736 : DeviationRenderer optimisation (by Milan Ramaiya); 903514487 : SWTGraphics2D get/setStroke() problem; 913508799 : DefaultPolarItemRenderer does not populate seriesKey in LegendItem; 923482106 : Missing text in SWTGraphics2D (by Kevin Xu); 933484408 : Maven fixes (Martin Hoeller); 943484403 : DateAxis endless loop (by Martin Hoeller); 953446965 : TimeSeries calculates range incorrectly in addOrUpdate(); 963445507 : TimeSeriesCollection.findRangeBounds() regression; 973425881 : XYDifferenceRenderer fix (by Patrick Schlott/Christoph Schroeder); 982963199 : SWT print job (by Jonas Rüttimann); 992879650 : Path disclosure vulnerability in DisplayChart servlet; 100 101Also fixed a rendering issue for polar charts using an inverted axis. 102 103 104JFreeChart 1.0.14 105----------------- 10620 November 2011 107 108This release contains support for multiple and logarithmic axes with PolarPlot, 109optional drop-shadows in plot rendering, fitting polynomial functions to a data 110series, some performance improvements in the TimeSeriesCollection class, mouse 111wheel rotation of pie charts, improved Maven support and numerous bug fixes. 112 113Patches: 114 1153435734 : Fix lines overlapping item labels (by Martin Hoeller); 1163421088 : Bugfix for misalignment in BoxAndWhiskerRenderer; 1172952086 : Enhancement for finding bounds in XYZDatasets; 1182954302 : CategoryPointerAnnotation line calculation; 1192902842 : HistogramDataset.addSeries() fires change change event (by 120 Thomas A Caswell); 1212868608 : Whisker width attribute for BoxAndWhiskerRenderer (by Peter Becker); 1222868585 : Added useOutlinePaint flag for BoxAndWhiskerRenderer (by 123 Peter Becker); 1242850344 : PolarPlot enhancements (by Martin Hoeller); 1252795746 : Support for polynomial regression; 1262791407 : Fixes for findRangeBounds() in various renderers. 127 128Bug Fixes: 129 1303440237 : Shadows always visible; 1313432721 : PolarPlot doesn't work with logarithmic axis; 1323433405 : LineChart3D - Problem with Item Labels; 1333429707 : LogAxis endless loop; 1343428870 : Missing argument check in TextAnnotation; 1353418287 : RelativeDateFormatTest.java is locale dependent; 1363353913 : Localisation fixes for ChartPanel, CompassPlot and PiePlot3D; 1373237879 : RingPlot should respect getSectionOutlineVisible(); 1383190615 : Added missing clear() method in CategoryTableXYDataset; 1393165708 : PolarChartPanel localisation fix; 1403072674 : Bad handling of NaN in DefaultStatisticalCategoryDataset; 1413035289 : StackedXYBarRenderer should respect series/item visible flags; 1423026341 : Check for null in getDomain/RangeBounds() for XYShapeRenderer; 1432947660 : AbstractCategoryRenderer fix null check in getLegendItems(); 1442946521 : StandardDialScale check majorTickIncrement argument; 1452876406 : TimeTableXYDataset should support Comparable for series keys; 1462868557 : BoxAndWhiskerRenderer should fire change event in setMedianVisible(); 1472849731 : For IntervalCategoryDataset and IntervalXYDataset, fix 148 iterateRangeBounds() in DatasetUtilities; 1492840132 : AbstractXYItemRenderer drawAnnotations doesn't set renderer index; 1502810220 : Offset problem in StatisticalBarRenderer; 1512802014 : Dial value border too small; 1522781844 : XYPointerAnnotation arrow drawing; 1531937486 : AreaRenderer doesn't respect AreaRendererEndType.LEVEL; 154 155Also fixed: 156- use of simple label offset in PiePlot; 157- cached minY and maxY in TimeSeries.createCopy(); 158- scaling issues for charts copied to the clipboard; 159- use of timezone in TimeTableXYDataset constructor; 160- duplicate series names in XYSeriesCollection; 161- HistogramDataset fires a change event in addSeries(); 162- check visibility of main chart title before drawing it; 163- fixed serialization of PowerFunction2D, NormalDistributionFunction2D, 164 and LineFunction2D; 165- item label positioning for the AreaRenderer class when the plot has an 166 horizontal orientation. 167 168 169JFreeChart 1.0.13 170----------------- 17120 April 2009 172 173****************************************************************************** 174* SPECIAL NOTICE: There will be a birds-of-a-feather session for JFreeChart * 175* at this year's JavaOne conference in San Francisco. The session is * 176* scheduled for 6.45pm to 7.35pm on Wednesday 3 June. * 177****************************************************************************** 178 179This release contains: 180 181- updates to the ChartPanel class to support copying charts to the clipboard, 182 panning and mouse-wheel zooming, and an overlay mechanism that supports 183 crosshairs; 184- enhancements to the auto-range calculation for axes, providing the ability 185 to use subranges only and also to skip hidden series; 186- updates for many of the CategoryItemRenderer implementations to ensure that 187 they respect the 'seriesVisible' flags; 188- an improvement to the TimeSeries class so that it is no longer necessary to 189 specify the time period type in the constructor; 190- a new SamplingXYLineRenderer for improving the performance of time series 191 charts with large datasets; 192- the XYSeries/XYSeriesCollection classes now cache the minimum and maximum 193 data values to improve the performance of charts with large datasets; 194- entities are now created for the chart, data area and axes, allowing mouse 195 clicks to be detected for these regions; 196- added a bar alignment factor to the XYBarRenderer class; 197- a new 'errorIndicatorStroke' field for the StatisticalLineAndShapeRenderer 198 and XYErrorRenderer classes; 199- added a new HeatMapDataset interface, DefaultHeatMapDataset implementation, 200 and a HeatMapUtilities class to make it easier to create heat map charts; 201- there is a new flag to allow an XYDataImageAnnotation to be included in the 202 automatic range calculation for the axes; 203- additional attributes in the XYTextAnnotation class; 204- added a sampleFunction2DToSeries() method to the DatasetUtilities class; 205- some changes to the ChartPanel class that help to work around a regression in 206 JRE 1.6.0_10 relating to drawing in XOR mode. Regarding this final point: 207 * the default value for the useBuffer flag has changed to true, which means 208 that all charts will, by default, be rendered into an off-screen image 209 before being displayed in the ChartPanel; 210 * the zoom rectangle is drawn using XOR mode *only* when the useBuffer 211 flag has been set to false. 212 For most usage, this should improve performance (but at the cost of using more 213 memory for each ChartPanel used in your application); 214 215Bug Fixes: 216 2172690293 : Problem with Javascript escape characters; 2182617557 : StandardDialScale ignored tickLabelPaint; 2192612649 : Stroke selection in plot property editor; 2202583891 : SWTGraphics2D.fillPolygon() not implemented; 2212564636 : Month constructor ignores Locale; 2222502355 : ChartPanel sending multiple events; 2232490803 : PeriodAxis.setRange() method doesn't take into account that the axis 224 displays whole periods; 225 226In addition, a bug in the SlidingCategoryDataset class has been fixed, the 227correct outline paint is now used by GradientXYBarPainter, a new method 228has been added to the ImageMapUtilities class to escape special characters 229in Javascript strings to avoid problems with the OverLIB and DynamicDrive 230tooltips, and there are some important fixes in the LogAxis class. 231 232This release passes 2110 JUnit tests (0 failures) on JRE 1.6.0_12. 233 234 235JFreeChart 1.0.12 236----------------- 23731 December 2008 238 239This release adds support for minor tick marks, mapping datasets to more than 240one axis, an important fix for the XYSeries class (relating to the 241addOrUpdate() method) plus numerous other bug fixes. 242 243This release passes 1996 JUnit test (0 failures) on JRE 1.6.0_10. 244 245API Adjustments: 246- CategoryPlot : added mapDatasetToDomainAxes() and mapDatasetToRangeAxes() 247 methods; 248- Month : added a new constructor Month(Date, TimeZone, Locale) and deprecated 249 Month(Date, TimeZone); 250- Quarter : added a new constructor Quarter(Date, TimeZone, Locale) and 251 deprecated Quarter(Date, TimeZone); 252- XYPlot : added mapDatasetToDomainAxes() and mapDatasetToRangeAxes() methods; 253- Year : added a new constructor Year(Date, TimeZone, Locale) and deprecated 254 Year(Date, TimeZone); 255 256Bug Fixes: 2572471906 : XYAreaRenderer with dashed outline - performance problem; 2582452078 : StackedAreaChart has gaps; 2592275695 : NullPointerException for SubCategoryAxis on plot with null dataset; 2602221495 : XYLineAnnotation with dashed stroke; 2612216511 : SWTBarChartDemo1 throws RuntimeException; 2622201869 : DateAxis tick label position error; 2632121818 : Label link lines for very thin RingPlot; 2642113627 : XYStepRenderer item labels; 2651955483 : XYSeries.addOrUpdate() problem. 266 267Also fixed StackedXYBarRenderer which was ignoring the shadowsVisible attribute. 268 269 270JFreeChart 1.0.11 271----------------- 27219 September 2008 273 274This release features a new chart theming mechanism to allow charts to be 275restyled conveniently, a new BarPainter mechanism to enhance the appearance of 276bar charts, a new XYShapeRenderer class, a scaling facility for the 277XYDrawableAnnotation for drawing images within specific data coordinates, some 278new classes (XYTaskDataset, XYDataImageAnnotation and XYTitleAnnotation), a 279modification to the Year class to support an extended range, and various bug 280fixes and API improvements. There is an important bug fix for the 281StackedBarRenderer3D class (see bug 2031407). 282 283This release passes 1,961 JUnit tests (0 failures) on JRE 1.6.0_07. 284 285API Adjustments: 286- AbstractRenderer - added clearSeriesPaints() and clearSeriesStrokes() 287 methods; 288- BarRenderer - added shadowPaint attribute; 289- CategoryAxis - added getCategoryMiddle() method; 290- CategoryPlot - added getRendererCount() method; 291- ChartFactory - added get/setChartTheme() methods; 292- ChartPanel - increased default maximum drawing width and height; 293- ChartTheme - new interface; 294- ChartUtilities - added applyCurrentTheme() method; 295- CompositeTitle - added backgroundPaint attribute; 296- GradientBarPainter - new class; 297- LegendTitle - added getWrapper() method; 298- OHLCSeriesCollection - added xPosition attribute; 299- PaintScaleLegend - new subdivisions field; 300- PiePlot - added autoPopulate flags, and methods to clear section attributes; 301- Plot - added setDrawingSupplier() method; 302- RegularTimePeriod - the DEFAULT_TIME_ZONE field has been deprecated in this 303 release; 304- RelativeDateFormat - added methods to control formatting of hours and 305 minutes - see patch 2033092; 306- StandardChartTheme - new class; 307- XYItemRendererState - new methods; 308- XYPlot - added getRendererCount() method; 309- XYShapeRenderer - new class; 310- XYTaskDataset - new class. 311 312Patches: 3131997549 : Status calls to XYItemRendererState [Ulrich Voigt]; 3142006826 : CompositeTitle drawing fix; 3152033092 : Additional formatters for RelativeDateFormat [Cole Markham]; 316 317Bug Fixes: 3181994355 : ChartComposite listener type; 3192031407 : Incorrect rendering in StackedBarRenderer3D; 3202033721 : WaferMapRenderer; 3212051168 : No key in LegendItemEntity for pie charts; 322 323Also fixed drawing of alternate grid bands in SymbolAxis, the totalWeight 324calculation in the CombinedXXXPlot classes, a NullPointerException in the 325XYPlot class when drawing quadrants, outline visibility in the 326CategoryPlot class, and auto-range calculations with XYBarRenderer. 327 328 329JFreeChart 1.0.10 330----------------- 3319 June 2008 332 333This release contains various bug fixes and minor enhancements to JFreeChart. 334PiePlot labelling has been enhanced (new curve options, and more robust bounds 335checking). The BoxAndWhiskerRenderer now has a maximumBarWidth attribute, the 336XYStepRenderer has a new stepPoint attribute. The RelativeDateFormat class 337has new options. There are new dataset classes (SlidingCategoryDataset and 338SlidingGanttDataset) that permit a subset of categories to be plotted, and 339allow charts based on these datasets to simulate scrolling. There is a new 340ShortTextTitle class. 341 342This release passes 1,929 JUnit tests (0 failures) on JRE 1.6.0_03. 343 344 345API Adjustments: 346 347- BoxAndWhiskerRenderer - added maximumBarWidth attribute (see patch 1866446); 348- ChartPanel - the zoomPoint attribute has been changed from Point to Point2D; 349- DatasetUtilities - iterateCategoryRangeBounds() is deprecated, the method 350 has been renamed iterateRangeBounds(CategoryDataset) for consistency; 351- DefaultKeyedValue - the constructor now prevents a null key; 352- LogFormat - now has a 'powerLabel' attribute; 353- ShortTextTitle - a new title class; 354- SlidingCategoryDataset - new class; 355- SlidingGanttDataset - new class; 356- TimeSeriesCollection - getSeries(String) changed to getSeries(Comparable); 357- XIntervalSeriesCollection - added series removal methods; 358- YIntervalSeriesCollection - added series removal methods; 359- XYIntervalSeriesCollection - added series removal methods; 360 361PublicCloneable is now implemented by a number of classes that didn't 362previously implement the interface - this should improve the reliability of 363chart cloning. 364 365Patches: 366 3671943021 : Fix for MultiplePiePlot [Brian Cabana]; 3681925366 : Speed improvement for DatasetUtilities [Rafal Skalny]; 3691918209 : LogAxis createTickLabel() changed from private to 370 protected [Andrew Mickish]; 3711914411 : Simplification of plot event notification [Richard West]; 3721913751 : XYPlot and CategoryPlot addMarker() methods with 373 optional notification [Richard West]; 3741902418 : Bug fix for LogAxis vertical labels [Andrew Mickish]; 3751901599 : Fixes for XYTitleAnnotation [Andrew Mickish]; 3761891849 : New curve option for pie chart label links [Martin Hilpert]; 3771874890 : Added step point to XYStepRenderer [Ulrich Voigt]; 3781873328 : Enhancements to RelativeDateFormat [Michael Siemer]; 3791871902 : PolarPlot now has angleTickUnit attribute [Martin Hoeller]; 3801868745 : Fix label anchor points on LogAxis [Andrew Mickish]; 3811866446 : Added maximumBarWidth to BoxAndWhiskerRenderer [Rob Van der Sanden]; 382 383Bug Fixes: 384 3851932146 - PeriodAxis.setRange() doesn't notify listeners; 3861927239 - Fix calculation of cumulative range; 3871926517 - Bugs in data range calculation for combined plots; 3881920854 - PiePlot3D labels drawn multiple times; 3891897580 - Fix for DefaultIntervalCategoryDataset; 3901892419 - Wrong default for minor tick count in LogAxis; 3911880114 - VectorRenderer doesn't work for horizontal plot orientation; 3921873160 - DialPlot clipping issues; 3931868521 - Problem saving charts to JPEG format; 3941864222 - Error on TimeSeries createCopy() method; 395 396The DatasetUtilities.sampleFunction2D() has been changed to sample the correct 397number of points - you should check any code that calls this method. The 398XYBlockRenderer class now generates entities. Bugs in the removeDomainMarker() 399and removeRangeMarker() methods in the CategoryPlot and XYPlot classes have 400been fixed. A bug in the TimePeriodValues range calculation has been fixed. 401Fixes were applied to the clone() methods in the TaskSeries and 402TaskSeriesCollection classes. 403 404New Experimental Features: 405 406Two new classes CombinedCategoryPlot and CombinedXYPlot have been added to the 407'experimental' source tree - these were contributed by Richard West (see 408patch 1924543). 409 410 411JFreeChart 1.0.9 412---------------- 4134 January 2008 414 415This release contains an important security patch as well as various bug fixes 416and minor enhancements. Regarding the security patch, please see the 417following advisory: 418 419http://www.rapid7.com/advisories/R7-0031.jsp 420 421Note that the fix incorporated in the special JFreeChart 1.0.8a release was 422flawed in that it broke the URLs in the HTML image maps generated by 423JFreeChart. Further amendments have been made in this release to fix this 424problem. 425 426API Adjustments: 427 428A number of classes have new methods. Nothing has been removed or deprecated: 429 430- HashUtilities - added hashCode() methods for BooleanList, PaintList and 431 StrokeList; 432- ImageMapUtilities - added htmlEscape(String); 433- IntervalMarker - added new constructor; 434- Range - added intersects(Range) and scale(Range, double); 435- TextTitle - added protected methods arrangeNN(), arrangeFN() and arrangeRN(); 436- XYDataItem - added getXValue() and getYValue() methods; 437- XYPlot - added setFixedDomainAxisSpace(AxisSpace, boolean) and 438 setFixedRangeAxisSpace(AxisSpace, boolean); 439- XYSeriesCollection - added getSeries(Comparable) method. 440 441 442Bug Fixes: 443 4441852525 - CandlestickChart.getCategoryPlot() - ClassCastException; 4451851416 - testGetFirstMillisecondWithTimeZone fails in 1.0.8a; 4461849333 - 1.0.8a breaks URLs in HTML image maps; 4471848961 - GroupedStackedBarRenderer works only for primary dataset; 4481846063 - Endless loop in paint of XYPlot; 4491840139 - Cross-site scripting vulnerabilities in image map code; 4501837979 - Background image not shown with SWT; 4511460195 - ChartEntity.getImageMapAreaTag() needs nohref; 4521400917 - OverLIBToolTipTagFragmentGenerator not escaping single quote; 4531363043 - Escape Image Map Data; 4541178601 - AbstractRenderer.hashcode() method returns the same value; 455 456In addition, a bug in the constructor for the Week class has been fixed. 457 458 459JFreeChart 1.0.8 460---------------- 46123 November 2007 462 463This release is primarily a bug fix release, correcting a problem with pie 464chart labelling, a regression in the DefaultCategoryDataset class (and 465underlying KeyedValues2D class), and a cloning bug in the TimeSeries class. 466In addition, the StatisticalBarRenderer class has a new 'errorIndicatorStroke' 467field and has been updated to support gradients, the StandardDialScale has had 468some missing accessor methods implemented, and an override field in the 469StandardXYItemRenderer class has been deprecated. Plus some warnings reported 470by FindBugs 1.3.0 have been addressed. 471 472 473JFreeChart 1.0.7 474---------------- 47514 November 2007 476 477This release features new classes DialPlot and LogAxis (previously in 478experimental), initial support for minor tick units, a new anchored zooming 479option for the ChartPanel class, optional simple labelling on pie charts, 480improvements to the "statistical" datasets and underlying data structures, and 481numerous bug fixes. 482 483API Adjustments: 484 485- CategoryAxis - added getCategorySeriesMiddle() method; 486- CategoryPlot - added methods to remove markers; 487- ChartPanel - added defaultDirectorForSaveAs attribute; 488- DialPlot - new class, an alternative to MeterPlot; 489- LogAxis - new class, an alternative to LogarithmicAxis; 490- NumberTick - new constructor that allows specification of the tick type; 491- NumberTickUnit - new constructor to specify the minor tick count; 492- SymbolAxis - new methods get/setGridBandAlternatePaint(); 493- TickType - new class; 494- TickUnit - added minorTickCount attribute; 495- ValueTick - added tickType attribute; 496- StandardPieSectionLabelGenerator - new constructors accepting a Locale; 497- StandardPieToolTipGenerator - likewise; 498- CategoryPlot - added getRangeAxisIndex(), zoomDomainAxes() and zoomRangeAxes() 499 methods; 500- FastScatterPlot - added new zooming methods; 501- PiePlot - new attributes to support simple labelling; 502- PlotUtilities - new class; 503- PolarPlot - added new zooming methods; 504- ThermometerPlot - likewise; 505- XYPlot - added methods to remove markers (patch 1823697--same as for 506 CategoryPlot), and added new zooming methods; 507- Zoomable - added new zooming methods to this interface; 508- LineAndShapeRenderer - added useSeriesOffset and itemMargin attributes; 509- MinMaxCategoryRenderer - implemented equals(); 510- XYSplineAndShapeRenderer - new class; 511- LogFormat - new class; 512- ChartFactory - new pie and ring chart creation methods that accept a Locale; 513- ChartPanel - added zoomAroundAnchor attribute; 514- Series - added isEmpty() method; 515- BoxAndWhiskerItem - new convenience constructor; 516- DefaultBoxAndWhiskerCategoryDataset - new remove methods; 517- DefaultStatisticalCategoryDataset - likewise; 518- MeanAndStandardDeviation - added new value accessor methods; 519- TimeTableXYDataset - added clear() method; 520- Week - added new constructor; 521- KeyedObjects - added insertValue() and clear() methods; 522- KeyedObjects2D - added clear() method. 523 524Patches: 525 5261823724 - updated XYDifferenceRenderer to support item labels; 5271827829 - fixed possible NullPointerException in XYBarRenderer; 528 529Bug Fixes: 530 5311767315 - GrayPaintScale.getPaint() uses wrong value; 5321775452 - Inverted XYBarRenderer does not render margins correctly; 5331802195 - Marker.listenerList serializable; 5341779941 - StatisticalBarRenderer NPE; 5351766646 - XYBlockRenderer can't handle empty datasets; 5361763413 - PeriodAxis labels fail to display with setInverted 5371737953 - Zoom doesn't work on LogAxis(Demo1) 5381749124 - JFreeChart not added as TitleChangeListener 539 540 541JFreeChart 1.0.6 542---------------- 54315 June 2007 544 545This release features a new VectorRenderer (previously in experimental), a 546generalised XYDifferenceRenderer, better support for hotspots on legend items, 547improved performance for time series charts displaying subsets of data, support 548for GradientPaint in plot backgrounds, plus the usual slew of bug fixes and 549minor feature additions. 550 551API Adjustments: 552 553- CategoryItemEntity - replaced row and column index attributes with row and 554 column key attributes; 555- CategoryItemRenderer - numerous series override settings have been deprecated; 556- DefaultPieDataset - added insertValues() method; 557- HexNumberFormat - new class; 558- LegendItem - added dataset and seriesKey attributes; 559- Plot - added new fillBackground() method to support GradientPaint, and 560 added is/setOutlineVisible() methods; 561- QuarterDateFormat - added GREEK_QUARTERS field plus a new constructor; 562- SimpleHistogramDataset - added clearObservations() and removeAllBins() 563 methods; 564- TimeSeriesCollection - added indexOf() method; 565- URLUtilities - new class; 566- XYItemRenderer - numerous series override settings have been deprecated; 567- XYSeriesCollection - added indexOf() method. 568 569Bug Fixes: 570 5711735508 - ClusteredXYBarRenderer fails with inverted x-axis; 5721726404 - ChartComposite tooltips; 5731713474 - StackedBarRenderer3D doesn't fill shadows; 5741713401 - StackedBarRenderer3D doesn't check drawBarOutline flag; 5751701822 - DefaultBoxAndWhiskerCategoryDataset doesn't follow contracts; 5761698965 - NPE in CombinedDomainXYPlot; 5771690994 - HideSeriesDemo1 does not work; 5781690654 - Bug in removeValue() of DefaultKeyedValues2D; 5791562701 - LegendItemEntity needs dataset index; 5801486299 - Use URLEncoder.encode() for URL generators; 581 582Plus the following bugs that didn't have entries in the database: 583 584- BarRenderer - check for series visibility in getLegendItem(); 585- ChartPanel - use correct insets for painting chart buffer to screen, update 586 UI for popup menu if LookAndFeel changes; 587- DateAxis - fixed boundary cases for previousStandardDate() method; 588- LineBorder - only draw border if area has positive dimensions; 589- JFreeChart - should register as a listener with the default legend; 590- StandardXYItemRenderer - fixed a problem where chart entities are created for 591 non-visible items; 592- TimePeriodValuesCollection.getDomainBounds() now computes the bounds 593 correctly; 594- XYLineAndShapeRenderer - fixed a problem where chart entities are created for 595 non-visible items; 596- XYLine3DRenderer - equals() implemented, and serialization fixed; 597- XYTitleAnnotation - fixed equals() method; 598- various resource usage bugs in the experimental ChartComposite class; 599 600 601JFreeChart 1.0.5 602---------------- 60323 March 2007 604 605This release features a new DeviationRenderer class, support for item labels 606in StackedXYBarRenderer, tooltips and URLs in the CategoryStepRenderer, and 607many bug fixes. 608 609API Adjustments: 610 611- AbstractCategoryItemRenderer - added createState() method; 612- StackedXYBarRenderer - added get/setRenderAsPercentages() methods; 613- XYIntervalSeries - added getXLowValue(), getXHighValue(), getYLowValue() and 614 getYHighValue(); 615- YIntervalSeries - added getYLowValue() and getYHighValue() methods; 616 617Bug Fixes: 618 6191681777 - DefaultCategoryDataset does not clone data; 6201672552 - Zoom rectangle is lost when the chart is repainted; 6211671645 - Crosshair incorrectly positioned in horizontal orientation; 6221669302 - Tick labels in vertical symbol axis; 6231669218 - CategoryPlot.setDomainAxisLocation() ignores parameter; 6241667750 - Clip region not restored in Spider and MeterPlot; 6251663380 - OutputStream not closed; 6261659627 - IntervalMarker with Double.POSITIVE_INFINITY bound; 6271647269 - IntervalMarker with Double.MAX_VALUE as upper bound; 6281594477 - XYBarRenderer does not render bars on LogarithmicAxis; 6291459958 - Log axis zoom function problem; 630 880597 - Zooming ChartPanel with log axes; 631 764561 - Dynamic chart zoom buggy. 632 633Also fixed numerous bugs in equals(), cloning and serialization 634implementations. 635 636 637JFreeChart 1.0.4 638---------------- 6399 February 2007 640 641This release features a new XYBlockRenderer class, URLs for pie chart labels 642in HTML image maps, a new dataset implementation for open-high-low-close 643charts, support for gradient paint in ClusteredXYBarRenderer, 644StackedXYBarRenderer and legend graphics, a new anchor attribute for 645XYImageAnnotation, improvements to the experimental SWT support, plus a 646number of additions to the API for usability, and many bug fixes. 647 648API Adjustments: 649 650- DateAxis - added get/setTimeZone() methods; 651- DefaultXYDataset - now implements PublicCloneable; 652- StackedXYAreaRenderer2 - added get/setRoundXValues() methods; 653- StandardXYItemLabelGenerator - added new constructor; 654- StandardXYToolTipGenerator - added new constructor; 655- XYBarDataset - added getUnderlyingDataset() and get/setBarWidth() methods; 656- XYDifferenceRenderer - added roundXCoordinates attribute; 657- XYImageAnnotation - added an image anchor attribute, a new constructor, and 658 several accessor methods; 659- XYSeries - added toArray() method; 660 661Bug Fixes: 662 6631654215 - XYPlot renderer with no corresponding dataset; 6641652640 - RangeMarkers do not update properly; 6651649686 - Crosshairs for StackedXYAreaRenderer; 6661647749 - IllegalArgumentException in SWTAxisEditor; 6671644877 - Replacing series data in DefaultXYDataset; 6681644010 - DateAxis.nextStandardDate() ignores timezone; 6691638678 - DateAxis code uses the default calendar; 6701629382 - Tests fail for jfreechart-1.0.3; 6711624067 - StandardXYToolTipGenerator missing constructor; 6721616583 - Serialize ChartDeleter; 6731612770 - Popup menu in wrong position for SWT ChartComposite; 6741611872 - Minute.previous() returns null for minute == 0; 6751608371 - Tick labels overlap with custom NumberFormat; 6761606205 - Draw shared axis last on combined plots; 6771605207 - IntervalMarker exceeds bounds of data area; 6781605202 - SpiderWebPlot method access; 6791599652 - Inverted StackedBar3D problem; 6801598394 - XYBarDataset hiding its proxied object; 6811564967 - Crosshairs on XYDifferenceRenderer; 6821245305 - NullPointerException in writeImageMap(); 6831086307 - Crosshairs on plots with multiple axes. 684 685Also fixed numerous bugs in equals() and clone() methods throughout the API. 686 687 688JFreeChart 1.0.3: 689----------------- 69017 November 2006 691 692This release features several new IntervalXYDataset implementations, some 693significant refactoring of the time period classes (to improve performance 694and correctness), modifications to the PiePlot class to support reordering of 695dataset items, a new event mechanism to allow updating of markers, plus many 696other enhancements, bug fixes and documentation updates. 697 698A new DialPlot implementation has been added to the 'experimental' sources. 699We are looking for people to test this code and provide feedback, so that we 700can stabilize the API and add this code to the main JFreeChart API. 701 702API adjustments: 703 704The following adjustments have been made to the API: 705 706- CategoryLabelEntity - new class; 707- CategoryPointerAnnotation - new class; 708- ChartPanel: added new public method doEditChartProperties(); 709- ComparableObjectItem, ComparableObjectSeries - new classes; 710- CrosshairState: added several new accessor methods; 711- DefaultPieDataset: added sortByKeys() and sortByValues() methods; 712- Markers: a change event mechanism has been added to the Marker class and 713 its subclasses; 714- StackedAreaRenderer: added get/setRenderAsPercentages() methods; 715- XIntervalDataItem, XIntervalSeries and XIntervalSeriesCollection - new 716 classes; 717- XYErrorRenderer: new class; 718- XYInterval, XYIntervalDataItem, XYIntervalSeries and 719 XYIntervalSeriesCollection - new classes; 720- YInterval, YIntervalDataItem, YIntervalSeries, YIntervalSeriesCollection and 721 YWithXInterval - new classes. 722 723Bug Fixes: 724 7251578293 - Unused methods in JDBCXYDataset; 7261572478 - BoxAndWhiskerRenderer potential NullPointerException; 7271569094 - XYStepRenderer with horizontal orientation; 7281565168 - Crosshair position incorrect; 7291564977 - DateAxis missing initial tick label; 7301562759 - StatisticalLineAndShapeRenderer constructor ignores arguments; 7311557141 - Bad locale in ServletUtilities; 7321550045 - TimeSeries.removeAgedItems() method problems; 7331549218 - Chart not displaying when all data values are the same and large; 7341450447 - Marker.setAlpha() ignored; 735 736Also fixed URL generation for legend items, tick mark positioning on the 737DateAxis, the equals() method in the AreaRenderer class, hardcoded outline 738attributes in the XYBubbleRenderer, and potential NullPointerExceptions in the 739ChartPanel class. 740 741 742JFreeChart 1.0.2: 743----------------- 744Released on 25 August 2006. 745 746API adjustments: 747 748The following adjustments have been made to the API (there should be no 749breakage of applications coded to the 1.0.0 or 1.0.1 API): 750 751- CategoryToPieDataset: added accessor methods for underlying dataset, extract 752 type and index (feature request 1477915); 753- DefaultXYDataset: New dataset implementation that uses double[] arrays; 754- DefaultXYZDataset: New dataset implementation that uses double[] arrays; 755- LegendItemBlockContainer: New container used in legends (enables 756 legend item entities again); 757- MultiplePiePlot: Added new fields aggregatedItemsKey and 758 aggregatedItemsPaint, plus accessor methods - see bug 1190647; 759- SpiderWebPlot: Added new fields toolTipGenerator and urlGenerator, plus 760 accessor methods (see patch 1463455); 761- StackedBarRenderer3D: Added new flag (renderAsPercentages), plus accessor 762 methods, that controls whether the data items are displayed as values or 763 percentages. Two new constructors are also added (see patch 1459313); 764- XYPolygonAnnotation: Added new accessor methods. 765 766Patches: 767 7681459313 - Add renderAsPercentages option to StackedBarRenderer3D; 7691462727 - Modify SpiderWebPlot to support zero values; 7701463455 - Modify SpiderWebPlot to support mouse clicks, tool tips and URLs; 771 772Bug Fixes: 773 7741514904 - Background image alpha in Plot class; 7751499140 - ClusteredXYBarRenderer with margin not drawing correctly; 7761494936 - LineAndShapeRenderer generates entity for non-visible item; 7771493199 - NPE drawing SpiderWebPlot with null info; 7781480978 - AbstractPieItemLabelGenerator.clone() doesn't clone percentFormat; 7791472942 - DateAxis.equals() broken; 7801468794 - StatisticalLineAndShapeRenderer doesn't draw error bars correctly 781 when the plot has a horizontal orientation; 782 - AbstractCategoryItemRenderer doesn't check seriesVisibleInLegend 783 flag before creating new item; 7841440415 - Bad distribution of pie chart section labels; 7851440346 - Bad manifest entry for JCommon in JFreeChart jar file; 7861435461 - NumberAxis.equals() ignores rangeType field; 7871435160 - XYPointerAnnotation.equals() ignores x and y fields; 7881398672 - LegendItemEntities not working; 7891380480 - StandardXYItemRenderer problems with Double.NaN; 7901190647 - Legend and section color mismatch for MultiplePiePlot. 791 792Miscellaneous Changes: 793 794- Updated CandlestickRenderer, CyclicXYItemRenderer, HighLowRenderer, 795 XYStepAreaRenderer and TimeSeriesURLGenerator to call dataset methods that 796 return double primitive only; 797- Updated XYPolygonAnnotation, adding new accessor methods and fixing problems 798 in the equals()/hashCode() methods; 799- ChartFactory.createStackedXYAreaChart() now uses StackedXYAreaRenderer2, for 800 better handling of negative values; 801- Added crosshair support for XYBarRenderer. 802 803Experimental Code: 804 805In this release, some new (incomplete) classes have been included in the 806org.jfree.experimental.* namespace. These classes are not part of the 807standard API, but are included for developers to experiment with and provide 808feedback on. Hopefully in the future, refined versions of these classes will 809be incorporated into the main library. PLEASE NOTE THAT THE API FOR THESE 810CLASSES IS SUBJECT TO CHANGE. 811 812 813JFreeChart 1.0.1: 814---------------- 815Released 27 January 2006. This is primarily a bug fix release. In addition, 816there are some API adjustments (there should be no breakage of applications 817coded to the 1.0.0 API). 818 819API adjustments: 820- BarRenderer: added a new flag (includeBaseInRange), plus accessor 821 methods, that controls whether or not the base value for the bar is 822 included in the range calculated by the findRangeBounds() method; 823- BubbleXYItemLabelGenerator: new class; 824- Range: added a new method expandToInclude(Range, double), this is used by 825 the BarRenderer class; 826- TaskSeriesCollection: added two new methods, getSeries(int) and 827 getSeries(Comparable). 828- TimeSeriesCollection: the domainIsPointsInTime flag has been deprecated. 829 The flag serves no function now that renderers are used to calculate the 830 domain bounds, so you can safely delete any calls to the 831 setDomainIsPointsInTime() method; 832- XYPlot: added a new getAnnotations() method; 833- XYSeries: the update(int, Number) method has been deprecated and a new method 834 updateByIndex(int, Number) has been added; 835 836Bug fixes: 837 8381243050 - XYBarRenderer doesn't show entire range of values for a 839 TimeSeriesCollection; 8401373371 - XYBubbleRenderer doesn't support item labels; 8411374222 - BarRenderer contains JDK 1.4 specific code; 8421374328 - LegendItem serialization problem; 8431377239 - Bad argument checking in Quarter constructor; 8441379331 - Incorrect drawing of TextTitle at LEFT or RIGHT position; 8451386328 - RingPlot entity incorrect; 8461400442 - Inconsistent treatment of null and zero values in PiePlot; 8471401856 - Bad rendering for non-zero base values in BarRenderer; 8481403043 - NullPointerException in CategoryAxis; 8491408904 - NumberAxis3D assumes CategoryPlot; 8501415480 - XYTextAnnotation equals() method doesn't check (x, y); 851 852 853JFreeChart 1.0.0: 854---------------- 855Released on 2 December 2005. 856