Version 3.20 (24/04/2023)
------------
- Added support for curved best-fit lines.
- Added support for CSS units in font sizes and line spacing.

Version 3.19 (10/01/2023)
------------
- Added ParetoChart.
- Added fill_under "full" option to always fill to bottom of grid.
- Updated code to work properly under PHP 8.2.

Version 3.18 (02/12/2022)
------------
- Added shading of flat 3D pie graph sides.
- Added support for colouring data labels using "fill" and "fillColour".
- Fixed axis_text structure option on multi-dataset graphs.
- Fixed explode "all" doing nothing on pie graphs with all values equal.

Version 3.17 (16/09/2022)
------------
- Added axis_tightness_x option for removing space at ends of X-axis.
- Added data_label_align option for label text alignment.
- Added tooltip_align option for tooltip text alignment.
- Fixed missing final bar when using axis_ticks_x with bar graphs.
- Fixed data labels from structured data not showing when filter set to "none".

Version 3.16 (29/07/2022)
------------
- Added support for multiple task bars/milestones on Gantt chart rows.
- Added axis_double_x and axis_double_y options for same axis both sides.
- Added axis_pad_* options for adding space between axes and grid.
- Added axis_extend_* options for extending ends of axes.
- Fixed axis with levels on right side of horizontal graph.

Version 3.15 (16/06/2022)
------------
- Added dependency arrow support to Gantt charts.
- Added gantt_units option for tasks in hours and minutes.
- Added grid_clip_overlap_* options for adjusting line graph clipping.

Version 3.14 (02/05/2022)
------------
- Added Gantt chart.
- Added automatic graph height option.
- Added support for best-fit lines on bar and line graphs.
- Added support for using coordinates for legend position.
- Added block_position_markers option.

Version 3.13.1 (11/03/2022)
--------------
- Fixed deprecation warning messages displayed by PHP 8.1.
- Fixed problem with file encoding of Text class.
- Improved accuracy of HSL to RGB conversion.

Version 3.13 (14/02/2022)
------------
- Added curved line graph support with line_curve option.
- Added horizontal 3D bar graph.
- Added horizontal grouped 3D bar graph.
- Added horizontal stacked 3D bar graph.
- Added line_bar option for setting marker positions on bar and line graphs.
- Cylinder graphs now support bar_top_overlay_* options.
- Made conversion of multi-dataset data to structured more robust.

Version 3.12 (10/12/2021)
------------
- Added exploded semi-donut graph.
- Added 3D donut graph.
- Added 3D semi-donut graph.
- Added exploded 3D donut graph.
- Added exploded 3D semi-donut graph.
- Added candlestick graph.
- Added log_axis_x and log_axis_x_base options with logarithmic X-axis support.

Version 3.11 (18/11/2021)
------------
- Added exploded donut graph.
- Added donut_slice_gap option.
- Fixed problem in datetime axis labelling around DST changes.
- Fixed incorrect shape sizes on datetime graph around DST changes.
- Fixed positioning of axis labels on datetime bar graphs.

Version 3.10 (19/07/2021)
------------
- Added support for using text as a shape or figure.
- Fixed angled axis text being badly placed with new limit_text_angle option.
- Fixed guidelines not showing on date/time graphs.
- Fixed some missing date/time tokens in crosshair text.
- Fixed histograms not supporting non-integer values.
- Fixed polar area graphs drawing incorrectly with date/time keys.

Version 3.9 (24/05/2021)
-----------
- Added support for linking legend entries and title.
- Added axis_ticks_x and axis_ticks_y options for specific tick marks.
- Added legend_autohide_opacity option.
- Added autohide and autohide_opacity options for shapes.
- Added grid stroke width options.

Version 3.8 (23/02/2021)
-----------
- Added SteppedLineGraph and MultiSteppedLineGraph graph types.
- Added force_block_label_x option.
- Added axis_zero_y option.
- Added data_label_opacity option.
- Added various line spacing options.
- Added localization of date strings.
- Improved timezone support for date/time values.
- Fixed axis label position on graphs with negative values.
- Fixed date conversion problems in guideline positions.
- Fixed empty legend entry on multi-line graphs with single point in dataset.

Version 3.7 (27/11/2020)
-----------
- Added options for displaying mean average lines.
- Added background shadow support.
- Added graph subtitle options.
- Added alternative Y-axis fitting algorithm with axis_tightness_y option.
- Updated axis_label_position options to support aligning text with axis ends.
- Updated colourRangeHex functions to support more colour options.

Version 3.6 (19/06/2020)
-----------
- Added support for multi-level axis division labels.
- Added axis_font_weight option and its horizontal and vertical options.
- Added axis_text_back_colour option and horizontal, vertical options.
- Fixed display of axis lines when using a gradient.
- Fixed crosshairs not hiding when cursor leaves grid.
- Fixed link_target and link_base options not working.

Version 3.5 (07/03/2020)
-----------
- Added support for saturation, brightness and hue colour filters.
- Added support for using fill colour or style in best-fit lines.
- Added support for using fill colour or style in box and whisker median line.
- Added support for using gradients in patterns.
- Added legend_unique_fields option for preventing duplicate legend text.
- Added legend_entries option callback for more control over legend entries.

Version 3.4 (20/12/2019)
-----------
- Added SVG filter based shadows and options for adjusting them.
- Added legend spacing and padding options.
- Added support for stroking graph, tooltip, legend and label lines using
  gradients and patterns.
- Added support for stroking graph lines using fill colour or fill style.
- Added support for filling markers with gradients and patterns.
- Added support for displaying gradients in radar graph grid stripes.
- Added simple Javascript minifier function.
- Fixed 3D bar graphs having spiky corners at the top.
- Fixed histogram X-axis being truncated.
- Fixed 3D pie graph side shading drawing over edges.
- Fixed lousy axis top end calculation when non-zero bottom end specified.
- Fixed legend entries not showing for floating graph bars starting at zero.

Version 3.3 (22/11/2019)
-----------
- Added ArrayGraph type for simple multiple-graph documents.
- Added dataset option support to all graph types.
- Added bar_round option for rounded corners on bar graphs.
- Added median_colour and median_dash options for box and whisker graphs.

Version 3.2 (26/09/2019)
-----------
- Added axis_label_position options.
- Added legend_order option.
- Added axis_fallback_max option for better handling of all-zero value graphs.
- Added dataset option for choosing dataset for pie graphs to draw.
- Fixed legend display for stacked bar and line graphs and population pyramid.
- Fixed legend display for multi-dataset graphs starting with 0 values.
- Fixed magnification of tooltips in subgraphs.
- Fixed incorrect position of crosshairs when magnification enabled.
- Fixed axis text when using force_assoc and value with a key of 0.
- Fixed overlapped tooltips from internal edges of 3D polar area graphs.

Version 3.1 (02/08/2019)
-----------
- Added subgraph support.
- Added magnifier options.
- Added support for using figures as patterns.

Version 3.0.1 (14/06/2019)
-------------
- Added text formatting classes to prevent localised numbers in SVG attributes.
- Fixed data label click show and fade on pages with multiple graphs.

Version 3.0 (14/03/2019)
-----------
- All classes are now in Goat1000\SVGGraph\ namespace.
- PSR-4 autoloader required for loading class files.
- Added autoloader.php for anyone not using a framework with PSR-4 autoloader.
- Values, colours and links must now be set using functions, not directly.
- Added EmptyGraph type for using shapes and labels without data.
- Added use_iconv and use_mbstring options.
- Added line_breaks option for line graphs.
- Split redundant code out into traits.
- Removed compat_events code and option.
- Fixed tooltips going off edge of small graphs on same page as larger graphs.
- Fixed auto tail length for custom labels.
- Fixed edge shading on 3D polar area graphs.

Version 2.30 (04/01/2019)
------------
- Added "image" shape support.
- Added "marker" shape support.
- Added "figure" option for creating predefined shapes.
- Added "figure" shape support.
- Added "figure" marker support.
- Improved axis label positioning.

Version 2.29 (09/10/2018)
------------
- Added context menu options.
- Added "box" division and subdivision style.
- Added axis_text_location option for text position on graphs with negative
  values.
- Moved axis measurement and drawing out of GridGraph and subclasses into new
  DisplayAxis classes.
- Replaced GetFirst() and ArrayOption() functions with GetOption().

Version 2.28 (23/07/2018)
------------
- Added text measurement class using font metrics and/or character widths.

Version 2.27 (28/03/2018)
------------
- Added support for multiple Y-axes using dataset_axis option.
- Added support for best-fit lines on bubble graphs.
- Added line_figure and line_figure_closed options for drawing shapes on line
  graphs.
- Fixed crosshairs being left behind when cursor moved out of document.
- Fixed broken bars when all values in stacked grouped 3D bar and cylinder
  graphs negative.

Version 2.26 (10/01/2018)
------------
- Added "auto" option for data label tail length.
- Added data_label_same_size option for more consistent labels.
- Setting data_label_round for line or plain labels now uses a circular
  bounding box.
- Added circle, square, linecircle, linebox, linesquare and line2 label styles.
- Added tail end options for new label styles.
- Added no_tspan option for compatibility with renderers that don't support
  tspan elements fully.

Version 2.25 (12/10/2017)
------------
- Added 3D polar area graph.
- Added 3D exploded pie graph.
- Added support for datetime keys in shapes and labels.
- 3D pie graph sides are now drawn correctly when end_angle used.
- Improved PHP7 compatibility.
- Moved guideline code into separate file.
- Fixed display of semi-donut graph when there is a single value.
- Fixed display of multi-line axis text on horizontal graphs.
- Fixed multi-line text alignment when minifying is disabled.
- Fixed legend_show_empty behaviour inconsistencies.
- Fixed incorrect legend size when containing numeric strings.
- Fixed missing bar tops on stacked grouped 3D bar graphs.

Version 2.24.1 (21/08/2017)
--------------
- Added stacked bar and line graph.
- 0 values are now labelled on bar graphs.
- Added "nonzero" data label filter to disable showing 0 value labels.
- Added support for associative and datetime keys in X-axis guidelines.
- Fixed axis text callback passing floating point values instead of integers
  for array keys.

Version 2.24 (31/01/2017)
------------
- Added semi-donut graph.
- Added associative and datetime key support to shapes, labels and crosshairs.
- Added end_angle and slice_fit options for drawing partial pie graphs.
- Added keep_colour_order option for simpler pie graph slice colouring.
- Added marker_opacity and marker_angle options.
- Added custom marker support.
- Made FetchJavascript work when called statically.
- Fixed minify_js option to support anonymous callback functions.
- Fixed error when array of guidelines contains a single guideline array.
- Fixed bar_total_outline_colour option on horizontal stacked graphs.
- Fixed javascript error in legend_autohide.
- Fixed legend order for graphs with multiple datasets starting at different
  key values.
- Improved positioning of exploded pie slices.

Version 2.23.1 (03/08/2016)
--------------
- Added datetime_key_format option.
- Fixed per-dataset stroke_width with a 0 value.
- Fixed default structure missing values with string keys when main key is 0.
- Fixed error when using datetime keys with multiple unstructured datasets.
- Fixed legend autohide not working when no other Javascript options enabled.
- Fixed error in radar graphs when given some dual-Y axis settings.

Version 2.23 (22/06/2016)
------------
- Added date/time axis.
- Added callback function support to logarithmic axis.
- Added exception_throw option to disable catching exceptions.
- Fixed axis callback functions not working with associative data.
- Fixed legend display for line graphs when marker size is 0.

Version 2.22 (05/05/2016)
------------
- Added support for legend entries from structured data.
- Added show_legend option (default true) for disabling legend.
- Added support for multiple lines of text in legend entries and title.
- Added support for using coordinates from second Y-axis in shapes and labels.
- Fixed hex and decimal entities being escaped in text.

Version 2.21 (17/03/2016)
------------
- Added best-fit line support to line graphs.
- Added best_fit_range option for limiting best-fit line.
- Added best_fit_project options for projecting beyond best-fit range.
- Merged code to allow repeated keys in pie graphs.
- Fixed displaying image markers with absolute links.
- Fixed minimum fallback bar width to 1 pixel.

Version 2.20.1 (19/01/2016)
--------------
- Added bar_width_min option.
- Added clip_to_grid option for shapes.
- Fixed shape units calculations when axes not starting in bottom left.
- Fixed error when gradient array contains a single colour.

Version 2.20 (05/12/2015)
------------
- Added stacked grouped 3D bar graph and stacked grouped cylinder graph.
- Added shape options.
- Added custom label options.
- Added svg_class option.
- Added grid_back_opacity and grid_back_stripe_opacity options.
- Added multiple colour stripe support to grid_back_stripe_colour option.
- Added gradient stop support to gradients.
- Added radial gradient support for radar graph backgrounds.
- Fixed pattern definitions not being reused.
- Fixed javascript crosshair coordinates jumping around.
- Fixed problems with autoloading graph classes.

Version 2.19.1 (21/08/2015)
--------------
- Added bar_total_callback option.
- Fixed stacked grouped bar graph height calculations.
- Fixed structured_data to disabled structure when set to FALSE.

Version 2.19 (17/07/2015)
------------
- Added histogram.
- Added shading overlay for 3D bar sides and top.
- Added best_fit_opacity and best_fit_above options.
- Added semantic class for best fit lines.
- Added tooltip and data label callback options.
- Added data_label_min_space option.

Version 2.18 (03/04/2015)
------------
- Added bar and line graph.
- Added data label options for all graph types.
- Added semantic_classes option.
- Added axis text callback options.
- Added detection of mbstring extension. If not available, fall back to basic
  string functions.
- Added check for too many divisions being created.
- Fixed broken axis_right option on some multi-dataset graphs.
- Fixed legend dragging.
- Fixed divide by zero error in colour range function.

Version 2.17 (27/11/2014)
------------
- Added fixed axis positioning options.
- Added colour range and set functions.
- Added auto_fit option and resizing support.
- Fixed crosshairs bugs when embedded in HTML.

Version 2.16 (24/09/2014)
------------
- Added stacked grouped bar graph.
- Added image markers support.
- Added skewing of 3D bar side and top.
- Added support for fixed bar width.
- Added option to set the number of decimal digits shown on axis text.
- Added opacity value support for graph background colour.
- Added exception details option for debugging.
- Replaced all @ error handlers with tests for problem values.
- Fixed escaping of text.
- Fixed blank lines in multi-line text being ignored.
- Fixed rendering of graphs with a single value.

Version 2.15.1 (12/05/2014)
--------------
- Added crosshair options.
- Fixed X axis being incorrectly labelled when using large associative dataset.

Version 2.15 (11/03/2014)
------------
- Added donut graph.
- Added polar area graph.
- Added exploded pie graph.
- Added support for dual Y axes.
- Fixed legend dragging when embedded in HTML.

Version 2.14 (05/10/2013)
------------
- Added pattern fill support.
- Added total labels for stacked bar graphs.
- Better validation of structured data.
- Better handling of non-ASCII strings.
- Replaced rgba() values with opacity attributes.
- Fixed compatibility with PHP 5.1.x.
- Fixed drawing of pie graphs containing relatively small values.
- Fixed X axis calculations for negative or non-integral values.
- Fixed structured axis_text when units_label or units_before_label used.
- Fixed position of labels on stacked bar graphs with negative values.
- Fixed legend entries skipping NULL or 0 values.

Version 2.13 (31/07/2013)
------------
- Added PopulationPyramid graph.
- Added units_before_x and units_before_y options for axis text.
- Added units_label and units_before_label options for pie/bar labels.
- Added units_tooltip, units_before_tooltip, units_tooltip_key and
  units_before_tooltip_key options for tooltip values.
- Added stroke_dash, minify and minify_js options.
- Added structured data options: marker_type, marker_size, marker_stroke_width,
  marker_stroke_colour, stroke_colour, stroke_width and stroke_dash.
- Fixed display of character entities in tooltips.
- Fixed measurement of text containing character entities.
- Fixed dragging of legend over pie graphs.

Version 2.12 (18/05/2013)
------------
- Added log_axis_y and log_axis_y_base options.
- Added decimal and thousands options for number formatting.
- Added grid_back_stripe and grid_back_stripe_colour options.
- Added per-axis font options.
- Added units_x and units_y options for axis text.
- Added show_label_key option for pie graphs.
- 3D pie graphs now calculate a depth when the setting is too great.
- Fixed structure option to take precedence over scatter_2d option.
- Fixed display of small numbers on axes.
- Added workaround for Safari 6 <use/> bug.

Version 2.11 (12/03/2013)
------------
- Added stacked and grouped cylinder graphs.
- Added structured data support.
- Added normal and horizontal floating bar graphs.
- Added bubble graph.
- Added box and whisker graph.
- Added back_round_clip option.
- Added reverse option for radar graphs.
- Added support for negative values on radar graphs.
- Added support for multi-line tooltips.
- Fixed drawing of axes when all values negative.
- Fixed svg node in namespaced XHTML.
- Improved performance.

Version 2.10 (23/10/2012)
------------
- Added cylinder graph.
- Added stacked and grouped 3D bar graphs.
- Added support for gradients in graph element backgrounds.
- Added gradient shaded side to 3D pie graphs.
- Added best fit lines for scatter graphs.
- Added support for drawing associative data on scatter graphs.
- Added show_axis_h and show_axis_v options.
- Added minimum_units_y option.
- Improved axis text label spacing again.
- Better text positioning for radar graphs.
- New default colours.
- Fixed tooltips positioning when embedded in HTML5/XHTML.
- Fixed text being selected when dragging legend.
- Fixed graphs with all values negative not being drawn.

Version 2.9 (29/08/2012)
-----------
- Added bar label options.
- Added axis division and subdivision styles and other options.
- Added diamond, hexagon, octagon, asterisk, star, threestar, fourstar and
  eightstar markers.
- Added legend columns option.
- Added guide line opacity, text opacity, font adjust, text align, length and
  length in units options.
- Added grid background colour option.
- Added grid line style options.
- Added marker border options.
- Added character encoding option.
- Added gradient stop opacity support.
- Improved subdivision calculations.
- Improved axis text label spacing.
- Removed main clipping path when not using a rounded rectangle background.
- Fixed grid clipping path using non-unique ID.
- Fixed line graphs not reaching right hand side of graph.
- Fixed line graphs drawing vertical line to axis when filling enabled.
- Fixed guide line title line spacing.
- Fixed error caused by empty data sets.

Version 2.8 (27/07/2012)
-----------
- Added stacked line graph.
- Added radar graph and multi-radar graph.
- Added axis_text_space option.
- Added axis_stroke_width option.
- Added force_assoc option.
- Fixed legend dragging without tooltips enabled.
- Fixed display of labels when axes disabled.
- Fixed use of associative array data.
- Added fill to legend display for line graphs.

Version 2.7.1 (02/07/2012)
-------------
- Fixed order of entries in multi-line graphs.
- Fixed script type attribute to match SVG standard.
- Fixed order of legend entries for stacked bar, horizontal bar and
  horizontal grouped bar graphs.
- Fixed format of negative decimal numbers.

Version 2.7 (25/05/2012)
----------
- Added guideline options.
- Added axis text rotation.
- Improved HTML embedding.
- Reduced output size of grouped and stacked bar graphs.

Version 2.6 (30/03/2012)
-----------
- Moved all configuration defaults to svggraph.ini.
- Added legend_* options.
- Added label_* options.
- Added graph_title_* options.

Version 2.5.1 (20/02/2012)
-------------
- Fixed bug with 0 values in stacked graphs.

Version 2.5 (09/08/2011)
-----------
- Improved Javascript event handlers.
- Added grid and axis subdivision options.
- Added stroke width option.
- Added more line/scatter marker symbols.
- Added line dash option.
- Added support for per-dataset fill opacity and line width.
- Added pie graph start angle option.

Version 2.4 (07/07/2011)
-----------
- Added multiple scatter graph.
- Added option to use full x,y data for scatter graphs.
- Added support for per-dataset marker options.
- Added support for per-dataset fill_under options.
- Fixed axis options are now available on both axes.

Version 2.3 (26/04/2011)
-----------
- Added horizontal bar graph.
- Added horizontal stacked bar graph.
- Added horizontal grouped bar graph.
- Updated 3D bar graph to support negative values.
- Added fixed axis and division options.

Version 2.2.1 (17/03/2011)
-------------
- Fixed display of graphs with a single data point.

Version 2.2 (21/02/2011)
-----------
- Added background image support.
- Added support for negative numbers on bar/line graphs.
- Updated axis calculations.
- Tooltips are now supported for all graph types.

Version 2.1 (12/01/2011)
-----------
- Added stacked bar graph.
- Added grouped bar graph.
- Added multiple line graph.
- Improved gradient support.
- Made markers mandatory on scatter graph.

Version 2.0 (19/08/2010)
-----------
- Update to PHP 5 OOP syntax.
- Added 3D pie graph.
- Added scatter graph.
- Added tooltips for graph markers.
- Minor improvements.

Version 1.2.1 (11/04/2010)
-------------
- Fixed error shown with E_STRICT.

Version 1.2 (01/05/2009)
-----------
- Added Bar3DGraph graph type.
- Added axis divisions.

Version 1.1 (27/03/2009)
-----------
- Added PieGraph graph type.
- Added title and description options.
- Added namespaced output option.
- Reduced output file size using grouping, symbols.
- Unused gradients are no longer output.

Version 1.0 (16/03/2009)
-----------
- First released version.

