Statistiques
| Révision :

root / TXM / trunk / bundles / org.txm.libs.jfreechart / about.html @ 3730

Historique | Voir | Annoter | Télécharger (66,94 ko)

1
JFreeChart
2
==========
3

    
4
Version 2.0.0, not yet released.
5

    
6
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.jfree/jfreechart/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.jfree/jfreechart)
7

    
8
Overview
9
--------
10
JFreeChart is a comprehensive free chart library for the Java™ platform that 
11
can be used on the client-side (JavaFX and Swing) or the server side, with
12
export to multiple formats including SVG, PNG and PDF.
13

    
14
![JFreeChart sample](http://jfree.org/jfreechart/images/coffee_prices.png)
15

    
16
The home page for the project is:
17

    
18
http://www.jfree.org/jfreechart
19

    
20
JFreeChart requires JDK 11 or later.  For Java 8 support, check the `v1.5.x` branch.
21

    
22
The library is licensed under the terms of the GNU Lesser General Public 
23
License (LGPL) version 2.1 or later.
24

    
25

    
26
JavaFX
27
------
28
JFreeChart can be used with JavaFX via the `JFreeChart-FX` extensions:
29

    
30
https://github.com/jfree/jfreechart-fx
31

    
32
Demos
33
-----
34
A small set of demo applications can be found in the following projects here
35
at GitHub:
36

    
37
* [JFree-Demos](https://github.com/jfree/jfree-demos "JFree-Demos Project Page at GitHub")
38
* [JFree-FXDemos](https://github.com/jfree/jfree-fxdemos "JFree-FXDemos Project Page at GitHub")
39

    
40
A more comprehensive set of demos, plus the JFreeChart Developer Guide, is a reward at most
41
tiers of the [JFree sponsorship](https://github.com/sponsors/jfree) program.  Thanks for supporting the JFree projects!
42

    
43
For Developers
44
--------------
45

    
46
### Using JFreeChart
47
To use JFreeChart in your projects, add the following dependency to your build tool:
48

    
49
    <dependency>
50
        <groupId>org.jfree</groupId>
51
        <artifactId>jfreechart</artifactId>
52
        <version>1.5.3</version>
53
    </dependency>
54

    
55

    
56
### Building JFreeChart
57
You can build JFreeChart using Maven by issuing the following command from the root directory of the project:
58

    
59
    mvn clean install
60

    
61
The build requires JDK 11 or later.
62

    
63

    
64
### Migration
65
When migrating from JFreeChart 1.0.x to JFreeChart 1.5.0, please be aware of the following API changes:
66

    
67
* all the classes from JCommon that are used by JFreeChart have integrated within the JFreeChart jar file within a different package than before (you will need to change your imports);
68
* many methods `getBaseXXX()/setBaseXXX()` have been renamed `setDefaultXXX()/getDefaultXXX()`;
69
* the `ChartUtilities` class has been renamed `ChartUtils`;
70
* all the classes relating to pseudo-3D charts have been removed, as much better 3D charts are offered by [Orson Charts](https://github.com/jfree/orson-charts) so we prefer not to maintain the pseudo-3D chart code within JFreeChart;
71
* the `SegmentedTimeline` class has been removed due to being (a) complex, (b) not always being correct and, as a result, generating too many support requests;
72
* the `org.jfree.chart.utils.ParamChecks` class has been renamed `org.jfree.chart.utils.Args`.
73

    
74
Please refer to [Issue 66](https://github.com/jfree/jfreechart/issues/66) for additional info.
75

    
76

    
77
History
78
-------
79

    
80
##### Version 2.0 (not yet released)
81
- use `ThreadLocal` for calendars in time series datasets ([#171](https://github.com/jfree/jfreechart/pull/171));
82
- added `valueVisible` flag to `MeterPlot` ([#231](https://github.com/jfree/jfreechart/pull/231));
83
- modify buffer in `ChartPanel` to handle high DPI displays ([#170](https://github.com/jfree/jfreechart/issues/170));
84
- add options to control pan vs zoom in `ChartPanel` ([#172](https://github.com/jfree/jfreechart/pull/172));
85
- observe series visibility flags in `ClusteredXYBarRenderer` ([#89](https://github.com/jfree/jfreechart/pull/89));
86
- observe axis visibility flag in `PeriodAxis` ([#198](https://github.com/jfree/jfreechart/issues/198));
87
- fix for exception on extreme zoom on `NumberAxis` (bug #64);
88
- fix tick label font for `LogAxis` with number format override ([#98](https://github.com/jfree/jfreechart/issues/98));
89
- remove alpha channel from copy-to-clipboard (fixes bug #182);
90
- apply rendering hints to overlays - fixes bug #187;
91
- modify `TextTitle` to throw `IllegalArgumentException` rather than `NullPointerException` ([#205](https://github.com/jfree/jfreechart/issues/205));
92
- fix bugs on crosshair labels ([#189](https://github.com/jfree/jfreechart/pull/189), [#194](https://github.com/jfree/jfreechart/pull/194));
93
- removed `ObjectUtils` class ([#163](https://github.com/jfree/jfreechart/pull/163));
94
- removed unused `URLUtilities` class ([#162](https://github.com/jfree/jfreechart/pull/162))
95
- fixed `LayeredBarRenderer` (bugs [#169](https://github.com/jfree/jfreechart/issues/169) and [#175](https://github.com/jfree/jfreechart/issues/175));
96
- minor fix for `DefaultPieDataset` (bugs [#212](https://github.com/jfree/jfreechart/issues/212))
97
- fix `isJFreeSVGAvailable()` method (bugs [#207](https://github.com/jfree/jfreechart/issues/207))
98
- add new methods to access maps for datasets, renderers and axes in plots ([#201](https://github.com/jfree/jfreechart/issues/201));
99
- update French translations (bug #186);
100
- fix "Save_as" entries in localisation files (bug #184);
101
- add flags for visibility of outliers in `BoxAndWhiskerRenderer` ([#79](https://github.com/jfree/jfreechart/pull/79));
102
- added generics;
103
- `DefaultIntervalCategoryDataset` no longer allows null keys in constructor (this
104
  is a consequence of introducing generics);
105
- update required JDK to version 11.
106

    
107
##### Version 1.5.0 (5 November 2017)
108
- all JavaFX classes moved to a separate project;
109
- added cleaner method to create histograms in `ChartFactory`;
110
- JCommon removed as a dependency, and required classes incorporated directly (including package rename);
111
- pull request #4 improvements to `XYStepRenderer`;
112
- bug #36 fix for crosshairs with multiple datasets / axes;
113
- bug #25 fix for `DateAxis.previousStandardDate()` method;
114
- bug #19 fix for default time zone in `SegmentedDateAxis`;
115
- SourceForge #1147 improve performance of `CategoryPlot` mapping datasets to axes;
116
- moved SWT code out into separate projects;
117
- moved demo programs to a separate project;
118
- dropped the Ant build;
119

    
120
##### Version 1.0.19 (31-Jul-2014)
121
- fixed clipping issues for combined plots in JavaFX;
122
- fixed a memory leak in the new JavaFX `ChartCanvas` class;
123
- `CombinedDomainXYPlot` and `CombinedRangeXYPlot` now take into account the pannable flags in the subplots;
124
- `FastScatterPlot` panning direction is corrected;
125
- added rendering hints to sharpen gridlines and borders in most output formats;        
126
- JFreeSVG updated to version 2.0;
127
- included a preview of JSFreeChart, a 2D chart library written in JavaScript that is conceptually similar to JFreeChart but runs directly in a web browser.
128

    
129
##### Version 1.0.18 (3-Jul-2014)
130
- added JavaFX support via `FXGraphics2D`;
131
- improved `LogAxis` labelling;
132
- improved numeric tick labelling;
133
- center text support in `RingPlot`;
134
- `stepPoint` attribute in the `XYStepAreaRenderer`;
135
- other minor improvements and bug fixes.
136

    
137
##### Version 1.0.17 (22-Nov-2013)
138
- Enhanced `XYSplineRenderer` with new area fill (contributed by Klaus Rheinwald);
139
- added a notify flag to all datasets that extend `AbstractDataset`;
140
- extended `TimeSeriesCollection` to validate `TimeSeries` keys for uniqueness;
141
- added a new `DirectionalGradientPaintTransformer` (by Peter Kolb);
142
- updated `OHLCSeries`;
143
- added `HMSNumberFormat`;
144
- updated JCommon to version 1.0.21 (includes rotated text improvements) and fixed some minor bugs.
145

    
146
###### Bug Fixes
147
- 977  : Multithreading issue with `DateAxis`;
148
- 1084 : `BorderArrangement.add()` possible `ClassCastException`;
149
- 1099 : `XYSeriesCollection.removeSeries(int)` does not deregister listener;
150
- 1109 : `WaterfallBarRenderer` uses wrong color for diff 0.
151

    
152

    
153
##### Version 1.0.16 (13-Sep-2013)
154

    
155
*** THIS RELEASE REQUIRES JDK/JRE 1.6.0 OR LATER. ***
156

    
157
- Provided subscript/superscript support for axis labels (via `AttributedString`);
158
- new axis label positioning options;
159
- simplified `ChartFactory` methods;
160
- added new methods to `DatasetUtilities` to interpolate y-values in `XYDatasets`;
161
- added URLs to labels on `CategoryAxis`;
162
- seamless integration with JFreeSVG (http://www.jfree.org/jfreesvg/) and OrsonPDF 
163
(http://www.object-refinery.com/pdf/);
164
- improved the consistency of the `SWTGraphics2D` implementation;  
165

    
166
All the JUnit tests have been upgraded to JUnit 4.
167

    
168
###### Bug Fixes
169

    
170
- 1107 : Fixed TimeZone issue in `PeriodAxis`;
171

    
172
Also fixed a line drawing issue with the `StackedXYAreaRenderer`, and a memory 
173
leak in the SWT `ChartComposite` class.
174

    
175

    
176
##### Version 1.0.15 (4-Jul-2013)
177
- Added support for non-visible series in `XYBarRenderer`;
178
- minor gridlines in `PolarPlot`;
179
- legend item ordering;
180
- chart editor enhancements;
181
- updates to `StandardDialScale`;
182
- localisation files for Japanese;
183
- refactored parameter checks.  
184

    
185
This release also fixes a minor security flaw in the `DisplayChart` class, detected and reported by OSI Security:
186

    
187
http://www.osisecurity.com.au/advisories/jfreechart-path-disclosure
188

    
189
###### Patches
190

    
191
- 3500621 : `LegendTitle` order attribute (by Simon Kaczor);
192
- 3463807 : `ChartComposite` does not dispose popup (by Sebastiao Correia);
193
- 3204823 : `PaintAlpha` for 3D effects (by Dave Law);
194

    
195
###### Bug Fixes
196

    
197
- 3561093 : Rendering anomaly for `XYPlots`;
198
- 3555275 : `ValueAxis.reserveSpace()` problem for axes with fixed dimension;
199
- 3521736 : `DeviationRenderer` optimisation (by Milan Ramaiya);
200
- 3514487 : `SWTGraphics2D` `get/setStroke()` problem;
201
- 3508799 : `DefaultPolarItemRenderer` does not populate `seriesKey` in `LegendItem`;
202
- 3482106 : Missing text in `SWTGraphics2D` (by Kevin Xu);
203
- 3484408 : Maven fixes (Martin Hoeller);
204
- 3484403 : `DateAxis` endless loop (by Martin Hoeller);
205
- 3446965 : `TimeSeries` calculates range incorrectly in `addOrUpdate()`;
206
- 3445507 : `TimeSeriesCollection.findRangeBounds()` regression;
207
- 3425881 : `XYDifferenceRenderer` fix (by Patrick Schlott/Christoph Schroeder);
208
- 2963199 : SWT print job (by Jonas Rüttimann);
209
- 2879650 : Path disclosure vulnerability in `DisplayChart` servlet;
210

    
211
Also fixed a rendering issue for polar charts using an inverted axis.
212

    
213
##### Version 1.0.14 (20-Nov-2011)
214
This release contains:
215

    
216
- support for multiple and logarithmic axes with `PolarPlot`;
217
- optional drop-shadows in plot rendering;
218
- fitting polynomial functions to a data series;
219
- some performance improvements in the `TimeSeriesCollection` class;
220
- mouse wheel rotation of pie charts;
221
- improved Maven support.
222

    
223
###### Patches
224

    
225
- 3435734 : Fix lines overlapping item labels (by Martin Hoeller);
226
- 3421088 : Bugfix for misalignment in `BoxAndWhiskerRenderer`;
227
- 2952086 : Enhancement for finding bounds in `XYZDatasets`;
228
- 2954302 : `CategoryPointerAnnotation` line calculation;
229
- 2902842 : `HistogramDataset.addSeries()` fires change change event (by Thomas A Caswell);
230
- 2868608 : Whisker width attribute for `BoxAndWhiskerRenderer` (by Peter Becker);
231
- 2868585 : Added `useOutlinePaint` flag for `BoxAndWhiskerRenderer` (by Peter Becker);
232
- 2850344 : `PolarPlot` enhancements (by Martin Hoeller);
233
- 2795746 : Support for polynomial regression;
234
- 2791407 : Fixes for `findRangeBounds()` in various renderers.
235

    
236
###### Bug Fixes
237

    
238
- 3440237 : Shadows always visible;
239
- 3432721 : `PolarPlot` doesn't work with logarithmic axis;
240
- 3433405 : `LineChart3D` - Problem with Item Labels;
241
- 3429707 : `LogAxis` endless loop;
242
- 3428870 : Missing argument check in `TextAnnotation`;
243
- 3418287 : `RelativeDateFormatTest.java` is locale dependent;
244
- 3353913 : Localisation fixes for `ChartPanel`, `CompassPlot` and `PiePlot3D`;
245
- 3237879 : `RingPlot` should respect `getSectionOutlineVisible()`;
246
- 3190615 : Added missing `clear()` method in `CategoryTableXYDataset`;
247
- 3165708 : `PolarChartPanel` localisation fix;
248
- 3072674 : Bad handling of `NaN` in `DefaultStatisticalCategoryDataset`;
249
- 3035289 : `StackedXYBarRenderer` should respect series/item visible flags;
250
- 3026341 : Check for null in `getDomain/RangeBounds()` for `XYShapeRenderer`;
251
- 2947660 : `AbstractCategoryRenderer` fix null check in `getLegendItems()`;
252
- 2946521 : `StandardDialScale` check `majorTickIncrement` argument;
253
- 2876406 : `TimeTableXYDataset` should support `Comparable` for series keys;
254
- 2868557 : `BoxAndWhiskerRenderer` should fire change event in `setMedianVisible()`;
255
- 2849731 : For `IntervalCategoryDataset` and `IntervalXYDataset`, fix `iterateRangeBounds()` in `DatasetUtilities`;
256
- 2840132 : `AbstractXYItemRenderer` `drawAnnotations` doesn't set renderer index;
257
- 2810220 : Offset problem in `StatisticalBarRenderer`;
258
- 2802014 : Dial value border too small;
259
- 2781844 : `XYPointerAnnotation` arrow drawing;
260
- 1937486 : `AreaRenderer` doesn't respect `AreaRendererEndType.LEVEL`;
261

    
262
Also fixed:
263
- use of simple label offset in `PiePlot`;
264
- cached `minY` and `maxY` in `TimeSeries.createCopy()`;
265
- scaling issues for charts copied to the clipboard;
266
- use of timezone in `TimeTableXYDataset` constructor;
267
- duplicate series names in `XYSeriesCollection`;
268
- `HistogramDataset` fires a change event in `addSeries()`;
269
- check visibility of main chart title before drawing it;
270
- fixed serialization of `PowerFunction2D`, `NormalDistributionFunction2D`, and `LineFunction2D`;
271
- item label positioning for the `AreaRenderer` class when the plot has an horizontal orientation.
272

    
273
##### Version 1.0.13 (17-Apr-2009)
274

    
275
> SPECIAL NOTICE:  There will be a birds-of-a-feather session for JFreeChart at this year's JavaOne conference in San Francisco.  The session is scheduled for 6.45pm to 7.35pm on Wednesday 3 June.                        
276

    
277
This release contains:
278

    
279
- updates to the `ChartPanel` class to support copying charts to the clipboard, 
280
  panning and mouse-wheel zooming, and an overlay mechanism that supports
281
  crosshairs;
282
- enhancements to the auto-range calculation for axes, providing the ability
283
  to use subranges only and also to skip hidden series;
284
- updates for many of the `CategoryItemRenderer` implementations to ensure that
285
  they respect the `seriesVisible` flags;
286
- an improvement to the `TimeSeries` class so that it is no longer necessary to
287
  specify the time period type in the constructor;
288
- a new `SamplingXYLineRenderer` for improving the performance of time series
289
  charts with large datasets;
290
- the `XYSeries/XYSeriesCollection` classes now cache the minimum and maximum
291
  data values to improve the performance of charts with large datasets;
292
- entities are now created for the chart, data area and axes, allowing mouse
293
  clicks to be detected for these regions;
294
- added a bar alignment factor to the `XYBarRenderer` class;
295
- a new `errorIndicatorStroke` field for the `StatisticalLineAndShapeRenderer` and `XYErrorRenderer` classes;
296
- added a new `HeatMapDataset` interface, `DefaultHeatMapDataset` implementation,
297
  and a `HeatMapUtilities` class to make it easier to create heat map charts;
298
- there is a new flag to allow an `XYDataImageAnnotation` to be included in the
299
  automatic range calculation for the axes;
300
- additional attributes in the `XYTextAnnotation` class;
301
- added a `sampleFunction2DToSeries()` method to the `DatasetUtilities` class;
302
- some changes to the `ChartPanel` class that help to work around a regression in
303
  JRE 1.6.0_10 relating to drawing in XOR mode.  Regarding this final point:
304
     * the default value for the `useBuffer` flag has changed to true, which means
305
       that all charts will, by default, be rendered into an off-screen image
306
       before being displayed in the `ChartPanel`;
307
     * the zoom rectangle is drawn using XOR mode *only* when the `useBuffer`
308
       flag has been set to false.
309
  For most usage, this should improve performance (but at the cost of using more
310
  memory for each `ChartPanel` used in your application);
311

    
312
###### Bug Fixes
313

    
314
- 2690293 : Problem with Javascript escape characters;
315
- 2617557 : `StandardDialScale` ignored `tickLabelPaint`;
316
- 2612649 : `Stroke` selection in plot property editor;
317
- 2583891 : `SWTGraphics2D.fillPolygon()` not implemented;
318
- 2564636 : `Month` constructor ignores Locale;
319
- 2502355 : `ChartPanel` sending multiple events;
320
- 2490803 : `PeriodAxis.setRange()` method doesn't take into account that the axis
321
          displays whole periods;
322

    
323
In addition, a bug in the `SlidingCategoryDataset` class has been fixed, the
324
correct outline paint is now used by `GradientXYBarPainter`, a new method
325
has been added to the `ImageMapUtilities` class to escape special characters
326
in Javascript strings to avoid problems with the OverLIB and DynamicDrive
327
tooltips, and there are some important fixes in the `LogAxis` class.
328

    
329
This release passes 2110 JUnit tests (0 failures) on JRE 1.6.0_12.
330

    
331

    
332
##### Version 1.0.12 (31-Dec-2008)
333

    
334
This release adds 
335
- support for minor tick marks;
336
- mapping datasets to more than one axis;
337
- an important fix for the `XYSeries` class (relating to the `addOrUpdate()` method);
338
- plus numerous other bug fixes.
339

    
340
This release passes 1996 JUnit test (0 failures) on JRE 1.6.0_10.
341

    
342
###### API Adjustments
343
- `CategoryPlot` : added `mapDatasetToDomainAxes()` and `mapDatasetToRangeAxes()` methods;
344
- `Month` : added a new constructor `Month(Date, TimeZone, Locale)` and deprecated `Month(Date, TimeZone)`;
345
- `Quarter` : added a new constructor `Quarter(Date, TimeZone, Locale)` and deprecated `Quarter(Date, TimeZone)`;
346
- `XYPlot` : added `mapDatasetToDomainAxes()` and `mapDatasetToRangeAxes()` methods;
347
- `Year` : added a new constructor `Year(Date, TimeZone, Locale)` and deprecated `Year(Date, TimeZone)`;
348

    
349
###### Bug Fixes
350
- 2471906 : `XYAreaRenderer` with dashed outline - performance problem;
351
- 2452078 : `StackedAreaChart` has gaps;
352
- 2275695 : `NullPointerException` for `SubCategoryAxis` on plot with null dataset;
353
- 2221495 : `XYLineAnnotation` with dashed stroke;
354
- 2216511 : `SWTBarChartDemo1` throws `RuntimeException`;
355
- 2201869 : `DateAxis` tick label position error;
356
- 2121818 : Label link lines for very thin `RingPlot`;
357
- 2113627 : `XYStepRenderer` item labels;
358
- 1955483 : `XYSeries.addOrUpdate()` problem.
359

    
360
Also fixed `StackedXYBarRenderer` which was ignoring the `shadowsVisible` attribute.
361

    
362

    
363
##### Version 1.0.11 (18-Sep-2008)
364

    
365
This release features:
366
- a new chart theming mechanism to allow charts to be restyled conveniently;
367
- a new `BarPainter` mechanism to enhance the appearance of bar charts;
368
- a new `XYShapeRenderer` class;
369
- a scaling facility for the `XYDrawableAnnotation` for drawing images within specific data coordinates;
370
- some new classes (`XYTaskDataset`, `XYDataImageAnnotation` and `XYTitleAnnotation`);
371
- a modification to the `Year` class to support an extended range; 
372
- various bug fixes and API improvements.  
373

    
374
There is an important bug fix for the `StackedBarRenderer3D` class (see bug 2031407).
375

    
376
This release passes 1,961 JUnit tests (0 failures) on JRE 1.6.0_07.
377

    
378
###### API Adjustments
379
- `AbstractRenderer` - added `clearSeriesPaints()` and `clearSeriesStrokes()` methods;
380
- `BarRenderer` - added `shadowPaint` attribute;
381
- `CategoryAxis` - added `getCategoryMiddle()` method;
382
- `CategoryPlot` - added `getRendererCount()` method;
383
- `ChartFactory` - added `get/setChartTheme()` methods;
384
- `ChartPanel` - increased default maximum drawing width and height;
385
- `ChartTheme` - new interface;
386
- `ChartUtilities` - added `applyCurrentTheme()` method;
387
- `CompositeTitle` - added `backgroundPaint` attribute;
388
- `GradientBarPainter` - new class;
389
- `LegendTitle` - added `getWrapper()` method;
390
- `OHLCSeriesCollection` - added `xPosition` attribute;
391
- `PaintScaleLegend` - new subdivisions field;
392
- `PiePlot` - added `autoPopulate` flags, and methods to clear section attributes;
393
- `Plot` - added `setDrawingSupplier()` method;
394
- `RegularTimePeriod` - the `DEFAULT_TIME_ZONE` field has been deprecated in this release;
395
- `RelativeDateFormat` - added methods to control formatting of hours and minutes - see patch 2033092;
396
- `StandardChartTheme` - new class;
397
- `XYItemRendererState` - new methods;
398
- `XYPlot` - added `getRendererCount()` method;
399
- `XYShapeRenderer` - new class;
400
- `XYTaskDataset` - new class.
401

    
402
###### Patches
403
- 1997549 : Status calls to `XYItemRendererState` [Ulrich Voigt];
404
- 2006826 : `CompositeTitle` drawing fix;
405
- 2033092 : Additional formatters for `RelativeDateFormat` [Cole Markham];
406

    
407
###### Bug Fixes
408
- 1994355 : `ChartComposite` listener type;
409
- 2031407 : Incorrect rendering in `StackedBarRenderer3D`;
410
- 2033721 : `WaferMapRenderer`;
411
- 2051168 : No key in `LegendItemEntity` for pie charts;
412

    
413
Also fixed drawing of alternate grid bands in `SymbolAxis`, the `totalWeight` 
414
calculation in the `CombinedXXXPlot` classes, a `NullPointerException` in the
415
`XYPlot` class when drawing quadrants, outline visibility in the 
416
`CategoryPlot` class, and auto-range calculations with `XYBarRenderer`.
417

    
418
##### Version 1.0.10 (8-Jun-2008)
419

    
420
This release contains various bug fixes and minor enhancements to JFreeChart.
421

    
422
- PiePlot labelling has been enhanced (new curve options, and more robust bounds checking);
423
- The BoxAndWhiskerRenderer now has a maximumBarWidth attribute;
424
- the XYStepRenderer has a new stepPoint attribute;
425
- The RelativeDateFormat class has new options;
426
- There are new dataset classes (SlidingCategoryDataset and SlidingGanttDataset) that permit a subset of categories to be plotted, and allow charts based on these datasets to simulate scrolling.  
427
- There is a new ShortTextTitle class.
428

    
429
This release passes 1,929 JUnit tests (0 failures) on JRE 1.6.0_03.
430

    
431
###### API Adjustments:
432

    
433
- BoxAndWhiskerRenderer - added maximumBarWidth attribute (see patch 1866446);
434
- ChartPanel - the zoomPoint attribute has been changed from Point to Point2D;
435
- DatasetUtilities - iterateCategoryRangeBounds() is deprecated, the method has been renamed iterateRangeBounds(CategoryDataset) for consistency;
436
- DefaultKeyedValue - the constructor now prevents a null key;
437
- LogFormat - now has a 'powerLabel' attribute;
438
- ShortTextTitle - a new title class;
439
- SlidingCategoryDataset - new class;
440
- SlidingGanttDataset - new class;
441
- TimeSeriesCollection - getSeries(String) changed to getSeries(Comparable);
442
- XIntervalSeriesCollection - added series removal methods;
443
- YIntervalSeriesCollection - added series removal methods;
444
- XYIntervalSeriesCollection - added series removal methods;
445

    
446
`PublicCloneable` is now implemented by a number of classes that didn't previously implement the interface - this should improve the reliability of chart cloning.
447

    
448
###### Patches
449

    
450
- 1943021 : Fix for MultiplePiePlot [Brian Cabana];
451
- 1925366 : Speed improvement for DatasetUtilities [Rafal Skalny];
452
- 1918209 : LogAxis createTickLabel() changed from private to protected [Andrew Mickish];
453
- 1914411 : Simplification of plot event notification [Richard West];
454
- 1913751 : XYPlot and CategoryPlot addMarker() methods with optional notification [Richard West];
455
- 1902418 : Bug fix for LogAxis vertical labels [Andrew Mickish];
456
- 1901599 : Fixes for XYTitleAnnotation [Andrew Mickish];
457
- 1891849 : New curve option for pie chart label links [Martin Hilpert];
458
- 1874890 : Added step point to XYStepRenderer [Ulrich Voigt];
459
- 1873328 : Enhancements to RelativeDateFormat [Michael Siemer];
460
- 1871902 : PolarPlot now has angleTickUnit attribute [Martin Hoeller];
461
- 1868745 : Fix label anchor points on LogAxis [Andrew Mickish];
462
- 1866446 : Added maximumBarWidth to BoxAndWhiskerRenderer [Rob Van der Sanden];
463

    
464
###### Bug Fixes
465

    
466
- 1932146 - PeriodAxis.setRange() doesn't notify listeners;
467
- 1927239 - Fix calculation of cumulative range;
468
- 1926517 - Bugs in data range calculation for combined plots;
469
- 1920854 - PiePlot3D labels drawn multiple times;
470
- 1897580 - Fix for DefaultIntervalCategoryDataset;
471
- 1892419 - Wrong default for minor tick count in LogAxis;
472
- 1880114 - VectorRenderer doesn't work for horizontal plot orientation;
473
- 1873160 - DialPlot clipping issues;
474
- 1868521 - Problem saving charts to JPEG format;
475
- 1864222 - Error on TimeSeries createCopy() method;
476

    
477
The `DatasetUtilities.sampleFunction2D()` has been changed to sample the correct 
478
number of points - you should check any code that calls this method.  The
479
`XYBlockRenderer` class now generates entities.  Bugs in the `removeDomainMarker()`
480
and `removeRangeMarker()` methods in the `CategoryPlot` and `XYPlot` classes have 
481
been fixed.  A bug in the `TimePeriodValues` range calculation has been fixed.
482
Fixes were applied to the `clone()` methods in the `TaskSeries` and 
483
`TaskSeriesCollection` classes.
484

    
485
###### New Experimental Features
486

    
487
Two new classes `CombinedCategoryPlot` and `CombinedXYPlot` have been added to the
488
'experimental' source tree - these were contributed by Richard West (see
489
patch 1924543).
490

    
491
##### Version 1.0.9 (4-Jan-2008)
492

    
493
This release contains an important security patch as well as various bug fixes 
494
and minor enhancements.  Regarding the security patch, please see the 
495
following advisory:
496

    
497
http://www.rapid7.com/advisories/R7-0031.jsp
498

    
499
Note that the fix incorporated in the special JFreeChart 1.0.8a release was
500
flawed in that it broke the URLs in the HTML image maps generated by 
501
JFreeChart.  Further amendments have been made in this release to fix this 
502
problem.
503

    
504
###### API Adjustments
505

    
506
A number of classes have new methods.  Nothing has been removed or deprecated:
507

    
508
- HashUtilities - added hashCode() methods for BooleanList, PaintList and StrokeList;
509
- ImageMapUtilities - added htmlEscape(String);
510
- IntervalMarker - added new constructor;
511
- Range - added intersects(Range) and scale(Range, double);
512
- TextTitle - added protected methods arrangeNN(), arrangeFN() and arrangeRN();
513
- XYDataItem - added getXValue() and getYValue() methods;
514
- XYPlot - added setFixedDomainAxisSpace(AxisSpace, boolean) and setFixedRangeAxisSpace(AxisSpace, boolean);
515
- XYSeriesCollection - added getSeries(Comparable) method.
516

    
517
###### Bug Fixes
518

    
519
- 1852525 - CandlestickChart.getCategoryPlot() - ClassCastException;
520
- 1851416 - testGetFirstMillisecondWithTimeZone fails in 1.0.8a;
521
- 1849333 - 1.0.8a breaks URLs in HTML image maps;
522
- 1848961 - GroupedStackedBarRenderer works only for primary dataset;
523
- 1846063 - Endless loop in paint of XYPlot;
524
- 1840139 - Cross-site scripting vulnerabilities in image map code;
525
- 1837979 - Background image not shown with SWT;
526
- 1460195 - ChartEntity.getImageMapAreaTag() needs nohref;
527
- 1400917 - OverLIBToolTipTagFragmentGenerator not escaping single quote;
528
- 1363043 - Escape Image Map Data;
529
- 1178601 - AbstractRenderer.hashcode() method returns the same value;
530

    
531
In addition, a bug in the constructor for the Week class has been fixed.  
532

    
533
##### Version 1.0.8 (23-Nov-2007)
534
This release is primarily a bug fix release:
535
- a problem with pie chart labeling;
536
- a regression in the `DefaultCategoryDataset` class (and underlying `KeyedValues2D` class);
537
- a cloning bug in the `TimeSeries` class.  
538

    
539
In addition:
540
- the `StatisticalBarRenderer` class has a new `errorIndicatorStroke` field and has been updated to support gradients;
541
- the `StandardDialScale` has had some missing accessor methods implemented;
542
- an override field in the `StandardXYItemRenderer` class has been deprecated;
543
- some warnings reported by FindBugs 1.3.0 have been addressed.
544

    
545
##### Version 1.0.7 (14-Nov-2007)
546
This release features
547
- new classes `DialPlot` and `LogAxis` (previously in experimental);
548
- initial support for minor tick units;
549
- a new anchored zooming option for the `ChartPanel` class;
550
- optional simple labeling on pie charts;
551
- improvements to the "statistical" datasets and underlying data structures;
552
- and numerous bug fixes.
553

    
554
###### API Adjustments
555

    
556
- `CategoryAxis` - added `getCategorySeriesMiddle()` method;
557
- `CategoryPlot` - added methods to remove markers;
558
- `ChartPanel` - added `defaultDirectoryForSaveAs` attribute;
559
- `DialPlot` - new class, an alternative to `MeterPlot`;
560
- `LogAxis` - new class, an alternative to `LogarithmicAxis`;
561
- `NumberTick` - new constructor that allows specification of the tick type;
562
- `NumberTickUnit` - new constructor to specify the minor tick count;
563
- `SymbolAxis` - new methods `get/setGridBandAlternatePaint()`;
564
- `TickType` - new class;
565
- `TickUnit` - added `minorTickCount` attribute;
566
- `ValueTick` - added `tickType` attribute;
567
- `StandardPieSectionLabelGenerator` - new constructors accepting a Locale;
568
- `StandardPieToolTipGenerator` - likewise;
569
- `CategoryPlot` - added `getRangeAxisIndex()`, `zoomDomainAxes()` and `zoomRangeAxes()` methods;
570
- `FastScatterPlot` - added new zooming methods;
571
- `PiePlot` - new attributes to support simple labeling;
572
- `PlotUtilities` - new class;
573
- `PolarPlot` - added new zooming methods;
574
- `ThermometerPlot` - likewise;
575
- `XYPlot` - added methods to remove markers (patch 1823697--same as for `CategoryPlot`), and added new zooming methods; 
576
- `Zoomable` - added new zooming methods to this interface;
577
- `LineAndShapeRenderer` - added `useSeriesOffset` and `itemMargin` attributes;
578
- `MinMaxCategoryRenderer` - implemented `equals()`;
579
- `XYSplineAndShapeRenderer` - new class;
580
- `LogFormat` - new class;
581
- `ChartFactory` - new pie and ring chart creation methods that accept a `Locale`;
582
- `ChartPanel` - added `zoomAroundAnchor` attribute;
583
- `Series` - added `isEmpty()` method;
584
- `BoxAndWhiskerItem` - new convenience constructor;
585
- `DefaultBoxAndWhiskerCategoryDataset` - new remove methods;
586
- `DefaultStatisticalCategoryDataset` - likewise;
587
- `MeanAndStandardDeviation` - added new value accessor methods;
588
- `TimeTableXYDataset` - added `clear()` method;
589
- `Week` - added new constructor;
590
- `KeyedObjects` - added `insertValue()` and `clear()` methods;
591
- `KeyedObjects2D` - added `clear()` method.
592

    
593
###### Patches
594

    
595
- 1823724 - updated `XYDifferenceRenderer` to support item labels;
596
- 1827829 - fixed possible `NullPointerException` in `XYBarRenderer`;
597

    
598
###### Bug Fixes
599

    
600
- 1767315 - `GrayPaintScale.getPaint()` uses wrong value;
601
- 1775452 - Inverted `XYBarRenderer` does not render margins correctly;
602
- 1802195 - `Marker.listenerList` serializable;
603
- 1779941 - `StatisticalBarRenderer` NPE;
604
- 1766646 - `XYBlockRenderer` can't handle empty datasets;
605
- 1763413 - `PeriodAxis` labels fail to display with setInverted;
606
- 1737953 - Zoom doesn't work on `LogAxis` (Demo1);
607
- 1749124 - `JFreeChart` not added as `TitleChangeListener`; 
608

    
609
##### Version 1.0.6 (15-Jun-2007)
610
This release features:
611
- a new `VectorRenderer` (previously in experimental);
612
- a generalised `XYDifferenceRenderer`;
613
- better support for hotspots on legend items;
614
- improved performance for time series charts displaying subsets of data;
615
- support for `GradientPaint` in plot backgrounds;
616
- plus the usual slew of bug fixes and minor feature additions.
617

    
618
###### API Adjustments
619

    
620
- `CategoryItemEntity` - replaced row and column index attributes with row and column key attributes;
621
- `CategoryItemRenderer` - numerous series override settings have been deprecated;
622
- `DefaultPieDataset` - added `insertValues()` method;
623
- `HexNumberFormat` - new class;
624
- `LegendItem` - added dataset and seriesKey attributes;
625
- `Plot` - added new `fillBackground()` method to support `GradientPaint`, and added `is/setOutlineVisible()` methods;
626
- `QuarterDateFormat` - added `GREEK_QUARTERS` field plus a new constructor;
627
- `SimpleHistogramDataset` - added `clearObservations()` and `removeAllBins()` methods;
628
- `TimeSeriesCollection` - added `indexOf()` method;
629
- `URLUtilities` - new class;
630
- `XYItemRenderer` - numerous series override settings have been deprecated;
631
- `XYSeriesCollection` - added indexOf() method.
632

    
633
###### Bug Fixes
634

    
635
- 1735508 - `ClusteredXYBarRenderer` fails with inverted x-axis;
636
- 1726404 - `ChartComposite` tooltips;
637
- 1713474 - `StackedBarRenderer3D` doesn't fill shadows;
638
- 1713401 - `StackedBarRenderer3D` doesn't check `drawBarOutline` flag;
639
- 1701822 - `DefaultBoxAndWhiskerCategoryDataset` doesn't follow contracts;
640
- 1698965 - NPE in `CombinedDomainXYPlot`;
641
- 1690994 - `HideSeriesDemo1` does not work;
642
- 1690654 - Bug in `removeValue()` of `DefaultKeyedValues2D`;
643
- 1562701 - `LegendItemEntity` needs dataset index;
644
- 1486299 - Use `URLEncoder.encode()` for URL generators;
645

    
646
Plus the following bugs that didn't have entries in the database:
647

    
648
- `BarRenderer` - check for series visibility in `getLegendItem()`;
649
- `ChartPanel` - use correct insets for painting chart buffer to screen, update UI for popup menu if LookAndFeel changes;
650
- `DateAxis` - fixed boundary cases for `previousStandardDate()` method;
651
- `LineBorder` - only draw border if area has positive dimensions;
652
- `JFreeChart` - should register as a listener with the default legend;
653
- `StandardXYItemRenderer` - fixed a problem where chart entities are created for non-visible items;
654
- `TimePeriodValuesCollection.getDomainBounds()` now computes the bounds correctly;
655
- `XYLineAndShapeRenderer` - fixed a problem where chart entities are created for non-visible items;
656
- `XYLine3DRenderer` - `equals()` implemented, and serialization fixed;
657
- `XYTitleAnnotation` - fixed `equals()` method;
658
- various resource usage bugs in the experimental `ChartComposite` class;
659

    
660
##### Version 1.0.5 (23-Mar-2007)
661
This release features:
662
- a new `DeviationRenderer` class;
663
- support for item labels in `StackedXYBarRenderer`;
664
- tooltips and URLs in the `CategoryStepRenderer`; and 
665
- many bug fixes.
666

    
667
###### API Adjustments
668

    
669
- `AbstractCategoryItemRenderer` - added `createState()` method;
670
- `StackedXYBarRenderer` - added `get/setRenderAsPercentages()` methods;
671
- `XYIntervalSeries` - added `getXLowValue()`, `getXHighValue()`, `getYLowValue()` and `getYHighValue()`;
672
- `YIntervalSeries` - added `getYLowValue()` and `getYHighValue()` methods;
673
    
674
###### Bug Fixes
675

    
676
- 1681777 - `DefaultCategoryDataset` does not clone data;
677
- 1672552 - Zoom rectangle is lost when the chart is repainted;
678
- 1671645 - `Crosshair` incorrectly positioned in horizontal orientation;
679
- 1669302 - Tick labels in vertical symbol axis;
680
- 1669218 - `CategoryPlot.setDomainAxisLocation()` ignores parameter;
681
- 1667750 - Clip region not restored in `Spider` and `MeterPlot`;
682
- 1663380 - OutputStream not closed;
683
- 1659627 - `IntervalMarker` with `Double.POSITIVE_INFINITY` bound;
684
- 1647269 - `IntervalMarker` with `Double.MAX_VALUE as upper` bound;
685
- 1594477 - `XYBarRenderer` does not render bars on `LogarithmicAxis`;
686
- 1459958 - Log axis zoom function problem;
687
- 880597 - Zooming `ChartPanel` with log axes;
688
- 764561 - Dynamic chart zoom buggy.
689
 
690
Also fixed numerous bugs in equals(), cloning and serialization implementations.  
691

    
692
##### Version 1.0.4 (9-Feb-2007)
693

    
694
This release features:
695
- a new `XYBlockRenderer` class;
696
- URLs for pie chart labels in HTML image maps;
697
- a new dataset implementation for open-high-low-close charts;
698
- support for gradient paint in `ClusteredXYBarRenderer`, `StackedXYBarRenderer` and legend graphics;
699
- a new anchor attribute for `XYImageAnnotation`;
700
- improvements to the experimental SWT support; plus
701
- a number of additions to the API for usability; and 
702
- many bug fixes.
703

    
704
###### API Adjustments
705

    
706
- `DateAxis` - added `get/setTimeZone()` methods;
707
- `DefaultXYDataset` - now implements `PublicCloneable`;
708
- `StackedXYAreaRenderer2` - added `get/setRoundXValues()` methods;
709
- `StandardXYItemLabelGenerator` - added new constructor;
710
- `StandardXYToolTipGenerator` - added new constructor;
711
- `XYBarDataset` - added `getUnderlyingDataset()` and `get/setBarWidth()` methods;
712
- `XYDifferenceRenderer` - added `roundXCoordinates` attribute;
713
- `XYImageAnnotation` - added an image anchor attribute, a new constructor, and several accessor methods;
714
- `XYSeries` - added `toArray()` method;
715

    
716
###### Bug Fixes
717

    
718
- 1654215 - `XYPlot` renderer with no corresponding dataset;
719
- 1652640 - `RangeMarkers` do not update properly;
720
- 1649686 - `Crosshairs` for `StackedXYAreaRenderer`;
721
- 1647749 - `IllegalArgumentException` in `SWTAxisEditor`;
722
- 1644877 - Replacing series data in `DefaultXYDataset`;
723
- 1644010 - `DateAxis.nextStandardDate()` ignores timezone;
724
- 1638678 - `DateAxis` code uses the default calendar;
725
- 1629382 - Tests fail for jfreechart-1.0.3;
726
- 1624067 - `StandardXYToolTipGenerator` missing constructor;
727
- 1616583 - Serialize `ChartDeleter`;
728
- 1612770 - Popup menu in wrong position for SWT `ChartComposite`;
729
- 1611872 - `Minute.previous()` returns null for minute == 0;
730
- 1608371 - Tick labels overlap with custom `NumberFormat`;
731
- 1606205 - Draw shared axis last on combined plots;
732
- 1605207 - `IntervalMarker` exceeds bounds of data area;
733
- 1605202 - `SpiderWebPlot` method access;
734
- 1599652 - Inverted `StackedBar3D` problem;
735
- 1598394 - `XYBarDataset` hiding its proxied object;
736
- 1564967 - Crosshairs on `XYDifferenceRenderer`;
737
- 1245305 - `NullPointerException` in `writeImageMap()`;
738
- 1086307 - Crosshairs on plots with multiple axes.
739

    
740
Also fixed numerous bugs in `equals()` and `clone()` methods throughout the API.
741

    
742
##### Version 1.0.3 (17-Nov-2006)
743

    
744
This release features:
745
- several new `IntervalXYDataset` implementations;
746
- some significant refactoring of the time period classes (to improve performance and correctness);
747
- modifications to the `PiePlot` class to support reordering of dataset items;
748
- a new event mechanism to allow updating of markers, plus
749
- many other enhancements, bug fixes and documentation updates.
750

    
751
A new `DialPlot` implementation has been added to the 'experimental' sources. 
752
We are looking for people to test this code and provide feedback, so that we
753
can stabilize the API and add this code to the main JFreeChart API.
754

    
755
###### API adjustments
756

    
757
The following adjustments have been made to the API:
758

    
759
- `CategoryLabelEntity` - new class;
760
- `CategoryPointerAnnotation` - new class;
761
- `ChartPanel`: added new public method `doEditChartProperties()`;
762
- `ComparableObjectItem`, `ComparableObjectSeries` - new classes;
763
- `CrosshairState`: added several new accessor methods;
764
- `DefaultPieDataset`: added `sortByKeys()` and `sortByValues()` methods;
765
- `Markers`: a change event mechanism has been added to the `Marker` class and its subclasses;
766
- `StackedAreaRenderer`: added `get/setRenderAsPercentages()` methods;
767
- `XIntervalDataItem`, `XIntervalSeries` and `XIntervalSeriesCollection` - new classes;
768
- `XYErrorRenderer`: new class;
769
- `XYInterval`, `XYIntervalDataItem`, `XYIntervalSeries` and `XYIntervalSeriesCollection` - new classes;
770
- `YInterval`, `YIntervalDataItem`, `YIntervalSeries`, `YIntervalSeriesCollection` and `YWithXInterval` - new classes.
771

    
772
###### Bug Fixes
773

    
774
- 1578293 - Unused methods in `JDBCXYDataset`;
775
- 1572478 - `BoxAndWhiskerRenderer` potential `NullPointerException`;
776
- 1569094 - `XYStepRenderer` with horizontal orientation;
777
- 1565168 - Crosshair position incorrect;
778
- 1564977 - `DateAxis` missing initial tick label;
779
- 1562759 - `StatisticalLineAndShapeRenderer` constructor ignores arguments;
780
- 1557141 - Bad locale in `ServletUtilities`;
781
- 1550045 - `TimeSeries.removeAgedItems()` method problems;
782
- 1549218 - Chart not displaying when all data values are the same and large;
783
- 1450447 - `Marker.setAlpha()` ignored;
784

    
785
Also fixed URL generation for legend items, tick mark positioning on the 
786
`DateAxis`, the `equals()` method in the `AreaRenderer` class, hardcoded outline 
787
attributes in the `XYBubbleRenderer`, and potential `NullPointerExceptions` in the
788
`ChartPanel` class.
789

    
790
##### Version 1.0.2 (25-Aug-2006)
791

    
792
###### API adjustments
793

    
794
The following adjustments have been made to the API (there should be no breakage of applications coded to the 1.0.0 or 1.0.1 API):
795

    
796
- `CategoryToPieDataset`: added accessor methods for underlying dataset, extract type and index (feature request 1477915);
797
- `DefaultXYDataset`:  New dataset implementation that uses double[] arrays;
798
- `DefaultXYZDataset`:  New dataset implementation that uses double[] arrays;
799
- `LegendItemBlockContainer`: New container used in legends (enables legend item entities again);
800
- `MultiplePiePlot`:  Added new fields `aggregatedItemsKey` and `aggregatedItemsPaint`, plus accessor methods - see bug 1190647;
801
- `SpiderWebPlot`:  Added new fields `toolTipGenerator` and `urlGenerator`, plus accessor methods (see patch 1463455);
802
- `StackedBarRenderer3D`:  Added new flag (`renderAsPercentages`), plus accessor methods, that controls whether the data items are displayed as values or percentages.  Two new constructors are also added (see patch 1459313);
803
- `XYPolygonAnnotation`: Added new accessor methods.
804

    
805
###### Patches
806

    
807
- 1459313 - Add `renderAsPercentages` option to `StackedBarRenderer3D`;
808
- 1462727 - Modify `SpiderWebPlot` to support zero values;
809
- 1463455 - Modify `SpiderWebPlot` to support mouse clicks, tool tips and URLs;
810

    
811
###### Bug Fixes
812

    
813
- 1514904 - Background image alpha in `Plot` class;
814
- 1499140 - `ClusteredXYBarRenderer` with margin not drawing correctly;
815
- 1494936 - `LineAndShapeRenderer` generates entity for non-visible item;
816
- 1493199 - NPE drawing `SpiderWebPlot` with null info;
817
- 1480978 - `AbstractPieItemLabelGenerator.clone()` doesn't clone `percentFormat`;
818
- 1472942 - `DateAxis.equals()` broken;
819
- 1468794 - `StatisticalLineAndShapeRenderer` doesn't draw error bars correctly when the plot has a horizontal orientation;
820
- `AbstractCategoryItemRenderer` doesn't check `seriesVisibleInLegend` flag before creating new item;
821
- 1440415 - Bad distribution of pie chart section labels;
822
- 1440346 - Bad manifest entry for JCommon in JFreeChart jar file;
823
- 1435461 - `NumberAxis.equals()` ignores `rangeType` field;
824
- 1435160 - `XYPointerAnnotation.equals()` ignores x and y fields;
825
- 1398672 - `LegendItemEntities` not working;
826
- 1380480 - `StandardXYItemRenderer` problems with `Double.NaN`;
827
- 1190647 - Legend and section color mismatch for `MultiplePiePlot`.
828

    
829
###### Miscellaneous Changes
830

    
831
- Updated `CandlestickRenderer`, `CyclicXYItemRenderer`, `HighLowRenderer`, `XYStepAreaRenderer` and `TimeSeriesURLGenerator` to call dataset methods that return double primitive only;
832
- Updated `XYPolygonAnnotation`, adding new accessor methods and fixing problems in the `equals()/hashCode()` methods;
833
- `ChartFactory.createStackedXYAreaChart()` now uses `StackedXYAreaRenderer2`, for better handling of negative values;
834
- Added crosshair support for `XYBarRenderer`.
835

    
836
###### Experimental Code
837

    
838
In this release, some new (incomplete) classes have been included in the 
839
`org.jfree.experimental.*` namespace.  These classes are not part of the 
840
standard API, but are included for developers to experiment with and provide
841
feedback on.  Hopefully in the future, refined versions of these classes will
842
be incorporated into the main library.  PLEASE NOTE THAT THE API FOR THESE
843
CLASSES IS SUBJECT TO CHANGE. 
844

    
845
##### Version 1.0.1 (27-Jan-2006)
846
This is primarily a bug fix release.  In addition, there are some API 
847
adjustments (there should be no breakage of applications coded to the 1.0.0 API).
848

    
849
###### API adjustments
850
- `BarRenderer`: added a new flag (`includeBaseInRange`), plus accessor 
851
    methods, that controls whether or not the base value for the bar is 
852
    included in the range calculated by the `findRangeBounds()` method;
853
- `BubbleXYItemLabelGenerator`: new class;
854
- `Range`: added a new method `expandToInclude(Range, double)`, this is used by 
855
    the `BarRenderer` class;
856
- `TaskSeriesCollection`: added two new methods, `getSeries(int)` and 
857
    `getSeries(Comparable)`;
858
- `TimeSeriesCollection`:  the `domainIsPointsInTime` flag has been deprecated. 
859
  The flag serves no function now that renderers are used to calculate the domain 
860
  bounds, so you can safely delete any calls to the `setDomainIsPointsInTime()`
861
  method;
862
- `XYPlot`: added a new `getAnnotations()` method;
863
- `XYSeries`: the `update(int, Number)` method has been deprecated and a new 
864
  method `updateByIndex(int, Number)` has been added;
865

    
866
###### Bug fixes
867

    
868
- 1243050 - `XYBarRenderer` doesn't show entire range of values for a `TimeSeriesCollection`;
869
- 1373371 - `XYBubbleRenderer` doesn't support item labels;
870
- 1374222 - `BarRenderer` contains JDK 1.4 specific code;
871
- 1374328 - `LegendItem` serialization problem;
872
- 1377239 - Bad argument checking in `Quarter` constructor;
873
- 1379331 - Incorrect drawing of `TextTitle` at LEFT or RIGHT position;
874
- 1386328 - `RingPlot` entity incorrect;
875
- 1400442 - Inconsistent treatment of null and zero values in `PiePlot`;
876
- 1401856 - Bad rendering for non-zero base values in `BarRenderer`;
877
- 1403043 - `NullPointerException` in `CategoryAxis`;
878
- 1408904 - `NumberAxis3D` assumes `CategoryPlot`;
879
- 1415480 - `XYTextAnnotation` equals() method doesn't check (x, y);
880

    
881
##### Version 1.0.0 (2-Dec-2005) 
882
- the first stable release of the JFreeChart class library, all future releases in the 1.0.x series will aim to maintain backward compatibility with this release;
883

    
884
##### Version 1.0.0-rc3 (28-Nov-2005)
885
- the third "release candidate" for version 1.0.0, this release fixes some issues with the 1.0.0-rc2 release (mainly concerning packaging of resource bundles for localisation).
886
- if no significant problems are reported in the next few days, the 1.0.0 "final" release will be posted on 2-Dec-2005.
887

    
888
##### Version 1.0.0-rc2 (25-Nov-2005)
889
- the second "release candidate" for version 1.0.0.  If no problems are reported, 1.0.0 "final" will be released on 2-Dec-2005.
890

    
891
##### Version 1.0.0-rc1 (2-Jun-2005)
892
- this is a "release candidate" for version 1.0.0.  If no significant API problems are reported, this release will be re-released as version 1.0.0.
893

    
894
##### Version 1.0.0-pre2 (10-Mar-2005)
895

    
896
##### Version 1.0.0-pre1 (29-Nov-2004)
897

    
898
##### Version 0.9.21 (9-Sep-2004)
899
- added new axes: `PeriodAxis` and `ModuloAxis`.
900
- split `org.jfree.data` and `org.jfree.chart.renderer` into subpackages for 'category' and 'xy' charts.
901
- Sun PNG encoder is now used, if available.
902
- a new demo application makes it easier to preview the chart types that JFreeChart can create.
903
- added a new series visibility flag to the `AbstractRenderer` class.
904
- added support for `GradientPaint` in interval markers.
905

    
906
##### Version 0.9.20 (7-Jun-2004)
907
- primarily bug fixes.
908

    
909
##### Version 0.9.19 (28-May-2004)
910
- added methods to `XYDataset` that return double primitives;
911
- removed distinction between "primary" and "secondary" datasets, renderers and axes;
912
- added fixed legend item options to `CategoryPlot` and `XYPlot`;
913
- legend changes by Barek Naveh;
914
- removed Log4j dependency;
915
- many, many bug fixes;
916

    
917
##### Version 0.9.18 (15-Apr-2004)
918
- new legend anchor options;
919
- fixed broken JPEG export;
920
- fixed title size problems;
921
- various other bug fixes;
922

    
923
##### Version 0.9.17 (26-Mar-2004)
924
- pie chart enhancements for labelling, shading and multiple pie charts (2D or 3D) on a single plot;
925
- new `PolarPlot` class added;
926
- `XYSeries` can now be sorted or unsorted;
927
- `createBufferedImage()` method can now scale charts;
928
- domain and range markers now support intervals;
929
- item labels are now supported by some `XYItemRenderers`;
930
- tooltip and item label generators now use `MessageFormat` class;
931
- added new `XYBarDataset` class;
932
- added transparency support to PNG export;
933
- numerous other small enhancements and bug fixes;
934

    
935
##### Version 0.9.16 (09-Jan-2004)
936
- this release contains bug fixes and some minor feature enhancements (title and category label wrapping, legend shape scaling, enhanced performance for the `DefaultTableXYDataset` class);
937
- added Spanish localisation files;
938

    
939
##### Version 0.9.15 (28-Nov-2003)
940
- the focus of this release is bug fixes - quite a number of issues have been resolved, please check the bug database for details;
941
- added a new Wafer Map chart type;
942
- added a cyclic axis;
943
- added localisation files for _ru;
944

    
945
##### Version 0.9.14 (17-Nov-2003)
946
- implemented zooming for the `FastScatterPlot` class;
947
- added item label support for stacked bar charts, and new fall back options for item labels that don't fit within bars;
948
- modified the `CategoryAxis` class to allow additional options for the alignment and rotation of category labels;
949
- addition of the `AxisState` class, used in the drawing of axes to eliminate a bug when multiple threads draw the same axis simultaneously;
950
- provided additional attributes in the `DateTickUnit` class to improve labelling on a segmented `DateAxis`;
951
- added support for `GradientPaint` in bar charts;
952
- updated the `PNGEncoder`;
953
- fixes for tick label positioning on axes;
954
- various Javadoc updates;
955
- numerous bug fixes;
956

    
957
##### Version 0.9.13 (26-Sep-2003)
958
         - various enhancements to the stacked area XY charts;
959
         - added a completion indicator for the Gantt chart;
960
         - range and domain markers can now be placed in the foreground or the
961
           background;
962
         - more fixes for cloning and serialization;
963
         - fixed mouse event bug for combined charts;
964
         - fixed bugs in the PngEncoder class;
965
         - incorporated .properties files that were missing from the 0.9.12
966
           distribution;
967

    
968
##### Version 0.9.12 (11-Sep-2003)
969
         - extended box-and-whisker plots to work with the CategoryPlot class
970
           as well as the XYPlot class (based on work by David Browning);
971
         - added a new LayeredBarRenderer (by Arnaud Lelievre);
972
         - added support for stacked area charts with the XYPlot class (thanks
973
           to Richard Atkinson);
974
         - improved HTML image map support (thanks to Richard Atkinson);
975
         - added localized resources for the chart property editors (thanks to
976
           Arnaud Lelievre).  Current translations include French and Portugese
977
           (thanks to Eduardo Ramalho);
978
         - added facility for setting all rendering hints;
979
         - improved support for cloning and serialization;
980
         - fixed a bug in the XYSeries class that prevented the TableXYDataset
981
           from functioning correctly;
982
         - improved date axis labelling with segmented time lines;
983
         - fixed several bugs in the secondary dataset/axis/renderer code;
984
         - fixed bugs in the JDBCCategoryDataset class;
985
         - numerous other bug fixes;
986

    
987
##### Version 0.9.11 (8-Aug-2003)
988
         - added support for box-and-whisker plots, thanks to David Browning;
989
         - lots of bug fixes;
990

    
991
##### Version 0.9.10 (25-Jul-2003)
992
         - added support for multiple secondary axes, datasets and
993
           renderers;
994
         - minor feature enhancements and bug fixes;
995

    
996
##### Version 0.9.9 (10-Jul-2003) 
997

    
998
PLEASE NOTE THAT MAJOR CHANGES HAVE BEEN MADE IN THIS
999
RELEASE AND ONE OR TWO FEATURES MAY BE BROKEN.  PLEASE REPORT BUGS SO THEY CAN
1000
BE FIXED FOR THE NEXT RELEASE.
1001

    
1002
        - merged the HorizontalCategoryPlot and VerticalCategoryPlot classes,
1003
          into the CategoryPlot class;
1004
        - merged the horizontal and vertical axis classes;
1005
        - merged the horizontal and vertical renderer classes;
1006
        - CategoryPlot and XYPlot now support both horizontal and vertical
1007
          orientation via the setOrientation(...) method;
1008
        - merged horizontal and vertical methods in the ChartFactory class;
1009
        - created new combined plot classes: CombinedDomainCategoryPlot,
1010
          CombinedRangeCategoryPlot, CombinedDomainXYPlot and
1011
          CombinedRangeXYPlot (these can all be drawn with a horizontal or
1012
          vertical orientation);
1013
        - Bill Kelemen has enhanced the DateAxis class to handle segmented
1014
          timelines.  This can be used, for example, to skip weekends for
1015
          daily stock price charts;
1016
        - Richard Atkinson has updated the ServletUtilities class;
1017
        - Bryan Scott has added an XYDatasetTableModel class for presenting
1018
          datasets in a JTable;
1019
        - modified XYPlot to allow renderers to use multiple passes through
1020
          the dataset;
1021
        - added new XYDifferenceRenderer;
1022
        - added support for colored bands between gridlines in XYPlot;
1023
        - added new XYDrawableAnnotation class;
1024
        - added a new attribute to control the order of dataset rendering in
1025
          a CategoryPlot;
1026
        - extended the value label mechanism for the renderers, to allow
1027
          better (per series) control over label generation, positioning and
1028
          visibility;
1029
        - CategoryItemTooltipGenerator has been renamed
1030
          CategoryItemLabelGenerator, since it is now being used to generated
1031
          item labels as well as tooltips;
1032
        - there is now support for horizontal stacked 3D bar charts;
1033
        - added support for range markers against secondary axis in a
1034
          CategoryPlot;
1035
        - added labels to domain and range markers;
1036
        - added a new HistogramDataset class (contributed by Jelai Wang) to
1037
          make it easier to create histograms with JFreeChart;
1038
        - moved the DrawingSupplier into the plot class, renderers now
1039
          reference the supplier from the plot (parent plot for combined and
1040
          overlaid charts).  This means that renderers now share a single
1041
          DrawingSupplier by default, which simplifies the creation of
1042
          combined charts;
1043
        - changed the ColorBarAxis classes that extended the NumberAxis class,
1044
          to a single ColorBar class that wraps a ValueAxis (may have broken
1045
          one or two things in the process);
1046
        - Barak Naveh has contributed new classes MatrixSeries and
1047
          MatrixSeriesCollection, along with demos:  BubblyBubblesDemo.java
1048
          and BubblyBubblesDemo2.java;
1049
        - the TextTitle class now has a background paint attribute;
1050
        - the StandardLegend class now generates LegendEntity objects if a
1051
          ChartRenderingInfo instance is supplied to the draw(...) method;
1052
        - extended the CategoryTextAnnotation class to take into account a
1053
          category anchor point.  See the SurveyResultsDemo.java application
1054
          for an example;
1055
        - included numerous bug fixes;
1056

    
1057
##### Version 0.9.8 (24-Apr-2003)
1058
        - changed package naming from com.jrefinery.* to org.jfree.*;
1059
        - added new TimePeriodValuesCollection class;
1060
        - added MIME type code to ServletUtilities class;
1061
        - reversed the order of PieDataset and KeyedValuesDataset in
1062
          the class hierarchy;
1063
        - reversed the order of CategoryDataset and KeyedValues2DDataset
1064
          in the class hierarchy;
1065
        - minor bug fixes;
1066

    
1067
##### Version 0.9.7 (11-Apr-2003)
1068
        - added a new ValueDataset interface and DefaultValueDataset
1069
          class, and changed the CompassPlot class to use this instead
1070
          of MeterDataset;
1071
        - added DataUtilities class, to support creation of Pareto
1072
          charts (new demo included);
1073
        - updated writeImageMap method as suggested by Xavier Poinsard
1074
          (see Feature Request 688079);
1075
        - implemented Serializable for most classes (this is likely to
1076
          require further testing);
1077
        - incorporated contour plot updates from David M. O'Donnell;
1078
        - added new CategoryTextAnnotation and XYLineAnnotation
1079
          classes;
1080
        - added new HorizontalCategoryAxis3D class contributed by
1081
          Klaus Rheinwald;
1082

    
1083
        Bug fixes:
1084
        - added a workaround for JVM crash (a JDK bug) in pie charts
1085
          with small sections (see bug report 620031);
1086
        - fixed minor bug in HorizontalCategoryPlot constructor (see
1087
          bug report 702248);
1088
        - added code to ensure HorizontalNumberAxis3D is not drawn if
1089
          it is not visible (see bug report 702466);
1090
        - added small fix for suppressed chart change events (see bug
1091
          report 690865);
1092
        - added pieIndex parameter to tooltip and URL generators for
1093
          pie charts;
1094
        - fixed bug in getLastMillisecond() method for the Second
1095
          class and the getFirstMillisecond() method for the Year
1096
          class (picked up in JUnit tests);
1097
        - in TextTitle, changed width used for relative spacing to fix
1098
          bug 703050;
1099

    
1100
##### Version 0.9.6 (17-Feb-2003) Bug fixes:
1101
        - fixed null pointer exception in DefaultCategoryDataset;
1102
        - fixed update problem for PaintTable, StrokeTable and
1103
          ShapeTable objects;
1104
        - added methods to control colors in PiePlot (these were
1105
          inadvertantly removed in the changes made for 0.9.5);
1106
        - fixed auto-range update problem for secondary axis;
1107
        - fixed missing category labels in the overlaid category plot;
1108
        - fixed constructors for symbolic axes;
1109
        - corrected error in Javadoc generation (Ant script);
1110

    
1111
##### Version 0.9.5 (6-Feb-2003) 
1112

    
1113
PLEASE NOTE THAT MAJOR CHANGES TO THE
1114
        JFREECHART API HAVE BEEN MADE IN THIS RELEASE!
1115

    
1116
        - added support for secondary axes, datasets and renderers;
1117
        - added new data interfaces (Value, Values, Values2D,
1118
          KeyedValues and KeyedValues2D) and incorporated these into
1119
          the existing PieDataset and CategoryDataset interfaces.
1120
        - modified the CategoryDataset interface to be more
1121
          symmetrical, data is organised in rows and columns (as
1122
          before) but can now be accessed by row/column index or
1123
          row/column key.
1124
        - added support for reading PieDatasets and CategoryDatasets
1125
          from XML files.
1126
        - created separate packages for the axes
1127
          (com.jrefinery.chart.axis), plots (com.jrefinery.chart.plot)
1128
          and renderers (com.jrefinery.chart.renderer).
1129
        - series attributes (paint, outline paint, stroke and shape)
1130
          are now controlled by the renderer classes using lookup
1131
          tables.  Introduced the DrawingSupplier interface (and
1132
          DefaultDrawingSupplier class) which is used to populate the
1133
          lookup tables from a common source (necessary to coordinate
1134
          complex combined charts).
1135
        - the chart legend can now display shapes corresponding to
1136
          series.
1137
        - moved responsibility for category distribution to the
1138
          CategoryAxis class, which tidies up the code in the
1139
          CategoryPlot classes.
1140
        - gridlines are now controlled by the CategoryPlot and XYPlot
1141
          classes, not the axes (included in this change is the
1142
          addition of gridlines for the CategoryPlot domain values).
1143
        - changed the list of titles in the JFreeChart class to a
1144
          title and a list of subtitles.
1145
        - added new renderers for XYPlot (XYBubbleRenderer and
1146
          YIntervalRenderer).
1147
        - modified Gantt chart to display sub-tasks.
1148
        - added ContourPlot class (still experimental) by David
1149
          M. O'Donnell.
1150
        - introduced new MovingAverage class.
1151
        - ChartMouseEvent now includes source chart.
1152
        - numerous bug fixes.
1153
        - lots of Javadoc updates.
1154

    
1155
##### Version 0.9.4 (18-Oct-2002)  
1156

    
1157
Added a new stacked area chart (contributed by Dan
1158
        Rivett) and a compass plot (contributed by Bryan Scott).  Updated
1159
        the ThermometerPlot class. Added a new XYDotRenderer for scatter
1160
        plots. Modified combined and overlaid plots to use the series colors
1161
        specified in the sub plot rather than the parent plot (this makes it
1162
        easier to align the colors in the legend).  Added Regression class
1163
        for linear and power regressions.  BasicTimeSeries can now
1164
        automatically drop "old" data.  Some clean-up work in the code for
1165
        tooltips and the event listener mechanism.  Richard Atkinson has
1166
        incorporated some useful extensions for servlets/JSP developers.
1167

    
1168
        Ran Checkstyle and corrected issues reported for most classes.
1169
        Checkstyle is a free utility that you can download from:
1170

    
1171
            http://checkstyle.sourceforge.net
1172

    
1173
        Fixed bugs and updated documentation.
1174

    
1175
        API changes include:
1176
        - added tickMarkPaint to Axis constructor (also affects
1177
          subclasses);
1178
        - added getLegendItems() to Plot, and deprecated
1179
          getLegendItemLabels();
1180
        - added getLegendItem(int) to XYItemRenderer and
1181
          CategoryItemRenderer.
1182
        - most 'protected' member variables have been changed to
1183
          'private'.
1184

    
1185
##### Version 0.9.3 (4-Sep-2002) 
1186

    
1187
- Added multiple pie charts based on `CategoryDataset`;
1188
- Updated logarithmic axes;
1189
- Improved URL support for image map generation;
1190
- Moved the `com.jrefinery.data` package from JCommon to JFreeChart. 
1191
- Added simple framework for chart annotations;
1192
- Improved control over renderers;
1193
- Duplicate x-values now allowed in `XYSeries`; 
1194
- Optional category label skipping in category axes; 
1195
- Added `CategoriesPaint` attribute to `AbstractCategoryItemRenderer`;
1196
- Added new attributes to `MeterPlot` class;
1197
- Updated 3D pie chart to observe start angle and direction, and also foreground alpha < 1.0;
1198
- Improved Javadoc comments;
1199
- New demo applications, including: `AnnotationDemo1`, `EventFrequencyDemo`, `JDBCCategoryChartDemo`, `JDBCPieChartDemo`, `JDBCXYChartDemo` and `MinMaxCategoryPlotDemo`.
1200

    
1201
Bug fixes:
1202
- negative percentages on `PiePlot`;
1203
- added listener notification to `setXXXAxis(...)` methods;
1204
- fixed `DomainInfo` method name clash;
1205
- added `DomainIsPointsInTime` flag to `TimeSeriesCollection` to give better control over auto range on axis for time series charts;
1206
- axis margins for date axes are no longer hard-coded;
1207
- fix for ordering of categories in `JdbcCategoryDataset`;
1208
- added check for `null` axis in mouse click handler.
1209

    
1210
The CVS repository at SourceForge has also been restructured to match the distribution directory layout.
1211

    
1212

    
1213
##### Version 0.9.2 (28-Jun-2002) 
1214

    
1215
- `PiePlot` now has `startAngle` and `direction` attributes;
1216
- added support for image map generation;
1217
- added a new `Pie3DPlot` class;
1218
- added label drawing code to bar renderers;
1219
- added optional range markers to horizontal number axis;
1220
- added bar clipping to avoid PRExceptions in bar charts; 
1221
- `JFreeChartDemo` has been modified and now includes examples of the dial and thermometer plots.
1222

    
1223
######Bug fixes
1224

    
1225
- auto range for `VerticalNumberAxis` when zero is forced to be included in the range;
1226
- fixed null pointer exception in `StackedVerticalBarRenderer3D`;
1227
- added get/set methods for min/max chart drawing dimensions in `ChartPanel`;
1228
- `HorizontalIntervalBarRenderer` now handles single category;
1229
- `verticalTickLabels` now possible in `HorizontalNumberAxis3D`;
1230
- removed unnecessary imports;
1231

    
1232

    
1233
##### Version 0.9.1 (14-Jun-2002) 
1234

    
1235
Bug fixes and Javadoc updates.
1236

    
1237
- fixed auto range calculation for category plots;
1238
- fixed event notification for `XYPlot`;
1239
- fixed auto axis range for Gantt charts;
1240
- check for null popup menu in `ChartPanel.mouseDragged`;
1241
- new checks for null info in renderers;
1242
- range markers now drawn only if in visible axis range;
1243

    
1244

    
1245
##### Version 0.9.0 (7-Jun-2002) 
1246

    
1247
- new plots including an area chart, a horizontal 3D bar chart, a Gantt chart 
1248
  and a thermometer chart;
1249
- combination plots have been reworked to provide a simpler framework, and 
1250
  extends to allow category plots to be combined;
1251
- there is now a facility to add a `ChartMouseListener` to the `ChartPanel` 
1252
  (formerly `JFreeChartPanel`);
1253
- an interactive zooming feature (experimental at this point) is now available 
1254
  for `XYPlots`;
1255
- a new Polish translation has been added;
1256
- several fixes have been applied to the default tool tip generators;
1257
- a workaround has been added to fix the alignment between time series charts 
1258
  and the date axis;  
1259
- there are some improvements to the `VerticalLogarithmicAxis` class, and now a 
1260
  corresponding `HorizontalLogarithmicAxis` class;  
1261
- additional demonstration applications have been added;
1262
- fixed the popup menu bug.
1263

    
1264

    
1265
##### Version 0.8.1 (5-Apr-2002) 
1266

    
1267
- Localised resource bundles for French, German and Spanish languages (thanks to 
1268
Anthony Boulestreau, Thomas Meier and Hans-Jurgen Greiner for the translations);  
1269
- an area XY plot and meter chart contributed by Hari;
1270
- symbol charts contributed by Anthony Boulestreau;
1271
- an improved `CandleStickRenderer` class from Sylvain Vieujot;
1272
- updated servlet code from Bryan Scott;
1273
- `XYItemRenderers` now have a change listener mechanism and therefore do not 
1274
have to be immutable;
1275
- additional demonstration applications for individual chart types;
1276
- minor bug fixes.
1277

    
1278

    
1279
##### Version 0.8.0 (22-Mar-2002) 
1280

    
1281
- all the category plots are now controlled through the one class (`CategoryPlot`) with plug-in renderers;
1282
- added a `ResourceBundle` for user interface items that require localisation;
1283
- added a logarithmic axis class contributed by Mike Duffy and some new JDBC and servlet code contributed by Bryan Scott;
1284
- updated the JCommon class library to improve handling of time periods in different time zones.
1285

    
1286

    
1287
##### Version 0.7.4 (6-Mar-2002) 
1288

    
1289
- bug fixes in the JCommon Class Library; 
1290
- various Javadoc comment updates;  
1291
- some minor changes to the code; 
1292
- added new domain name (http://www.object-refinery.com) in the source headers.
1293

    
1294

    
1295
##### Version 0.7.3 (14-Feb-2002) 
1296

    
1297
Bug fixes.
1298

    
1299

    
1300
##### Version 0.7.2 (8-Feb-2002) 
1301

    
1302
- integrated the `WindPlot` code from Achilleus Mantzios;
1303
- added an optional background image for the `JFreeChart` class;
1304
- added an optional background image for the `Plot` class;
1305
- added alpha-transparency for the plot foreground and background;
1306
- added new pie chart label types that show values;
1307
- fixed a bug with the legend that results in a loop at small chart sizes;
1308
- added some tooltip methods that were missing from the previous version;
1309
- changed the `Insets` class on chart titles to a new `Spacer` class that will 
1310
allow for relative or absolute insets (the plan is to eventually replace all 
1311
`Insets` in the `JFreeChart` classes);  
1312
- fixed a bug in the `setAutoRangeIncludesZero` method of the `NumberAxis` class;
1313
- added the instructions that were missing from the copies of the GNU Lesser General Public Licence included with JFreeChart.
1314

    
1315

    
1316
##### Version 0.7.1 (25-Jan-2002) 
1317

    
1318
- added tooltips, crosshairs and zooming functions, thanks to Jonathan Nash and Hans-Jurgen Greiner
1319
  for contributing the code that these features are based on;
1320
- moved the combination charts into the package `com.jrefinery.chart.combination`;
1321
- made a number of other small API changes and fixed some bugs;
1322
- removed the Javadoc HTML from the download to save space (you can regenerate it from the source code if you need it).
1323

    
1324

    
1325
##### Version 0.7.0 (11-Dec-2001) 
1326

    
1327
- new combination plots developed by Bill Kelemen;
1328
- added Wolfgang Irler's servlet demo to the standard download;
1329
- the About window in the demo application now includes a list of developers that have contributed to the project.
1330

    
1331

    
1332
##### Version 0.6.0 (27-Nov-2001) 
1333

    
1334
- new plots including scatter plot, stacked bar charts and 3D bar charts; 
1335
- improved pie chart;
1336
- data interfaces and classes moved to the JCommon class library;
1337
- new properties to control spacing on bar charts;
1338
- new auto-tick mechanism;
1339
- `JFreeChartPanel` now incorporates buffering, and popup menu;
1340
- Javadocs revised;
1341
- fixed numerous bugs from version 0.5.6;  
1342
- demo application updated.
1343

    
1344

    
1345
CONTRIBUTORS
1346
------------
1347
JFreeChart wouldn't be half the library that it is today without the contributions (large and small) that have been made by the developers listed below:
1348

    
1349
- Eric Alexander
1350
- Richard Atkinson
1351
- David Basten
1352
- David Berry
1353
- Chris Boek
1354
- Zoheb Borbora
1355
- Anthony Boulestreau
1356
- Jeremy Bowman
1357
- Nicolas Brodu
1358
- Jody Brownell
1359
- David Browning
1360
- Soren Caspersen
1361
- Thomas A Caswell
1362
- Chuanhao Chiu
1363
- Brian Cole
1364
- Pascal Collet
1365
- Martin Cordova
1366
- Paolo Cova
1367
- Greg Darke
1368
- Mike Duffy
1369
- Don Elliott
1370
- Rune Fauske
1371
- Jonathan Gabbai
1372
- Serge V. Grachov
1373
- Daniel Gredler
1374
- Joao Guilherme Del Valle
1375
- Hans-Jurgen Greiner
1376
- Nick Guenther
1377
- Aiman Han
1378
- Cameron Hayne
1379
- Martin Hoeller (xS+S)
1380
- Jon Iles
1381
- Wolfgang Irler
1382
- Sergei Ivanov
1383
- Nina Jeliazkova
1384
- Adriaan Joubert
1385
- Darren Jung
1386
- Xun Kang
1387
- Bill Kelemen
1388
- Norbert Kiesel
1389
- Petr Kopac
1390
- Gideon Krause
1391
- Dave Law;
1392
- Pierre-Marie Le Biot
1393
- Simon Legner
1394
- Arnaud Lelievre
1395
- Wolfgang Lenhard
1396
- Leo Leung
1397
- David Li
1398
- Yan Liu
1399
- Tin Luu
1400
- Craig MacFarlane
1401
- Achilleus Mantzios
1402
- John Matthews
1403
- Thomas Meier
1404
- Jim Moore
1405
- Jonathan Nash
1406
- Barak Naveh
1407
- David M. O'Donnell
1408
- Krzysztof Paz
1409
- Eric Penfold
1410
- Tomer Peretz
1411
- Xavier Poinsard
1412
- Andrzej Porebski
1413
- Viktor Rajewski
1414
- Eduardo Ramalho
1415
- Michael Rauch
1416
- Klaus Rheinwald
1417
- Cameron Riley
1418
- Dan Rivett
1419
- Lukasz Rzeszotarski
1420
- Scott Sams
1421
- Michel Santos
1422
- Thierry Saura
1423
- Patrick Schlott
1424
- Andreas Schneider
1425
- Christoph Schroeder
1426
- Jean-Luc SCHWAB
1427
- Bryan Scott
1428
- Tobias Selb
1429
- Darshan Shah
1430
- Mofeed Shahin
1431
- Michael Siemer
1432
- Pady Srinivasan
1433
- Greg Steckman
1434
- Roger Studner
1435
- Gerald Struck
1436
- Irv Thomae
1437
- Eric Thomas
1438
- Rich Unger
1439
- Daniel van Enckevort
1440
- Laurence Vanhelsuwe
1441
- Sylvain Vieujot
1442
- Jelai Wang
1443
- Mark Watson
1444
- Alex Weber
1445
- Richard West
1446
- Matthew Wright
1447
- Benoit Xhenseval
1448
- Christian W. Zuckschwerdt
1449
- Hari
1450
- Sam (oldman)
1451

    
1452
It is possible that I have missed someone on this list, if that applies to you, please e-mail me.
1453

    
1454
Dave Gilbert (david.gilbert@object-refinery.com)
1455

    
1456
JFreeChart Project Leader