JFreeChart 1.0.9
----------------
4 January 2008

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

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

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

API Adjustments:

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

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


Bug Fixes:

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

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


JFreeChart 1.0.8
----------------
23 November 2007

This release is primarily a bug fix release, correcting a problem with pie
chart labelling, a regression in the DefaultCategoryDataset class (and 
underlying KeyedValues2D class), and a cloning bug in the TimeSeries class.  
In addition, the StatisticalBarRenderer class has a new 'errorIndicatorStroke' 
field and has been updated to support gradients, the StandardDialScale has had 
some missing accessor methods implemented, and an override field in the 
StandardXYItemRenderer class has been deprecated.  Plus some warnings reported
by FindBugs 1.3.0 have been addressed.


JFreeChart 1.0.7
----------------
14 November 2007

This release features new classes DialPlot and LogAxis (previously in 
experimental), initial support for minor tick units, a new anchored zooming 
option for the ChartPanel class, optional simple labelling on pie charts, 
improvements to the "statistical" datasets and underlying data structures, and 
numerous bug fixes.

API Adjustments:

- CategoryAxis - added getCategorySeriesMiddle() method;
- CategoryPlot - added methods to remove markers;
- ChartPanel - added defaultDirectorForSaveAs attribute;
- DialPlot - new class, an alternative to MeterPlot;
- LogAxis - new class, an alternative to LogarithmicAxis;
- NumberTick - new constructor that allows specification of the tick type;
- NumberTickUnit - new constructor to specify the minor tick count;
- SymbolAxis - new methods get/setGridBandAlternatePaint();
- TickType - new class;
- TickUnit - added minorTickCount attribute;
- ValueTick - added tickType attribute;
- StandardPieSectionLabelGenerator - new constructors accepting a Locale;
- StandardPieToolTipGenerator - likewise;
- CategoryPlot - added getRangeAxisIndex(), zoomDomainAxes() and zoomRangeAxes()
                 methods;
- FastScatterPlot - added new zooming methods;
- PiePlot - new attributes to support simple labelling;
- PlotUtilities - new class;
- PolarPlot - added new zooming methods;
- ThermometerPlot - likewise;
- XYPlot - added methods to remove markers (patch 1823697--same as for 
           CategoryPlot), and added new zooming methods; 
- Zoomable - added new zooming methods to this interface;
- LineAndShapeRenderer - added useSeriesOffset and itemMargin attributes;
- MinMaxCategoryRenderer - implemented equals();
- XYSplineAndShapeRenderer - new class;
- LogFormat - new class;
- ChartFactory - new pie and ring chart creation methods that accept a Locale;
- ChartPanel - added zoomAroundAnchor attribute;
- Series - added isEmpty() method;
- BoxAndWhiskerItem - new convenience constructor;
- DefaultBoxAndWhiskerCategoryDataset - new remove methods;
- DefaultStatisticalCategoryDataset - likewise;
- MeanAndStandardDeviation - added new value accessor methods;
- TimeTableXYDataset - added clear() method;
- Week - added new constructor;
- KeyedObjects - added insertValue() and clear() methods;
- KeyedObjects2D - added clear() method.

Patches:

1823724 - updated XYDifferenceRenderer to support item labels;
1827829 - fixed possible NullPointerException in XYBarRenderer;

Bug Fixes:

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


JFreeChart 1.0.6
----------------
15 June 2007

This release features a new VectorRenderer (previously in experimental), a 
generalised XYDifferenceRenderer, better support for hotspots on legend items, 
improved performance for time series charts displaying subsets of data, support 
for GradientPaint in plot backgrounds, plus the usual slew of bug fixes and 
minor feature additions.

API Adjustments:

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

Bug Fixes:

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

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

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


JFreeChart 1.0.5
----------------
23 March 2007

This release features a new DeviationRenderer class, support for item labels
in StackedXYBarRenderer, tooltips and URLs in the CategoryStepRenderer, and 
many bug fixes.

API Adjustments:

- AbstractCategoryItemRenderer - added createState() method;
- StackedXYBarRenderer - added get/setRenderAsPercentages() methods;
- XYIntervalSeries - added getXLowValue(), getXHighValue(), getYLowValue() and
    getYHighValue();
- YIntervalSeries - added getYLowValue() and getYHighValue() methods;
    
Bug Fixes:

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


JFreeChart 1.0.4
----------------
9 February 2007

This release features a new XYBlockRenderer class, URLs for pie chart labels 
in HTML image maps, a new dataset implementation for open-high-low-close 
charts, support for gradient paint in ClusteredXYBarRenderer, 
StackedXYBarRenderer and legend graphics, a new anchor attribute for 
XYImageAnnotation, improvements to the experimental SWT support, plus a 
number of additions to the API for usability, and many bug fixes.

API Adjustments:

- DateAxis - added get/setTimeZone() methods;
- DefaultXYDataset - now implements PublicCloneable;
- StackedXYAreaRenderer2 - added get/setRoundXValues() methods;
- StandardXYItemLabelGenerator - added new constructor;
- StandardXYToolTipGenerator - added new constructor;
- XYBarDataset - added getUnderlyingDataset() and get/setBarWidth() methods;
- XYDifferenceRenderer - added roundXCoordinates attribute;
- XYImageAnnotation - added an image anchor attribute, a new constructor, and
    several accessor methods;
- XYSeries - added toArray() method;

Bug Fixes:

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

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

JFreeChart 1.0.3:
-----------------
17 November 2006

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

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

API adjustments:

The following adjustments have been made to the API:

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

Bug Fixes:

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

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


JFreeChart 1.0.2:
-----------------
Released on 25 August 2006.

API adjustments:

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):

- CategoryToPieDataset: added accessor methods for underlying dataset, extract
    type and index (feature request 1477915);
- DefaultXYDataset:  New dataset implementation that uses double[] arrays;
- DefaultXYZDataset:  New dataset implementation that uses double[] arrays;
- LegendItemBlockContainer: New container used in legends (enables 
    legend item entities again);
- MultiplePiePlot:  Added new fields aggregatedItemsKey and 
    aggregatedItemsPaint, plus accessor methods - see bug 1190647;
- SpiderWebPlot:  Added new fields toolTipGenerator and urlGenerator, plus 
    accessor methods (see patch 1463455);
- 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);
- XYPolygonAnnotation: Added new accessor methods.

Patches:

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

Bug Fixes:

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

Miscellaneous Changes:

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

Experimental Code:

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


JFreeChart 1.0.1:
----------------
Released 27 January 2006.  This is primarily a bug fix release.  In addition,
there are some API adjustments (there should be no breakage of applications 
coded to the 1.0.0 API).

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

Bug fixes:

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


JFreeChart 1.0.0:
----------------
Released on 2 December 2005.
