]> git.sur5r.net Git - bacula/bacula/blobdiff - gui/bacula-web/external_packages/phplot/NEWS.txt
bacula-web: Sync with Davide repos
[bacula/bacula] / gui / bacula-web / external_packages / phplot / NEWS.txt
index fdd99fe18a898645efdb1cdd0db391575efa73fb..4d9982019f08cf392258cd90eaaf452442160395 100644 (file)
-This is the NEWS file for PHPlot, with release documentation.
-The project web site is http://sourceforge.net/projects/phplot/
-The project home page is http://phplot.sourceforge.net/
-Refer the the ChangeLog file for detailed source changes.
------------------------------------------------------------------------------
-
-2011-01-15 Release 5.3.1
-
-Overview:
-
-This is the current stable release of PHPlot. This release focuses on
-providing better support and documentation for creating multiple plots on a
-single image.
-
-The PHPlot reference manual has been updated to match this release. Some
-new material has been added, including a new section on multiple plots per
-image, and a new example of overlay plots.
-
-
-Bugs Fixed in 5.3.1:
-
-#3143586 "Multiple plots per image - fixes & docs":
-  The reference manual now contains a section on multiple plots, and a
-  new example. A bug was fixed with SetLegendWorld and multiple plots.
-  Image border will now be drawn at most once. It is now possible to
-  restore the default 'automatic' behavior for axis positioning. Other
-  functions were changed to make arguments optional, so when called with
-  no arguments they reset to the default. The reference manual has been
-  updated with these changes too.
-
-#3147397 "Data colors missing with multiple plots":
-  The fix for bug #3049726 "Optimize color allocation" caused a problem
-  with multiple plots. This has been fixed. PHPlot will no longer truncate
-  the data color table at each plot. It will still only allocate data colors
-  as needed, but all of the pre-set or configured data colors will be
-  available for each plot.
-
-
------------------------------------------------------------------------------
-
-2010-12-04 Release 5.3.0
-
-Overview:
-
-This is the current stable release of PHPlot. This release includes new
-plot types and some new features.
-
-The PHPlot reference manual has been updated to match this release. Some of
-the sections have been moved, there are new examples for the new plot types,
-and a new section on tunable parameters has been added.
-
-
-New features in 5.3.0:
-
-#3093483 "Investing support chart types":
-  Added 3 new plot types: Basic OHLC (Open/High/Low/Close), Candlesticks,
-  and Filled Candlesticks. These are variations of plots that show the
-  performance of a stock or other financial security.
-
-#3111166 "Control legend colorbox width":
-  It is now possible to control the width of the color boxes in the
-  legend, using a class variable which is documented in the manual.
-
-#3117873 "Data value labels in more plot types":
-  Data value labels, which show the dependent variable values near the
-  data points, are now available for more plot types: lines, linepoints,
-  points, and squared. (These were previously available only for bars and
-  stackedbars plots.)
-
-#3127005 "Ability to suppress X/Y axis lines":
-  New functions SetDrawXAxis() and SetDrawYAxis() were added to control
-  display of the X and Y axis lines. (These lines were probably the only
-  PHPlot elements that could not be turned off.) In special cases, these
-  can be used to produce a "bare" plot image.
-
-
------------------------------------------------------------------------------
-
-2010-10-03 Release 5.2.0
-
-Overview:
-
-This is the current stable release of PHPlot. This release includes some
-bug fixes and new features, described below, and a reimplementation of
-internal processing of colors.
-
-The PHPlot reference manual has been updated to match this release.
-Horizontal plots are now documented in the manual, and the interim
-documentation in the source release (HorizontalBars.txt) has been removed.
-The manual is available in HTML format as a separate download from
-Sourceforge.  The manual is also available for on-line viewing from the
-project home page.  Starting with this release, the manual is also
-available in PDF format from the project home page.
-
-
-Cautions, Important Notes, and Compatibility Issues:
-
-Due to changes in color allocation (see bug #3049726 below), image files
-produced with PHPlot-5.2.0 will differ when compared byte-for-byte with
-those created by earlier releases, even when the images are identical (as
-they nearly always are).
-
-If you are creating a horizontal plot with any negative X values, and not
-setting the Y axis position, your plot will change (see bug #3074402 below)
-because PHPlot no longer leaves the Y axis on the left for horizontal plots.
-
-Some internal methods that used to have 'public' visibility are now protected.
-This will generally prevent you from using them. The list of changed functions
-can be found in the release ChangeLog. Avoid using any internal methods.
-
-If you are making a stackedbar plot with any negative values, PHPlot-5.1.3
-and earlier took the absolute value of each data value (which was not
-documented), but PHPlot-5.2.0 does not. See Feature Request #3073679 below.
-
-If your plot fills the 256 available color map slots in a palette image,
-your image may look different with PHPlot-5.2.0 due to changes in color
-allocation order.  This was seen on two of the tests in the PHPlot test
-suite. These tests tiled a JPEG image into the plot area or image
-background.  Being a truecolor image, the JPEG had a huge number of colors,
-which filled all available slots in the color map. Additional colors for
-plot elements had to be approximated, and different colors resulted with
-PHPlot-5.2.0 versus previous releases. To avoid this problem, either use a
-truecolor PHPlot object (PHPlot_truecolor constructor), or reduce the
-number of colors in the background image and convert it to PNG or GIF.
-
-This release contains significant changes to PHPlot internals. In particular,
-variables and functions related to element colors and color handling have
-changed. Refer to the PHPlot release ChangeLog for more details.  Remember,
-if you rely on accessing any member variable, or on using any non-public
-function or any function not documented in the reference section of the manual,
-your code is at risk of breaking with each new release.
-
-
-New features in 5.2.0:
-
-#3077554 "Finer control over plot element colors" (partial):
-  The X, Y, and main titles can now have different colors. See the PHPlot
-  Reference Manual entries for SetXTitleColor and SetYTitleColor.
-
-#3073679 "Stacked bar plots with negative values":
-  A stacked bar plot can now include negative values, and stacks of negative
-  values will be drawn downwards (or leftwards). See the PHPlot Reference
-  Manual under "Plot Type: stackedbars" for details.
-
-
-Bugs Fixed in 5.2.0:
-
-#3045131 "SetTransparentColor problems":
-  Setting a transparent color now works whether before or after setting
-  the background color (for example), and also now works with a data color.
-
-#3049726 "Optimize color allocation"
-  PHPlot now defers allocating colors until drawing time, and tries to allocate
-  only the colors which are actually needed. For palette images, this results
-  in use of fewer color slots and slightly smaller image files.
-
-#3074402 "Fix Y axis default for horizontal plots":
-  When horizontal plots were introduced, an asymmetry with the X and Y axis
-  position defaults was known but left. This behavior was later determined
-  to be unhelpful. So now the Y axis on horizontal plots will default to X=0,
-  or the X value closest to zero within the plot area range. This is the same
-  behavior as for the X axis in vertical plots.
-
-#3056991 "Internal methods should be 'protected'":
-  More of the internal PHPlot functions were changed to 'protected' visibility,
-  as the test suite was fixed to not call them directly.
-
-#3057000 "Review 'deprecated' methods":
-  One broken deprecated method (SetColor) was removed and one changed.
-  Note that deprecated methods are not documented and not tested.
-
------------------------------------------------------------------------------
-
-2010-08-30 Release 5.1.3
-
-Overview:
-
-This is the current stable release of PHPlot. Additional horizontal plot
-types and features have been added, however horizontal plots are still
-considered 'experimental'. A new callback has been added which allows
-greater control over the data colors. An improved method for accessing
-TrueType Font (TTF) files means that on many systems TTF text can be used
-without specifying font paths.
-
-
-Cautions and Important Notes:
-
-Since the previous PHPlot release, PHP-5.3.3 and PHP-5.2.14 have been
-released, and these include a fix for the TrueType Font (TTF) rendering
-problem. Use of these releases is now recommended.
-
-There has been extensive cleanup of the PHPlot code. If you have a
-customized version of PHPlot, you may find it difficult to update.
-
-The "additional data support" script phplot_data.php has been removed from
-this release. The script has not been developed or tested in a long time,
-and was found to have numerous problems. The script can still be found in
-the CVS repository.
-
-The changes in this release (horizontal plots, custom data color callback,
-and TrueType Font handling) should not result in any compatibility issues.
-
-
-New features in 5.1.3:
-
-#3049703 "Additional horizontal plots and features":
-  + Implemented data values labels in horizontal bar charts.
-    Use: SetXDataLabelPos('plotin').
-  + Add horizontal stacked bar charts, with data value labels.
-  + Add horizontal thinbarline plots.
-  Horizontal plots are still considered 'experimental', and documentation is
-  in the HorizontalBars.txt text file rather than the PHPlot Reference Manual.
-
-#3034164 "Extended control of data colors":
-  New callback 'data_color' can be used to customize selection of the color
-  of each bar, line segment, point marker, etc. This is documented in the
-  PHPlot Reference Manual section "Custom Data Color Selection", with new
-  examples in the Examples chapter.
-
-
-Bugs Fixed in 5.1.3:
-
-#3051906 "Better choice for default TT font":
-  Rather than always using the unlikely 'benjamingothic.ttf' as its default
-  TrueType font name, PHPlot now has a short list of sans-serif fonts, and
-  tries to find one that works if a default TT font is needed.  On many
-  systems, this will provide a high-quality default font without help.
-
-#3051832 "Let PHP/GD find the font file":
-  Instead of using file existence to validate a TT font file, PHPlot now
-  just tries to use the font. This allows PHP/GD to use its own rules to
-  try to find the font, without needing a pathname.  This works on Windows
-  and at least some Linux systems.
-
-#3048267 "phplot_data add-on is still broken"
-  Not fixed. phplot_data.php has been removed from the release.
-
------------------------------------------------------------------------------
-
-2010-06-29 Release 5.1.2
-
-Overview:
-
-This is the current stable release of PHPlot. Truecolor image support is no
-longer considered 'experimental', and is now documented in the reference
-manual. There is a new experimental feature for horizontal bar charts. This
-release also contains a bug fix and new feature.
-
-
-Cautions and Important Notes:
-
-The advisory against using PHP-5.3.2 or PHP-5.2.13 with PHPlot if you use
-TrueType fonts (TTF) continues. See the item below for PHPlot-5.1.1. The
-good news is that this has been fixed by the PHP Team and will be in the
-next releases.
-
-Compatibility of data type and plot type are now checked completely.  If
-you used an incorrect data type with certain plot types, your script may no
-longer work until you fix the data type. Specifically, the area, squared,
-and thinbarline plot types failed to check the data type they received, and
-treated anything other than 'data-data' as 'text-data'.  If you have a
-squared plot with data type 'data-data-error', for example (which is not
-supposed to work), it did produce a plot, but will now result in an error.
-
-The addition of horizontal bar charts should not impact any existing plot,
-with one small exception. The function SetYDataLabelPos() used to accept
-some additional, undocumented options (plotleft, plotright, both, yaxis)
-and pass these through to SetYTickLabelPos() "for compatibility". It no
-longer does so, as some of those are now used for horizontal bar chart
-labels. To position Y tick labels, use only SetYTickLabelPos().
-
-
-New features in 5.1.2:
-
-#3002606 "Add to plot and image border options":
-  SetPlotBorderType() now accepts 'right', 'top', and 'bottom', as well
-      as an array of options. So you can now control exactly which of the 4
-      border sides will be drawn.
-  SetImageBorderType() now accepts 'solid' as a choice. This will use the
-      actual color set with SetImageBorderColor(), rather than the darker
-      shade as type 'plain' does (which may have been a bug).
-  SetImageBorderWidth() is a new function that sets the width of the image
-      border. The defaults are the same as the fixed values used before: 1
-      pixel for plain, 2 pixels for raised.  The image border width is now
-      accounted for in margin calculations, if it is greater than 2 (to make
-      sure existing plots will not change).
-
-#2885930 "Horizontal Bars":
-  Horizontal bar charts are implemented, as an experimental feature.
-  'Experimental' means they are not yet documented in the reference manual,
-  and subject to change or removal.
-  Refer to the text file HorizontalBars.txt for details.
-
-#2947679 (follow-up) "Support for alpha blending/Truecolor":
-  Truecolor support is now documented in the Reference Manual. The interim
-  documentation file Truecolor.txt has been removed. Alpha channel
-  specification now works with both constructors and both image types.  This
-  fixes an issue if the base constructor was used with a truecolor background
-  image. (In PHPlot-5.1.1, the result would be a truecolor image, but the
-  alpha channel features were not available.)
-
-
-Bug Fixed in 5.1.2:
-
-#3010116 "Bad rendering of title in multi-plot image when using TTF":
-  Make sure the main title is drawn only once, to avoid bad rendering of
-  TTF titles with multiple plots due to anti-aliasing.
-
------------------------------------------------------------------------------
-
-2010-04-04 Release 5.1.1
-
-Overview:
-
-This is the current stable release of PHPlot. This release adds truecolor
-image support as an experimental feature, fixes a number of bugs and adds
-a few new features.
-
-The PHPlot reference manual has been updated to match this release.  The
-manual is available as a separate download from Sourceforge. The manual is
-also available for on-line viewing from the project home page.
-
-See the ChangeLog file in the release for more about changes and bug fixes.
-
-
-Cautions and Important Notes:
-
-Avoid using PHP-5.3.2 or PHP-5.2.13 with PHPlot if you use TrueType fonts
-(TTF). Some new bugs were introduced in those releases that adversely
-affects accurate positioning and rendering of TrueType font text.
-
-
-New features in 5.1.1:
-
-#2947679 "Support for alpha blending/Truecolor":
-  PHPlot can now produce truecolor images, with alpha blending of colors and
-  other effects. This is considered an experimental feature, meaning it is
-  not yet documented in the PHPlot Reference Manual, and subject to change.
-  Refer to the text file Truecolor.txt included in the PHPlot release for
-  information on using truecolor.
-  Two drawing changes were made to improve plot appearance with Truecolor:
-  + Filled dots (in points & linepoints plots) are now drawn better. This
-    also makes them look rounder with regular (non-Truecolor) plots.
-  + Area plots have the areas filled without overlapping each area down to
-    the Y axis. This was needed to fix problems with alpha blending, and
-    should have no effect on non-Truecolor plots.
-
-#2973995 "Add y-Data to Stackedbars":
-  You can now have Y Data Labels with 'stackedbars' plots. These label the Y
-  values (incremental and total) for each bar. Refer to the reference manual
-  page for SetYDataLabelPos().
-
-
-Bug Fixes in 5.1.1:
-
-#2976735 "Improvements and fixes for 'area' plots":
-  Moving X axis works; handle Y<0 better; new 'stackedarea' plot type is a
-  variation on 'area' with the data represented differently.
-
-#2974639 "Stacked bars plot breaks with X axis != 0":
-  Moving X axis works.
-
-#2963757 "point_counts undefined error in 5.1.0":
-  Fixed an error introduced in PHPlot-5.1.0 when point size and shape arrays
-  were set to the same size.
-
-#2938219 "Bars go in wrong direction":
-  For bar charts with all Y<0, bars will still be drawn down even if Y=0 is
-  not in range.
-
------------------------------------------------------------------------------
-
-2009-12-24 Release 5.1.0
-
-Overview:
-
-This is the current stable release of PHPlot. This release fixes a number of
-bugs and adds some new features. Some of the changes in this release can
-alter the appearance of plots, so be sure to review the information in this
-NEWS file and test this release with your application.
-
-The PHPlot reference manual has been updated to match this release.  The
-manual is available as a separate download from Sourceforge. The manual is
-also available for on-line viewing from the project home page.
-
-See the ChangeLog file in the release for more about changes and bug fixes.
-
-
-New features in 5.1.0:
-
-+ A new "contrib" directory has been added for useful add-ons.
-  This currently contains:
-    * prune_labels : Control data label density on X axis.
-    * color_range : Define a gradient map for data colors.
-
-+ Feature Request 2899921 "Allow different format for data and tick labels"
-  Text angle and format can now be controlled separately for data labels.
-
-+ Locale loading override
-  New variable locale_override stops PHPlot from getting locale from system.
-
-+ Translating Coordinates
-  New function GetDeviceXY() to translate world to device coordinates.
-
-+ New drawing callback
-  New callback 'draw_all', called after all drawing is done.
-  The manual now contains an example of using this new callback and
-  the new GetDeviceXY() function to annotate a plot.
-
-
-Bug Fixes in 5.1.0:
-
-#2914403 "Pie + X/Y titles: Undefined property error"
-  X/Y titles are now properly ignored for pie charts.
-
-#2908256 "Error: array_sum() should be an array" (drupal)
-#2916864 "Should at least print legend on pie charts with empty data"
-  Pie charts with invalid data (no Y values > 0) now make an empty plot.
-
-#2906436 "Fixes for X Tick Labels vs X Data Labels"
-  Smarter determination of whether to do Tick labels, Data labels, or both.
-
-#2900914 "Problem with display of 0 on Y axis"
-  Fixed rounding error that could produce something like Y=8.12345E-16.
-
-#2886365 "PHP 5 patch" (Declare all functions and variables in PHP5 style)
-  Most internal PHPlot member functions now have "protected" visibility.
-
-#2839547 "SetImageBorderType('none')
-  You can use SetImageBorderType('none') to turn the image border back off.
-
-#1795972 "Fix default point shapes"
-  We now have 20 (vs 10) point shapes, with 10 (vs 1) used by default.
-
-#1795971 "Fix default data colors"
-  We now have 16 (vs 8) default data colors, no duplicates, all visible.
-
-
-Visible Changes and Possible Incompatibilities:
-
-+ PHP5 visibility changes (Bug #2886365)
-Details: Most internal PHPlot member functions now have visibility
-    'protected', rather than all being public. All member variables are
-    still 'public'.
-
-Reason for the change: Use the recommended PHP5 syntax, better OO style.
-
-Compatibility: If you were calling a PHPlot internal function that got
-    changed to 'protected', this will break. Please report this.
-
-
-+ Fix default point shapes (Bug 1795972)
-Details: We now have 20 (vs 10) point shapes available, and by default we
-    have 10 (vs 1) different shapes in use. The default size is now 6 pixels
-    for all point shapes.
-
-Reason for the changes: Using different shapes helps distinguish the data
-    sets. The existing 10 defined shapes were not enough, since some of them
-    are not centered over the points, too small, or otherwise hard to see.
-    The code to synchronize the point shape and size arrays was broken, and
-    some dubious code to adjust sizes to even numbers needed to be fixed.
-
-Compatibility (1): If you have a points or linepoints plot with more than
-    one dataset, and you did not use SetPointShapes() to configure the
-    shapes, them your plot will change from using a diamond for all data
-    sets to using different shapes for up to 10 data sets.
-
-Compatibility (2): Fixing the point size/point shape array size bug may
-    slightly change the size of some shapes, but it now works the way it
-    was documented and supposed to work.
-
-+ Fix default data colors (Bug 1795971)
-Details: Defined a new set of 16 default data colors. The colors are
-    different and contrast well against the default white background.
-    The first 4 colors were not changed.
-
-Reason for the change: The default 8 data colors included two instances
-    of orange, and one color which was invisible on a white background.
-
-Compatibility: Colors will change on any plot with more than 4 data sets
-    where you did not use SetDataColors() to set your own data colors.
-
-+ Re-used old function SetXDataLabelAngle()
-Details: SetXDataLabelAngle() now does something different.
-
-Reason for the change: This name was needed for a new function, to set the
-    angle for the X Data Labels. The old use of this function was not
-    documented, and marked "deprecated" in the code since around 2003-12-07.
-
-Compatibility: If you are still using SetXDataLabelAngle() to set both Tick
-    and Data label angles, you need to use SetXLabelAngle() instead.
-
-+ Separate controls for tick and data labels (Feature Request 2899921)
-Details: New functions SetXDataLabelAngle(), SetYDataLabelAngle(),
-    SetXDataLabelType(), and SetYDataLabelType() to allow separate control
-    over the angle and format of data labels, versus tick labels.
-
-Reason for the change: Allow Data Labels to use different formatting and
-    angle compared to Tick Labels.
-
-Compatibility: The default behavior has been set up such that there should
-    be no compatibility issues. For example:
-    Old behavior: SetXLabelType() sets the type for both tick and data labels.
-    New behavior: SetXLabelType() sets the type for tick labels and the
-        default type for data labels.  SetXDataLabelType() sets the type for
-        data labels (overrides SetXLabelType).
-
-+ X Tick Labels vs X Data Labels (Bug 2906436)
-Details: Regarding SetXTickLabelPos() and SetXDataLabelPos(): If only one
-    of them is called, the behavior is unchanged (only that label type will
-    be displayed). If both are called: Do exactly what was requested. If
-    neither was called: display only data labels if any data labels are
-    non-empty, else display only tick labels.
-
-Reason for the change: 1) Fix the long-standing problem behavior that by
-    default PHPlot overlays tick and data labels below the X axis. 2) Fix
-    order dependency between setting the position of tick and data labels.
-    3) Prepare for future extension of data labels, and allow both tick
-    and data labels to be on if the programmer enables both.
-
-Compatibility: There are some cases where your plot will change.
-    (a) Calls neither SetXDataLabelPos() nor SetXTickLabelPos():
-      Old behavior: Both tick and data labels displayed, possibly overlaid.
-      New behavior: If there are any non-blank data labels, then show only
-          the data labels, not the tick labels. Otherwise, show tick labels.
-
-   (b) Calls both SetXDataLabelPos() and SetXTickLabelPos(), with other than
-       'none' for each position:
-     Old behavior: The latter call was effective; earlier one ignored.
-     New behavior: Independent of order, both calls are effective.
-
------------------------------------------------------------------------------
-
-2009-06-14 Release 5.0.7
-
-Overview:
-
-This is the current stable release of PHPlot. The release adds one new
-feature, fixes a few bugs, and changes the license under which PHPlot
-is released.
-
-The PHPlot reference manual has been updated to match this release.  The
-manual is available as a separate download from Sourceforge. The manual is
-also now available for on-line viewing at http://phplot.sourceforge.net
-
-See the ChangeLog file for more about changes and bug fixes.
-
-
-Licensing:
-
-PHPlot is now released on the terms of the GNU Lesser General Public
-License, version 2.1. (Previous versions of PHPlot were released under
-a dual "PHP/GPL" license.) The licensing change was authorized by the
-original author and copyright holder of PHPlot.
-
-
-New feature in 5.0.7:
-
-+ Plot area margins can now be partially specified, using either
-  SetMarginsPixels or SetPlotAreaPixels. In previous releases of
-  PHPlot you had to either specify all 4 margins or none.
-  Credit to adoll for this feature.
-
-
-Visible Changes and Possible Incompatibilities:
-
-+ Y data range can change:
-  As a result of the bug fixes in this release, automatically-calculated
-  Y data ranges can change. If you have missing Y values in your data,
-  and you let PHPlot calculate the Y data range (that is, you do not
-  call SetPlotAreaWorld with a Ymin value), then the lower limit for Y
-  can change. If you have a plot with data-data-error data type, different
-  error values for different points, and let PHPlot calculate the Y data
-  range, then either Y limit can change.
-
-
-Bug Fixes in 5.0.7:
-
-
-+ Fix for bug 2803900: SetRGBArray('large') does not work:
-  Corrected an array name usage problem. You can now select the large
-  color map. Also PHPlot no longer overrides use of the PHP include
-  path when loading the large color map, and now reports an error if the
-  file is needed and not found.
-
-+ Fix for bug 2791502 "Error plots treat missing Y values as 0":
-  Missing Y values now with with data-data-error plots.
-
-+ Fix for bug 2792860 "Wrong DataLabelLines with missing Y":
-  Data label lines are now suppressed at missing Y values.
-
-+ Fix for bug 2786350 "Missing Y data results in bad auto-range":
-  Missing Y values are now ignored when calculating the Y data range.
-  Bug report and analysis by mrten.
-
-+ Fix for bug 2786354 "Incorrect auto-range for data-data-error":
-  The Y data range is now correctly calculated for data-data-error plots
-  when the error values differ from point to point.
-
-
------------------------------------------------------------------------------
-
-2009-01-20 Release 5.0.6
-
-Overview:
-
-This is the current stable release of PHPlot. The purpose of this release
-is to fix additional problems with text spacing and positioning, and
-introduce some minor new features.
-
-The PHPlot reference manual has been updated to match this release.  The
-manual is available as a separate download from Sourceforge. The manual is
-also now available for on-line viewing at http://phplot.sourceforge.net
-
-
-New features in 5.0.6:
-
-+ Allow mixing GD and TrueType font text on the same plot
-  You can use the new method functions SetFontGD() and SetFontTTF() to
-  select a font and font type for text element (labels, titles, etc.) For
-  example, you can have TrueType plot titles, and GD-fixed font labels.
-  SetUseTTF() now sets the default text type, TTF or GD. This is fully
-  backward compatible.
-
-+ Extended label formatting
-  See the reference manual for more information on these.
-
-  New label formatting types are added: 'printf' (using a user-defined
-  format), and 'custom' (using a callback function).
-
-  For 'data' type formatting, a prefix and suffix can be added. (PHPlot
-  previously had an undocumented suffix for 'data' type, which still
-  works.)
-
-  For 'time' formatting, the format can now be specified in the same function
-  call rather than using SetXTimeFormat and SetYTimeFormat.
-
-  For 'data' formatting, the precision can now be specified in the same
-  function call, rather than using SetPrecisionX and SetPrecisionY.
-
-+ Better control over line spacing in multi-line labels
-
-  Line spacing can now be set separately for each text element using an
-  additional argument to SetFont, SetFontGD, and SetFontTTF.  The overall
-  SetLineSpacing() value is the default for each text element that does not
-  have a specific line spacing set.
-
-  PHPlot now interprets the value set for line spacing as the number of
-  pixels only for GD text. For TrueType text, it is a scale factor for the
-  font's built-in line spacing for TrueType text. The equation used is:
-      interline_spacing = line_spacing * font_natural_spacing / 6
-  where line_spacing is either the global value set with SetLineSpacing
-  or a more specific value set with SetFont(), and font_natural_spacing
-  is the amount of space between lines built-in to the TrueType font. The
-  factor 6 should really be 4 (since PHPlot always used 4 as the default
-  line_spacing, this would give the natural font spacing by default). But
-  the text is too widely spaced with this value, and 6 was chosen to be
-  more compatible for typical font sizes.
-
-Visible Changes and Possible Incompatibilities:
-
-+ Line spacing
-  Multi-line TrueType titles and labels will have different inter-line
-  spacing. Since the text size affects the margin and plot area sizes,
-  this results in slightly different sized features on any plot with
-  multi-line TrueType text.
-  Previous versions of PHPlot used a default 4 pixels for inter-line
-  spacing of multi-line TrueType text, regardless of the font size.
-  PHPlot now uses the 'natural' font inter-line spacing, adjusted by a line
-  spacing parameter (per text type, with a global default).
-
-  The same change can also increase the size of the legend box slightly.
-
-+ Internal changes were made to the way font information is stored. Anything
-  that directly references PHPlot internals regarding fonts will break. Usage
-  also changed for the internal functions to size and draw text (ProcessText*,
-  SizeText*) due to font data storage changes.
-
-+ Changes were made to internal class variables used to store label
-  formatting information. Anything relying on these internals may break.
-
-
-Bug Fixes in 5.0.6:
-
-#1932571: Data-Data Plot fails with same X values
-  PHPlot will no longer hang if all X values are the same. But this is
-  interim fix to force the X range to 1 to prevent the hang. Eventually,
-  smarter automatic range code will handle this better.
-  Credit to andyl for finding this.
-
-#1891636: Misaligned TTF X Labels
-  PHPlot will now correctly line-up TrueType labels along the X axis. There
-  were small but very noticeable errors before, when the text had descenders
-  or lines with all short letters.
-
-
------------------------------------------------------------------------------
-
-2008-01-13 Released 5.0.5
-
-Overview:
-
-This is the current stable release of PHPlot. The emphasis of this release
-is to improve text positioning, margin calculation, and error handling.
-
-Although this is considered a stable release, it has a large amount
-of changed code compared to the previous release 5.0.4. Two of the more
-complex components of PHPlot - text and margin calculations - were mostly
-re-written in this release. You are advised to carefully test your own
-applications with PHPlot-5.0.5 to see how your plots look. Refer to the
-README.txt file included in the release for information on reporting problems.
-
-Starting with this release, PHPlot no longer supports PHP4, since the PHP
-group officially declared end-of-life for PHP4 as of 31 December 2007.
-PHPlot-5.0.5 was tested only with PHP-5.2.5 and we are unlikely to address
-any issues using PHPlot with older versions of PHP.
-
-The PHPlot reference manual has been updated to match this release.  The
-manual is available as a separate download from Sourceforge. The manual is
-now also now available for on-line viewing at http://phplot.sourceforge.net
-
-The callback feature added in 5.0.4 is now documented in the reference
-manual. It is still considered experimental and subject to change, however.
-
-
-
-Visible Changes and Possible Incompatibilities:
-
-+ Dropped support for PHP4.
-
-+ Eliminated remaining order-dependent behavior related to margins and
-text. PHPlot should now do nothing at all, except record parameters, until
-you draw the graph with DrawGraph. I believe this was always the intended
-behavior of PHPlot, but over time perhaps various pre-calculations and
-dependencies crept in. Fixing this simplifies processing and should lead to
-more consistent behavior.
-
-+ The rewritten margin calculation code now uses actual sizes of all tick
-and data labels and tick marks, rather than guesses. Margins collapse to
-remove unused elements, but a minimum margin (currently fixed at 15 pixels)
-is applied so the plot edges don't get to close to the image edges. The
-result is that most graphs with auto-calculated margins will change in
-appearance. It most cases, the margins get slightly smaller. In other
-cases, earlier releases mis-calculated the margins, so this release will
-produce much neater margins.
-
-+ The X and Y titles are now offset out from the plot area, not in from the
-image area.  For auto-calculated margins this should not make any
-difference, but if you use SetMarginsPixels or SetPlotAreaPixels to set
-larger margins, the axis titles will move in closer to the plot with this
-release.
-
-+ Changes were made to PHPlot internals, including removal of some class
-variables and functions, and addition of new variables and functions.
-These are documented in the ChangeLog. Relying on any internal variables
-or functions in an application using PHPlot is unwise. The following
-internal functions were removed:
-     SetImageArea() DrawDotSeries() DrawLineSeries() CalcXHeights()
-     CalcYWidths() DrawLabels() InitImage() DrawDashedLine()
-         These were marked 'deprecated', were undocumented and unmaintained.
-     TTFBBoxSize()
-         This was replaced with SizeText().
-
-+ Line spacing set with SetLineSpacing() now affects TTF text as well as
-GD text. Previously, it only affected GD text. The default line spacing
-happens to be usable for TTF text.
-
-+ Changes were made to error handling. PHPlot will now trigger a user-level
-error after producing an error image, instead of exiting.  If no error
-handler has been set, it will exit, as before. But now the error message
-should also get logged, or written to the standard error stream, depending
-on the SAPI in use.  You can now establish an error handler to catch most
-PHPlot errors and do some cleanup before exit.
-
-+ PHPlot no longer accepts some invalid option values (such as a substring
-of a valid value, or empty strings) passed to functions. If your
-application aborts in CheckOption with PHPlot-5.0.5 but 'worked' with
-previous releases, them you were probably using an invalid option value.
-
-
-
-Bug Fixes in 5.0.5:
-
-#945439: x_tick_label_height not set correctly
-  Exact sizes of labels are now used to calculate margins.
-
-#1813070: Bad position for multi-line TrueType text
-  Fixed as part of text functions rewrite. Use correct basepoint
-  (lower left of each line) when positioning text lines.
-
-#1813071: Wrong title height for multi-line TTF text
-  Fixed as part of text functions rewrite: calculate height of
-  multi-line text correctly. Also now uses the line-spacing setting.
-
-#1813474: DrawText alignment arguments wrong
-  Fixed so 'top' and 'bottom' now have the usual meaning: top means
-  align top of text with reference, bottom means align bottom of text.
-  This was switched before. Changed every internal caller to compensate.
-
-#1816844: Fix order dependency for setting titles
-  Defer processing of title strings until DrawGraph(),
-  so it doesn't matter if fonts, etc. are set before or after.
-
-#1819668: Horiz. align multi-line text: GD vs TTF
-  The text functions were rewritten to draw TTF text line-by-line,
-  like GD text, and correctly align each line.
-
-#1823774: Default Font Path and Error Message
-  Error handling has been improved to make sure a message is logged, in
-  addition to the error image, and use error_trigger rather than exit.
-
-#1826513: FIXME in DrawLegend: Max label length
-  The actual size needed for legend text is now used.
-
-#1827263: Spoiled up pie-chart if $val is close to zero
-  Fixed by skipping over any segment that rounds to 0 degrees of
-  arc. (The GD function uses integer angles only, and 0 degrees
-  means draw a complete circle.)
-
-#1836528: Insufficient checking of parameter values
-  Rewrote validator function to reject improper parameter values.
-
-#1843012: Make margins, drawing consistent
-  Margin code logic was rewritten and checked for consistency.
-
-#1856207: Margin error with 'xaxis'/'yaxis' position
-  Margin space is now allocated for ticks and labels if their position
-  is 'xaxis' or 'yaxis' and the axis is at the plot edge. This is not
-  a perfect fix (the axis could be close but not at the edge).
-
-
------------------------------------------------------------------------------
-
-2007-10-20 Released 5.0.4
-
-Overview:
-
-This is the latest stable release of PHPlot. We are abandoning the 'rc'
-version naming style, because we don't consider these last releases
-'release candidate' versions. As we continue to make changes to PHPlot,
-we are not converging toward a final "5.0" release, however we do consider
-these releases stable and complete enough for production use.
-
-This release fixes a number of problems and introduces a few new features.
-
-The PHPlot reference manual has also been updated to match this release.
-New material has been added documenting some of the PHPlot internals.
-The manual is available as a separate download from Sourceforge.
-
-
-Code Cleanup:
-
-Some code cleanup is going in to this release. It is hoped that these
-changes will not impact any existing scripts using PHPlot, but will make
-the PHPlot code itself easier to understand and maintain.
-
-PHPlot now avoids making changes outside its own class definition. There
-are no longer any functions defined outside the class, nor any constants.
-Three constants (MINY MAXY TOTY) were removed, and 2 functions were removed
-(see Visible Changes below).  Also PHPlot no longer sets the PHP error
-reporting level to E_ALL. Although we highly recommend setting error
-reporting to E_ALL in your php.ini file or scripts, it is not right for
-PHPlot to assume that you want it.
-
-
-Visible Changes and Possible Incompatibilities:
-
-Arrays containing color and style information are used with several PHPlot
-functions to control the plot style array. These functions are:
-    SetPointShapes, SetPointSizes, SetLineWidths, SetLineStyles,
-    SetDataColors, SetDataBorderColors, and SetErrorBarColors.
-The arrays passed to these functions MUST used sequential integer 0-based
-indexes. This is what the PHP manual calls "Usual integer indices (starting
-from zero, increasing by one)". This is the type of array you get in PHP by
-default if you use array() without specifying key values, or use the
-empty-bracket assignment operator to add values onto an array.  In previous
-versions of PHPlot, some of these functions would also work with
-string-indexed or non-sequentially-indexed arrays, but this was not clearly
-defined. Starting with PHPlot-5.0.4, only arrays with "usual integer
-indices" work, and other array indexes will cause errors.
-
-Some internal-use-only functions have had their usage changed or been removed.
-If you are using functions that are not documented in the PHPlot Function
-Reference in the manual, your code may have to be changed.
-
-As part of the code cleanup, two functions which were defined outside the
-PHPlot class were removed: array_pad_array(), and array_merge_php4().
-If your code used these, you need to fix your code.
-
-The routines which accept a color name, value, or array now check for a valid
-color name. If you specify a color name which is not in your current color
-table, PHPlot will draw an error and exit. Previously, PHP would report an
-index error, continue, and get a 'headers already sent' message.
-
-
-Bug Fixes in 5.0.4:
-
-#1813021: Miss-positioned right-justified vertical GD text.
-  Fixed DrawText() to correctly position 90 degree right-justified text
-  drawn in a fixed GD font. This could be seen with 90 degree Y tick labels.
-
-#1790441 Removed destructor/shutdown function, and no longer recommend
-  using reference assignment when creating a PHPlot object. This was
-  interfering with memory usage.
-  Credit to annajilly for analysis.
-
-#1779115 SetLegendWorld() failed because of undefined variables. The
-  required order dependency was too hard to meet. This is now fixed.
-  You can now use SetLegendWorld anywhere before DrawGraph.
-
-#1726810 (feature request, but actually a bug fix) Ignore empty strings
-  as data labels when doing time or data label formatting. These would
-  previously produce errors or bad formatting. Now you can omit labels
-  as needed even with time and data formatting.
-  Credit to exgerhardr for finding this.
-
-#1605555 Y data labels used wrong font and not formatted (bar charts only).
-
-#1208054 Localization of number formatting in 'data' format type. PHPlot
-  will attempt to format the numbers in a way appropriate to your locale.
-  You can also force the formatting with the new function SetNumberFormat.
-  Credit to David Hernández Sanz.
-
-#937944 X/Y Tick counts: PHPlot could draw one two few Y tick counts, and
-  one too many X tick counts. This is not a perfect fix, and more work is
-  needed here, but this fixes an error case in both X and Y values.
-
-
-New Features in 5.0.4:
-
-New function SetLegendStyle allows control of the alignment of text and
-  color boxes within the legend.  Also allows removing the color boxes.
-  Based on bug #1208054.
-  Credit to David Hernández Sanz.
-
-New function SetNumberFormat. See bug report #1208054 above.
-
-Callbacks are added. PHPlot can call back your functions while generating the
-  plot. This is experimental, and documented only in the file "Callbacks".
-  Credit to annajilly for the idea and design.
-
------------------------------------------------------------------------------
-
-2006-11-13 Released 5.0rc3
-
-Overview:
-
-This is an interim release. It has been a long time since the previous
-release 5.0rc2, and there have been a lot of changes. There are still more
-changes likely to go in before we have "5.0", but there are enough for now.
-
-The PHPlot Reference Manual has also been released, and is available as a
-separate download from Sourceforge. PHPlot users and developers are
-strongly encouraged to read the manual.
-
-This release does not include the "doc/" and "examples/" directories of
-previous releases. The Reference Manual contains more complete and
-up-to-date information and examples, and I am unable to maintain the doc/
-and examples/ files while also maintaining the Reference Manual. If you
-need those files, they can be accessed with the Sourceforge web CVS
-browser.
-
-
-New Features:
-
-The emphasis for this release is bug fixing, so there are few new features.
-
-+ You can now suppress lines or points on individual plots in a linepoints
-  graph. This feature was added because I needed a graph with several
-  linepoints lines, but also with a solid line showing an "80% goal".
-  Use SetPointShapes with the value 'none' in the array to suppress the
-    point markers for that plot (and only draw the line).
-  Use SetLineStyles with the value 'none' in the array to suppress the
-    line for that plot (and only draw the point markers).
-  [Bug # 1594458]
-
-+ Bar charts can have data labels above the bar with the value. Turn
-  these on with SetYDataLabelPos('plotin'). This is somewhat experimental,
-  since there isn't a lot of room for labels on top of the bars and you
-  may find the results are not useful.
-
-
-Visible Changes:
-
-Here are the more significant changes in this release. These are changes
-which may affect existing scripts and output from PHPlot.  See the
-ChangeLog file for information about all changes and bug fixes.
-
-+ A bug fix on bar chart bar borders results in black borders around the
-  bars if shading is turned off. The border was previously covered up,
-  but was supposed to be there. If you need borderless, unshaded bars,
-  you need to use SetDataBorderColors to make the borders the same colors
-  as the bars. [Bug # 1096197]
-
-+ TrueType font pathname handling was fixed. You no longer need to use
-  SetUseTTF(True). You can either use full paths to the font files with
-  SetDefaultTTFont() and SetFont(), or you can call SetTTFPath() to point
-  to a directory of font files, and then use simple font filenames without
-  paths in SetDefaultTTFont() and SetFont().
-  [Bug # 1144644 plus several others]
-
-+ There have been several fixes regarding automatically calculated ranges
-  and scales. The result is that you may see less extra space and fewer
-  tick marks in some cases.
-
-+ A fix was made to bar and stackedbar graph bar widths in order to get
-  the X axis labels to properly center. As part of the fix, the bar widths
-  now match between the two graph types. (Before this fix, the bars were
-  narrower in bar graphs compared to the same data plotted as a stacked
-  bar.) As a result, bar graph bars will now be drawn with wider bars, and
-  stackedbar graph bars will be narrower. You can adjust this with the new
-  class variable bar_extra_space.     [Bug # 1437912]
-
-+ Dot shapes and sizes were off by 1 or 2 slots in the array of shapes or
-  sizes. After the fix, you may get different dot shapes or sizes per
-  plot line. [Bug # 1096194]
-
-
-Testing:
-Since its output is visual (graphics), and it has so many interconnected
-modes and options, PHPlot is difficult to test. But at least we are now
-trying. I have a collection of PHPlot scripts (currently about 60) and a
-script to run through them. The script automatically checks that:
-    1) Nothing was written to the standard error stream;
-    2) An image file of size greater than 0 was written;
-    3) Neither the test script nor PHPlot did exit(). This catches cases
-       where PHPlot aborts with DrawError().
-
-The automated test is an easy way to check for serious regression, but you
-really need to inspect the output files to validate PHPlot. This takes a
-little time, and it is easy to overlook problems.
-
-The real issue is test coverage. Just as we can be sure that future
-PHPlot releases will pass the test collection, we can also be sure that
-future bug reports will be written against untested cases.
-
---------------------
-
-2006-11-08 PHPlot on Sourceforge has a new maintainer: lbayuk
-
---------------------
-
-2004-10-24 Released 5.0rc2
-
---------------------
-
+This is the NEWS file for PHPlot, with release documentation.\r
+The project web site is http://sourceforge.net/projects/phplot/\r
+The project home page is http://phplot.sourceforge.net/\r
+Refer the the ChangeLog file for detailed source changes.\r
+-----------------------------------------------------------------------------\r
+\r
+2011-01-15 Release 5.3.1\r
+\r
+Overview:\r
+\r
+This is the current stable release of PHPlot. This release focuses on\r
+providing better support and documentation for creating multiple plots on a\r
+single image.\r
+\r
+The PHPlot reference manual has been updated to match this release. Some\r
+new material has been added, including a new section on multiple plots per\r
+image, and a new example of overlay plots.\r
+\r
+\r
+Bugs Fixed in 5.3.1:\r
+\r
+#3143586 "Multiple plots per image - fixes & docs":\r
+  The reference manual now contains a section on multiple plots, and a\r
+  new example. A bug was fixed with SetLegendWorld and multiple plots.\r
+  Image border will now be drawn at most once. It is now possible to\r
+  restore the default 'automatic' behavior for axis positioning. Other\r
+  functions were changed to make arguments optional, so when called with\r
+  no arguments they reset to the default. The reference manual has been\r
+  updated with these changes too.\r
+\r
+#3147397 "Data colors missing with multiple plots":\r
+  The fix for bug #3049726 "Optimize color allocation" caused a problem\r
+  with multiple plots. This has been fixed. PHPlot will no longer truncate\r
+  the data color table at each plot. It will still only allocate data colors\r
+  as needed, but all of the pre-set or configured data colors will be\r
+  available for each plot.\r
+\r
+\r
+-----------------------------------------------------------------------------\r
+\r
+2010-12-04 Release 5.3.0\r
+\r
+Overview:\r
+\r
+This is the current stable release of PHPlot. This release includes new\r
+plot types and some new features.\r
+\r
+The PHPlot reference manual has been updated to match this release. Some of\r
+the sections have been moved, there are new examples for the new plot types,\r
+and a new section on tunable parameters has been added.\r
+\r
+\r
+New features in 5.3.0:\r
+\r
+#3093483 "Investing support chart types":\r
+  Added 3 new plot types: Basic OHLC (Open/High/Low/Close), Candlesticks,\r
+  and Filled Candlesticks. These are variations of plots that show the\r
+  performance of a stock or other financial security.\r
+\r
+#3111166 "Control legend colorbox width":\r
+  It is now possible to control the width of the color boxes in the\r
+  legend, using a class variable which is documented in the manual.\r
+\r
+#3117873 "Data value labels in more plot types":\r
+  Data value labels, which show the dependent variable values near the\r
+  data points, are now available for more plot types: lines, linepoints,\r
+  points, and squared. (These were previously available only for bars and\r
+  stackedbars plots.)\r
+\r
+#3127005 "Ability to suppress X/Y axis lines":\r
+  New functions SetDrawXAxis() and SetDrawYAxis() were added to control\r
+  display of the X and Y axis lines. (These lines were probably the only\r
+  PHPlot elements that could not be turned off.) In special cases, these\r
+  can be used to produce a "bare" plot image.\r
+\r
+\r
+-----------------------------------------------------------------------------\r
+\r
+2010-10-03 Release 5.2.0\r
+\r
+Overview:\r
+\r
+This is the current stable release of PHPlot. This release includes some\r
+bug fixes and new features, described below, and a reimplementation of\r
+internal processing of colors.\r
+\r
+The PHPlot reference manual has been updated to match this release.\r
+Horizontal plots are now documented in the manual, and the interim\r
+documentation in the source release (HorizontalBars.txt) has been removed.\r
+The manual is available in HTML format as a separate download from\r
+Sourceforge.  The manual is also available for on-line viewing from the\r
+project home page.  Starting with this release, the manual is also\r
+available in PDF format from the project home page.\r
+\r
+\r
+Cautions, Important Notes, and Compatibility Issues:\r
+\r
+Due to changes in color allocation (see bug #3049726 below), image files\r
+produced with PHPlot-5.2.0 will differ when compared byte-for-byte with\r
+those created by earlier releases, even when the images are identical (as\r
+they nearly always are).\r
+\r
+If you are creating a horizontal plot with any negative X values, and not\r
+setting the Y axis position, your plot will change (see bug #3074402 below)\r
+because PHPlot no longer leaves the Y axis on the left for horizontal plots.\r
+\r
+Some internal methods that used to have 'public' visibility are now protected.\r
+This will generally prevent you from using them. The list of changed functions\r
+can be found in the release ChangeLog. Avoid using any internal methods.\r
+\r
+If you are making a stackedbar plot with any negative values, PHPlot-5.1.3\r
+and earlier took the absolute value of each data value (which was not\r
+documented), but PHPlot-5.2.0 does not. See Feature Request #3073679 below.\r
+\r
+If your plot fills the 256 available color map slots in a palette image,\r
+your image may look different with PHPlot-5.2.0 due to changes in color\r
+allocation order.  This was seen on two of the tests in the PHPlot test\r
+suite. These tests tiled a JPEG image into the plot area or image\r
+background.  Being a truecolor image, the JPEG had a huge number of colors,\r
+which filled all available slots in the color map. Additional colors for\r
+plot elements had to be approximated, and different colors resulted with\r
+PHPlot-5.2.0 versus previous releases. To avoid this problem, either use a\r
+truecolor PHPlot object (PHPlot_truecolor constructor), or reduce the\r
+number of colors in the background image and convert it to PNG or GIF.\r
+\r
+This release contains significant changes to PHPlot internals. In particular,\r
+variables and functions related to element colors and color handling have\r
+changed. Refer to the PHPlot release ChangeLog for more details.  Remember,\r
+if you rely on accessing any member variable, or on using any non-public\r
+function or any function not documented in the reference section of the manual,\r
+your code is at risk of breaking with each new release.\r
+\r
+\r
+New features in 5.2.0:\r
+\r
+#3077554 "Finer control over plot element colors" (partial):\r
+  The X, Y, and main titles can now have different colors. See the PHPlot\r
+  Reference Manual entries for SetXTitleColor and SetYTitleColor.\r
+\r
+#3073679 "Stacked bar plots with negative values":\r
+  A stacked bar plot can now include negative values, and stacks of negative\r
+  values will be drawn downwards (or leftwards). See the PHPlot Reference\r
+  Manual under "Plot Type: stackedbars" for details.\r
+\r
+\r
+Bugs Fixed in 5.2.0:\r
+\r
+#3045131 "SetTransparentColor problems":\r
+  Setting a transparent color now works whether before or after setting\r
+  the background color (for example), and also now works with a data color.\r
+\r
+#3049726 "Optimize color allocation"\r
+  PHPlot now defers allocating colors until drawing time, and tries to allocate\r
+  only the colors which are actually needed. For palette images, this results\r
+  in use of fewer color slots and slightly smaller image files.\r
+\r
+#3074402 "Fix Y axis default for horizontal plots":\r
+  When horizontal plots were introduced, an asymmetry with the X and Y axis\r
+  position defaults was known but left. This behavior was later determined\r
+  to be unhelpful. So now the Y axis on horizontal plots will default to X=0,\r
+  or the X value closest to zero within the plot area range. This is the same\r
+  behavior as for the X axis in vertical plots.\r
+\r
+#3056991 "Internal methods should be 'protected'":\r
+  More of the internal PHPlot functions were changed to 'protected' visibility,\r
+  as the test suite was fixed to not call them directly.\r
+\r
+#3057000 "Review 'deprecated' methods":\r
+  One broken deprecated method (SetColor) was removed and one changed.\r
+  Note that deprecated methods are not documented and not tested.\r
+\r
+-----------------------------------------------------------------------------\r
+\r
+2010-08-30 Release 5.1.3\r
+\r
+Overview:\r
+\r
+This is the current stable release of PHPlot. Additional horizontal plot\r
+types and features have been added, however horizontal plots are still\r
+considered 'experimental'. A new callback has been added which allows\r
+greater control over the data colors. An improved method for accessing\r
+TrueType Font (TTF) files means that on many systems TTF text can be used\r
+without specifying font paths.\r
+\r
+\r
+Cautions and Important Notes:\r
+\r
+Since the previous PHPlot release, PHP-5.3.3 and PHP-5.2.14 have been\r
+released, and these include a fix for the TrueType Font (TTF) rendering\r
+problem. Use of these releases is now recommended.\r
+\r
+There has been extensive cleanup of the PHPlot code. If you have a\r
+customized version of PHPlot, you may find it difficult to update.\r
+\r
+The "additional data support" script phplot_data.php has been removed from\r
+this release. The script has not been developed or tested in a long time,\r
+and was found to have numerous problems. The script can still be found in\r
+the CVS repository.\r
+\r
+The changes in this release (horizontal plots, custom data color callback,\r
+and TrueType Font handling) should not result in any compatibility issues.\r
+\r
+\r
+New features in 5.1.3:\r
+\r
+#3049703 "Additional horizontal plots and features":\r
+  + Implemented data values labels in horizontal bar charts.\r
+    Use: SetXDataLabelPos('plotin').\r
+  + Add horizontal stacked bar charts, with data value labels.\r
+  + Add horizontal thinbarline plots.\r
+  Horizontal plots are still considered 'experimental', and documentation is\r
+  in the HorizontalBars.txt text file rather than the PHPlot Reference Manual.\r
+\r
+#3034164 "Extended control of data colors":\r
+  New callback 'data_color' can be used to customize selection of the color\r
+  of each bar, line segment, point marker, etc. This is documented in the\r
+  PHPlot Reference Manual section "Custom Data Color Selection", with new\r
+  examples in the Examples chapter.\r
+\r
+\r
+Bugs Fixed in 5.1.3:\r
+\r
+#3051906 "Better choice for default TT font":\r
+  Rather than always using the unlikely 'benjamingothic.ttf' as its default\r
+  TrueType font name, PHPlot now has a short list of sans-serif fonts, and\r
+  tries to find one that works if a default TT font is needed.  On many\r
+  systems, this will provide a high-quality default font without help.\r
+\r
+#3051832 "Let PHP/GD find the font file":\r
+  Instead of using file existence to validate a TT font file, PHPlot now\r
+  just tries to use the font. This allows PHP/GD to use its own rules to\r
+  try to find the font, without needing a pathname.  This works on Windows\r
+  and at least some Linux systems.\r
+\r
+#3048267 "phplot_data add-on is still broken"\r
+  Not fixed. phplot_data.php has been removed from the release.\r
+\r
+-----------------------------------------------------------------------------\r
+\r
+2010-06-29 Release 5.1.2\r
+\r
+Overview:\r
+\r
+This is the current stable release of PHPlot. Truecolor image support is no\r
+longer considered 'experimental', and is now documented in the reference\r
+manual. There is a new experimental feature for horizontal bar charts. This\r
+release also contains a bug fix and new feature.\r
+\r
+\r
+Cautions and Important Notes:\r
+\r
+The advisory against using PHP-5.3.2 or PHP-5.2.13 with PHPlot if you use\r
+TrueType fonts (TTF) continues. See the item below for PHPlot-5.1.1. The\r
+good news is that this has been fixed by the PHP Team and will be in the\r
+next releases.\r
+\r
+Compatibility of data type and plot type are now checked completely.  If\r
+you used an incorrect data type with certain plot types, your script may no\r
+longer work until you fix the data type. Specifically, the area, squared,\r
+and thinbarline plot types failed to check the data type they received, and\r
+treated anything other than 'data-data' as 'text-data'.  If you have a\r
+squared plot with data type 'data-data-error', for example (which is not\r
+supposed to work), it did produce a plot, but will now result in an error.\r
+\r
+The addition of horizontal bar charts should not impact any existing plot,\r
+with one small exception. The function SetYDataLabelPos() used to accept\r
+some additional, undocumented options (plotleft, plotright, both, yaxis)\r
+and pass these through to SetYTickLabelPos() "for compatibility". It no\r
+longer does so, as some of those are now used for horizontal bar chart\r
+labels. To position Y tick labels, use only SetYTickLabelPos().\r
+\r
+\r
+New features in 5.1.2:\r
+\r
+#3002606 "Add to plot and image border options":\r
+  SetPlotBorderType() now accepts 'right', 'top', and 'bottom', as well\r
+      as an array of options. So you can now control exactly which of the 4\r
+      border sides will be drawn.\r
+  SetImageBorderType() now accepts 'solid' as a choice. This will use the\r
+      actual color set with SetImageBorderColor(), rather than the darker\r
+      shade as type 'plain' does (which may have been a bug).\r
+  SetImageBorderWidth() is a new function that sets the width of the image\r
+      border. The defaults are the same as the fixed values used before: 1\r
+      pixel for plain, 2 pixels for raised.  The image border width is now\r
+      accounted for in margin calculations, if it is greater than 2 (to make\r
+      sure existing plots will not change).\r
+\r
+#2885930 "Horizontal Bars":\r
+  Horizontal bar charts are implemented, as an experimental feature.\r
+  'Experimental' means they are not yet documented in the reference manual,\r
+  and subject to change or removal.\r
+  Refer to the text file HorizontalBars.txt for details.\r
+\r
+#2947679 (follow-up) "Support for alpha blending/Truecolor":\r
+  Truecolor support is now documented in the Reference Manual. The interim\r
+  documentation file Truecolor.txt has been removed. Alpha channel\r
+  specification now works with both constructors and both image types.  This\r
+  fixes an issue if the base constructor was used with a truecolor background\r
+  image. (In PHPlot-5.1.1, the result would be a truecolor image, but the\r
+  alpha channel features were not available.)\r
+\r
+\r
+Bug Fixed in 5.1.2:\r
+\r
+#3010116 "Bad rendering of title in multi-plot image when using TTF":\r
+  Make sure the main title is drawn only once, to avoid bad rendering of\r
+  TTF titles with multiple plots due to anti-aliasing.\r
+\r
+-----------------------------------------------------------------------------\r
+\r
+2010-04-04 Release 5.1.1\r
+\r
+Overview:\r
+\r
+This is the current stable release of PHPlot. This release adds truecolor\r
+image support as an experimental feature, fixes a number of bugs and adds\r
+a few new features.\r
+\r
+The PHPlot reference manual has been updated to match this release.  The\r
+manual is available as a separate download from Sourceforge. The manual is\r
+also available for on-line viewing from the project home page.\r
+\r
+See the ChangeLog file in the release for more about changes and bug fixes.\r
+\r
+\r
+Cautions and Important Notes:\r
+\r
+Avoid using PHP-5.3.2 or PHP-5.2.13 with PHPlot if you use TrueType fonts\r
+(TTF). Some new bugs were introduced in those releases that adversely\r
+affects accurate positioning and rendering of TrueType font text.\r
+\r
+\r
+New features in 5.1.1:\r
+\r
+#2947679 "Support for alpha blending/Truecolor":\r
+  PHPlot can now produce truecolor images, with alpha blending of colors and\r
+  other effects. This is considered an experimental feature, meaning it is\r
+  not yet documented in the PHPlot Reference Manual, and subject to change.\r
+  Refer to the text file Truecolor.txt included in the PHPlot release for\r
+  information on using truecolor.\r
+  Two drawing changes were made to improve plot appearance with Truecolor:\r
+  + Filled dots (in points & linepoints plots) are now drawn better. This\r
+    also makes them look rounder with regular (non-Truecolor) plots.\r
+  + Area plots have the areas filled without overlapping each area down to\r
+    the Y axis. This was needed to fix problems with alpha blending, and\r
+    should have no effect on non-Truecolor plots.\r
+\r
+#2973995 "Add y-Data to Stackedbars":\r
+  You can now have Y Data Labels with 'stackedbars' plots. These label the Y\r
+  values (incremental and total) for each bar. Refer to the reference manual\r
+  page for SetYDataLabelPos().\r
+\r
+\r
+Bug Fixes in 5.1.1:\r
+\r
+#2976735 "Improvements and fixes for 'area' plots":\r
+  Moving X axis works; handle Y<0 better; new 'stackedarea' plot type is a\r
+  variation on 'area' with the data represented differently.\r
+\r
+#2974639 "Stacked bars plot breaks with X axis != 0":\r
+  Moving X axis works.\r
+\r
+#2963757 "point_counts undefined error in 5.1.0":\r
+  Fixed an error introduced in PHPlot-5.1.0 when point size and shape arrays\r
+  were set to the same size.\r
+\r
+#2938219 "Bars go in wrong direction":\r
+  For bar charts with all Y<0, bars will still be drawn down even if Y=0 is\r
+  not in range.\r
+\r
+-----------------------------------------------------------------------------\r
+\r
+2009-12-24 Release 5.1.0\r
+\r
+Overview:\r
+\r
+This is the current stable release of PHPlot. This release fixes a number of\r
+bugs and adds some new features. Some of the changes in this release can\r
+alter the appearance of plots, so be sure to review the information in this\r
+NEWS file and test this release with your application.\r
+\r
+The PHPlot reference manual has been updated to match this release.  The\r
+manual is available as a separate download from Sourceforge. The manual is\r
+also available for on-line viewing from the project home page.\r
+\r
+See the ChangeLog file in the release for more about changes and bug fixes.\r
+\r
+\r
+New features in 5.1.0:\r
+\r
++ A new "contrib" directory has been added for useful add-ons.\r
+  This currently contains:\r
+    * prune_labels : Control data label density on X axis.\r
+    * color_range : Define a gradient map for data colors.\r
+\r
++ Feature Request 2899921 "Allow different format for data and tick labels"\r
+  Text angle and format can now be controlled separately for data labels.\r
+\r
++ Locale loading override\r
+  New variable locale_override stops PHPlot from getting locale from system.\r
+\r
++ Translating Coordinates\r
+  New function GetDeviceXY() to translate world to device coordinates.\r
+\r
++ New drawing callback\r
+  New callback 'draw_all', called after all drawing is done.\r
+  The manual now contains an example of using this new callback and\r
+  the new GetDeviceXY() function to annotate a plot.\r
+\r
+\r
+Bug Fixes in 5.1.0:\r
+\r
+#2914403 "Pie + X/Y titles: Undefined property error"\r
+  X/Y titles are now properly ignored for pie charts.\r
+\r
+#2908256 "Error: array_sum() should be an array" (drupal)\r
+#2916864 "Should at least print legend on pie charts with empty data"\r
+  Pie charts with invalid data (no Y values > 0) now make an empty plot.\r
+\r
+#2906436 "Fixes for X Tick Labels vs X Data Labels"\r
+  Smarter determination of whether to do Tick labels, Data labels, or both.\r
+\r
+#2900914 "Problem with display of 0 on Y axis"\r
+  Fixed rounding error that could produce something like Y=8.12345E-16.\r
+\r
+#2886365 "PHP 5 patch" (Declare all functions and variables in PHP5 style)\r
+  Most internal PHPlot member functions now have "protected" visibility.\r
+\r
+#2839547 "SetImageBorderType('none')\r
+  You can use SetImageBorderType('none') to turn the image border back off.\r
+\r
+#1795972 "Fix default point shapes"\r
+  We now have 20 (vs 10) point shapes, with 10 (vs 1) used by default.\r
+\r
+#1795971 "Fix default data colors"\r
+  We now have 16 (vs 8) default data colors, no duplicates, all visible.\r
+\r
+\r
+Visible Changes and Possible Incompatibilities:\r
+\r
++ PHP5 visibility changes (Bug #2886365)\r
+Details: Most internal PHPlot member functions now have visibility\r
+    'protected', rather than all being public. All member variables are\r
+    still 'public'.\r
+\r
+Reason for the change: Use the recommended PHP5 syntax, better OO style.\r
+\r
+Compatibility: If you were calling a PHPlot internal function that got\r
+    changed to 'protected', this will break. Please report this.\r
+\r
+\r
++ Fix default point shapes (Bug 1795972)\r
+Details: We now have 20 (vs 10) point shapes available, and by default we\r
+    have 10 (vs 1) different shapes in use. The default size is now 6 pixels\r
+    for all point shapes.\r
+\r
+Reason for the changes: Using different shapes helps distinguish the data\r
+    sets. The existing 10 defined shapes were not enough, since some of them\r
+    are not centered over the points, too small, or otherwise hard to see.\r
+    The code to synchronize the point shape and size arrays was broken, and\r
+    some dubious code to adjust sizes to even numbers needed to be fixed.\r
+\r
+Compatibility (1): If you have a points or linepoints plot with more than\r
+    one dataset, and you did not use SetPointShapes() to configure the\r
+    shapes, them your plot will change from using a diamond for all data\r
+    sets to using different shapes for up to 10 data sets.\r
+\r
+Compatibility (2): Fixing the point size/point shape array size bug may\r
+    slightly change the size of some shapes, but it now works the way it\r
+    was documented and supposed to work.\r
+\r
++ Fix default data colors (Bug 1795971)\r
+Details: Defined a new set of 16 default data colors. The colors are\r
+    different and contrast well against the default white background.\r
+    The first 4 colors were not changed.\r
+\r
+Reason for the change: The default 8 data colors included two instances\r
+    of orange, and one color which was invisible on a white background.\r
+\r
+Compatibility: Colors will change on any plot with more than 4 data sets\r
+    where you did not use SetDataColors() to set your own data colors.\r
+\r
++ Re-used old function SetXDataLabelAngle()\r
+Details: SetXDataLabelAngle() now does something different.\r
+\r
+Reason for the change: This name was needed for a new function, to set the\r
+    angle for the X Data Labels. The old use of this function was not\r
+    documented, and marked "deprecated" in the code since around 2003-12-07.\r
+\r
+Compatibility: If you are still using SetXDataLabelAngle() to set both Tick\r
+    and Data label angles, you need to use SetXLabelAngle() instead.\r
+\r
++ Separate controls for tick and data labels (Feature Request 2899921)\r
+Details: New functions SetXDataLabelAngle(), SetYDataLabelAngle(),\r
+    SetXDataLabelType(), and SetYDataLabelType() to allow separate control\r
+    over the angle and format of data labels, versus tick labels.\r
+\r
+Reason for the change: Allow Data Labels to use different formatting and\r
+    angle compared to Tick Labels.\r
+\r
+Compatibility: The default behavior has been set up such that there should\r
+    be no compatibility issues. For example:\r
+    Old behavior: SetXLabelType() sets the type for both tick and data labels.\r
+    New behavior: SetXLabelType() sets the type for tick labels and the\r
+        default type for data labels.  SetXDataLabelType() sets the type for\r
+        data labels (overrides SetXLabelType).\r
+\r
++ X Tick Labels vs X Data Labels (Bug 2906436)\r
+Details: Regarding SetXTickLabelPos() and SetXDataLabelPos(): If only one\r
+    of them is called, the behavior is unchanged (only that label type will\r
+    be displayed). If both are called: Do exactly what was requested. If\r
+    neither was called: display only data labels if any data labels are\r
+    non-empty, else display only tick labels.\r
+\r
+Reason for the change: 1) Fix the long-standing problem behavior that by\r
+    default PHPlot overlays tick and data labels below the X axis. 2) Fix\r
+    order dependency between setting the position of tick and data labels.\r
+    3) Prepare for future extension of data labels, and allow both tick\r
+    and data labels to be on if the programmer enables both.\r
+\r
+Compatibility: There are some cases where your plot will change.\r
+    (a) Calls neither SetXDataLabelPos() nor SetXTickLabelPos():\r
+      Old behavior: Both tick and data labels displayed, possibly overlaid.\r
+      New behavior: If there are any non-blank data labels, then show only\r
+          the data labels, not the tick labels. Otherwise, show tick labels.\r
+\r
+   (b) Calls both SetXDataLabelPos() and SetXTickLabelPos(), with other than\r
+       'none' for each position:\r
+     Old behavior: The latter call was effective; earlier one ignored.\r
+     New behavior: Independent of order, both calls are effective.\r
+\r
+-----------------------------------------------------------------------------\r
+\r
+2009-06-14 Release 5.0.7\r
+\r
+Overview:\r
+\r
+This is the current stable release of PHPlot. The release adds one new\r
+feature, fixes a few bugs, and changes the license under which PHPlot\r
+is released.\r
+\r
+The PHPlot reference manual has been updated to match this release.  The\r
+manual is available as a separate download from Sourceforge. The manual is\r
+also now available for on-line viewing at http://phplot.sourceforge.net\r
+\r
+See the ChangeLog file for more about changes and bug fixes.\r
+\r
+\r
+Licensing:\r
+\r
+PHPlot is now released on the terms of the GNU Lesser General Public\r
+License, version 2.1. (Previous versions of PHPlot were released under\r
+a dual "PHP/GPL" license.) The licensing change was authorized by the\r
+original author and copyright holder of PHPlot.\r
+\r
+\r
+New feature in 5.0.7:\r
+\r
++ Plot area margins can now be partially specified, using either\r
+  SetMarginsPixels or SetPlotAreaPixels. In previous releases of\r
+  PHPlot you had to either specify all 4 margins or none.\r
+  Credit to adoll for this feature.\r
+\r
+\r
+Visible Changes and Possible Incompatibilities:\r
+\r
++ Y data range can change:\r
+  As a result of the bug fixes in this release, automatically-calculated\r
+  Y data ranges can change. If you have missing Y values in your data,\r
+  and you let PHPlot calculate the Y data range (that is, you do not\r
+  call SetPlotAreaWorld with a Ymin value), then the lower limit for Y\r
+  can change. If you have a plot with data-data-error data type, different\r
+  error values for different points, and let PHPlot calculate the Y data\r
+  range, then either Y limit can change.\r
+\r
+\r
+Bug Fixes in 5.0.7:\r
+\r
+\r
++ Fix for bug 2803900: SetRGBArray('large') does not work:\r
+  Corrected an array name usage problem. You can now select the large\r
+  color map. Also PHPlot no longer overrides use of the PHP include\r
+  path when loading the large color map, and now reports an error if the\r
+  file is needed and not found.\r
+\r
++ Fix for bug 2791502 "Error plots treat missing Y values as 0":\r
+  Missing Y values now with with data-data-error plots.\r
+\r
++ Fix for bug 2792860 "Wrong DataLabelLines with missing Y":\r
+  Data label lines are now suppressed at missing Y values.\r
+\r
++ Fix for bug 2786350 "Missing Y data results in bad auto-range":\r
+  Missing Y values are now ignored when calculating the Y data range.\r
+  Bug report and analysis by mrten.\r
+\r
++ Fix for bug 2786354 "Incorrect auto-range for data-data-error":\r
+  The Y data range is now correctly calculated for data-data-error plots\r
+  when the error values differ from point to point.\r
+\r
+\r
+-----------------------------------------------------------------------------\r
+\r
+2009-01-20 Release 5.0.6\r
+\r
+Overview:\r
+\r
+This is the current stable release of PHPlot. The purpose of this release\r
+is to fix additional problems with text spacing and positioning, and\r
+introduce some minor new features.\r
+\r
+The PHPlot reference manual has been updated to match this release.  The\r
+manual is available as a separate download from Sourceforge. The manual is\r
+also now available for on-line viewing at http://phplot.sourceforge.net\r
+\r
+\r
+New features in 5.0.6:\r
+\r
++ Allow mixing GD and TrueType font text on the same plot\r
+  You can use the new method functions SetFontGD() and SetFontTTF() to\r
+  select a font and font type for text element (labels, titles, etc.) For\r
+  example, you can have TrueType plot titles, and GD-fixed font labels.\r
+  SetUseTTF() now sets the default text type, TTF or GD. This is fully\r
+  backward compatible.\r
+\r
++ Extended label formatting\r
+  See the reference manual for more information on these.\r
+\r
+  New label formatting types are added: 'printf' (using a user-defined\r
+  format), and 'custom' (using a callback function).\r
+\r
+  For 'data' type formatting, a prefix and suffix can be added. (PHPlot\r
+  previously had an undocumented suffix for 'data' type, which still\r
+  works.)\r
+\r
+  For 'time' formatting, the format can now be specified in the same function\r
+  call rather than using SetXTimeFormat and SetYTimeFormat.\r
+\r
+  For 'data' formatting, the precision can now be specified in the same\r
+  function call, rather than using SetPrecisionX and SetPrecisionY.\r
+\r
++ Better control over line spacing in multi-line labels\r
+\r
+  Line spacing can now be set separately for each text element using an\r
+  additional argument to SetFont, SetFontGD, and SetFontTTF.  The overall\r
+  SetLineSpacing() value is the default for each text element that does not\r
+  have a specific line spacing set.\r
+\r
+  PHPlot now interprets the value set for line spacing as the number of\r
+  pixels only for GD text. For TrueType text, it is a scale factor for the\r
+  font's built-in line spacing for TrueType text. The equation used is:\r
+      interline_spacing = line_spacing * font_natural_spacing / 6\r
+  where line_spacing is either the global value set with SetLineSpacing\r
+  or a more specific value set with SetFont(), and font_natural_spacing\r
+  is the amount of space between lines built-in to the TrueType font. The\r
+  factor 6 should really be 4 (since PHPlot always used 4 as the default\r
+  line_spacing, this would give the natural font spacing by default). But\r
+  the text is too widely spaced with this value, and 6 was chosen to be\r
+  more compatible for typical font sizes.\r
+\r
+Visible Changes and Possible Incompatibilities:\r
+\r
++ Line spacing\r
+  Multi-line TrueType titles and labels will have different inter-line\r
+  spacing. Since the text size affects the margin and plot area sizes,\r
+  this results in slightly different sized features on any plot with\r
+  multi-line TrueType text.\r
+  Previous versions of PHPlot used a default 4 pixels for inter-line\r
+  spacing of multi-line TrueType text, regardless of the font size.\r
+  PHPlot now uses the 'natural' font inter-line spacing, adjusted by a line\r
+  spacing parameter (per text type, with a global default).\r
+\r
+  The same change can also increase the size of the legend box slightly.\r
+\r
++ Internal changes were made to the way font information is stored. Anything\r
+  that directly references PHPlot internals regarding fonts will break. Usage\r
+  also changed for the internal functions to size and draw text (ProcessText*,\r
+  SizeText*) due to font data storage changes.\r
+\r
++ Changes were made to internal class variables used to store label\r
+  formatting information. Anything relying on these internals may break.\r
+\r
+\r
+Bug Fixes in 5.0.6:\r
+\r
+#1932571: Data-Data Plot fails with same X values\r
+  PHPlot will no longer hang if all X values are the same. But this is\r
+  interim fix to force the X range to 1 to prevent the hang. Eventually,\r
+  smarter automatic range code will handle this better.\r
+  Credit to andyl for finding this.\r
+\r
+#1891636: Misaligned TTF X Labels\r
+  PHPlot will now correctly line-up TrueType labels along the X axis. There\r
+  were small but very noticeable errors before, when the text had descenders\r
+  or lines with all short letters.\r
+\r
+\r
+-----------------------------------------------------------------------------\r
+\r
+2008-01-13 Released 5.0.5\r
+\r
+Overview:\r
+\r
+This is the current stable release of PHPlot. The emphasis of this release\r
+is to improve text positioning, margin calculation, and error handling.\r
+\r
+Although this is considered a stable release, it has a large amount\r
+of changed code compared to the previous release 5.0.4. Two of the more\r
+complex components of PHPlot - text and margin calculations - were mostly\r
+re-written in this release. You are advised to carefully test your own\r
+applications with PHPlot-5.0.5 to see how your plots look. Refer to the\r
+README.txt file included in the release for information on reporting problems.\r
+\r
+Starting with this release, PHPlot no longer supports PHP4, since the PHP\r
+group officially declared end-of-life for PHP4 as of 31 December 2007.\r
+PHPlot-5.0.5 was tested only with PHP-5.2.5 and we are unlikely to address\r
+any issues using PHPlot with older versions of PHP.\r
+\r
+The PHPlot reference manual has been updated to match this release.  The\r
+manual is available as a separate download from Sourceforge. The manual is\r
+now also now available for on-line viewing at http://phplot.sourceforge.net\r
+\r
+The callback feature added in 5.0.4 is now documented in the reference\r
+manual. It is still considered experimental and subject to change, however.\r
+\r
+\r
+\r
+Visible Changes and Possible Incompatibilities:\r
+\r
++ Dropped support for PHP4.\r
+\r
++ Eliminated remaining order-dependent behavior related to margins and\r
+text. PHPlot should now do nothing at all, except record parameters, until\r
+you draw the graph with DrawGraph. I believe this was always the intended\r
+behavior of PHPlot, but over time perhaps various pre-calculations and\r
+dependencies crept in. Fixing this simplifies processing and should lead to\r
+more consistent behavior.\r
+\r
++ The rewritten margin calculation code now uses actual sizes of all tick\r
+and data labels and tick marks, rather than guesses. Margins collapse to\r
+remove unused elements, but a minimum margin (currently fixed at 15 pixels)\r
+is applied so the plot edges don't get to close to the image edges. The\r
+result is that most graphs with auto-calculated margins will change in\r
+appearance. It most cases, the margins get slightly smaller. In other\r
+cases, earlier releases mis-calculated the margins, so this release will\r
+produce much neater margins.\r
+\r
++ The X and Y titles are now offset out from the plot area, not in from the\r
+image area.  For auto-calculated margins this should not make any\r
+difference, but if you use SetMarginsPixels or SetPlotAreaPixels to set\r
+larger margins, the axis titles will move in closer to the plot with this\r
+release.\r
+\r
++ Changes were made to PHPlot internals, including removal of some class\r
+variables and functions, and addition of new variables and functions.\r
+These are documented in the ChangeLog. Relying on any internal variables\r
+or functions in an application using PHPlot is unwise. The following\r
+internal functions were removed:\r
+     SetImageArea() DrawDotSeries() DrawLineSeries() CalcXHeights()\r
+     CalcYWidths() DrawLabels() InitImage() DrawDashedLine()\r
+         These were marked 'deprecated', were undocumented and unmaintained.\r
+     TTFBBoxSize()\r
+         This was replaced with SizeText().\r
+\r
++ Line spacing set with SetLineSpacing() now affects TTF text as well as\r
+GD text. Previously, it only affected GD text. The default line spacing\r
+happens to be usable for TTF text.\r
+\r
++ Changes were made to error handling. PHPlot will now trigger a user-level\r
+error after producing an error image, instead of exiting.  If no error\r
+handler has been set, it will exit, as before. But now the error message\r
+should also get logged, or written to the standard error stream, depending\r
+on the SAPI in use.  You can now establish an error handler to catch most\r
+PHPlot errors and do some cleanup before exit.\r
+\r
++ PHPlot no longer accepts some invalid option values (such as a substring\r
+of a valid value, or empty strings) passed to functions. If your\r
+application aborts in CheckOption with PHPlot-5.0.5 but 'worked' with\r
+previous releases, them you were probably using an invalid option value.\r
+\r
+\r
+\r
+Bug Fixes in 5.0.5:\r
+\r
+#945439: x_tick_label_height not set correctly\r
+  Exact sizes of labels are now used to calculate margins.\r
+\r
+#1813070: Bad position for multi-line TrueType text\r
+  Fixed as part of text functions rewrite. Use correct basepoint\r
+  (lower left of each line) when positioning text lines.\r
+\r
+#1813071: Wrong title height for multi-line TTF text\r
+  Fixed as part of text functions rewrite: calculate height of\r
+  multi-line text correctly. Also now uses the line-spacing setting.\r
+\r
+#1813474: DrawText alignment arguments wrong\r
+  Fixed so 'top' and 'bottom' now have the usual meaning: top means\r
+  align top of text with reference, bottom means align bottom of text.\r
+  This was switched before. Changed every internal caller to compensate.\r
+\r
+#1816844: Fix order dependency for setting titles\r
+  Defer processing of title strings until DrawGraph(),\r
+  so it doesn't matter if fonts, etc. are set before or after.\r
+\r
+#1819668: Horiz. align multi-line text: GD vs TTF\r
+  The text functions were rewritten to draw TTF text line-by-line,\r
+  like GD text, and correctly align each line.\r
+\r
+#1823774: Default Font Path and Error Message\r
+  Error handling has been improved to make sure a message is logged, in\r
+  addition to the error image, and use error_trigger rather than exit.\r
+\r
+#1826513: FIXME in DrawLegend: Max label length\r
+  The actual size needed for legend text is now used.\r
+\r
+#1827263: Spoiled up pie-chart if $val is close to zero\r
+  Fixed by skipping over any segment that rounds to 0 degrees of\r
+  arc. (The GD function uses integer angles only, and 0 degrees\r
+  means draw a complete circle.)\r
+\r
+#1836528: Insufficient checking of parameter values\r
+  Rewrote validator function to reject improper parameter values.\r
+\r
+#1843012: Make margins, drawing consistent\r
+  Margin code logic was rewritten and checked for consistency.\r
+\r
+#1856207: Margin error with 'xaxis'/'yaxis' position\r
+  Margin space is now allocated for ticks and labels if their position\r
+  is 'xaxis' or 'yaxis' and the axis is at the plot edge. This is not\r
+  a perfect fix (the axis could be close but not at the edge).\r
+\r
+\r
+-----------------------------------------------------------------------------\r
+\r
+2007-10-20 Released 5.0.4\r
+\r
+Overview:\r
+\r
+This is the latest stable release of PHPlot. We are abandoning the 'rc'\r
+version naming style, because we don't consider these last releases\r
+'release candidate' versions. As we continue to make changes to PHPlot,\r
+we are not converging toward a final "5.0" release, however we do consider\r
+these releases stable and complete enough for production use.\r
+\r
+This release fixes a number of problems and introduces a few new features.\r
+\r
+The PHPlot reference manual has also been updated to match this release.\r
+New material has been added documenting some of the PHPlot internals.\r
+The manual is available as a separate download from Sourceforge.\r
+\r
+\r
+Code Cleanup:\r
+\r
+Some code cleanup is going in to this release. It is hoped that these\r
+changes will not impact any existing scripts using PHPlot, but will make\r
+the PHPlot code itself easier to understand and maintain.\r
+\r
+PHPlot now avoids making changes outside its own class definition. There\r
+are no longer any functions defined outside the class, nor any constants.\r
+Three constants (MINY MAXY TOTY) were removed, and 2 functions were removed\r
+(see Visible Changes below).  Also PHPlot no longer sets the PHP error\r
+reporting level to E_ALL. Although we highly recommend setting error\r
+reporting to E_ALL in your php.ini file or scripts, it is not right for\r
+PHPlot to assume that you want it.\r
+\r
+\r
+Visible Changes and Possible Incompatibilities:\r
+\r
+Arrays containing color and style information are used with several PHPlot\r
+functions to control the plot style array. These functions are:\r
+    SetPointShapes, SetPointSizes, SetLineWidths, SetLineStyles,\r
+    SetDataColors, SetDataBorderColors, and SetErrorBarColors.\r
+The arrays passed to these functions MUST used sequential integer 0-based\r
+indexes. This is what the PHP manual calls "Usual integer indices (starting\r
+from zero, increasing by one)". This is the type of array you get in PHP by\r
+default if you use array() without specifying key values, or use the\r
+empty-bracket assignment operator to add values onto an array.  In previous\r
+versions of PHPlot, some of these functions would also work with\r
+string-indexed or non-sequentially-indexed arrays, but this was not clearly\r
+defined. Starting with PHPlot-5.0.4, only arrays with "usual integer\r
+indices" work, and other array indexes will cause errors.\r
+\r
+Some internal-use-only functions have had their usage changed or been removed.\r
+If you are using functions that are not documented in the PHPlot Function\r
+Reference in the manual, your code may have to be changed.\r
+\r
+As part of the code cleanup, two functions which were defined outside the\r
+PHPlot class were removed: array_pad_array(), and array_merge_php4().\r
+If your code used these, you need to fix your code.\r
+\r
+The routines which accept a color name, value, or array now check for a valid\r
+color name. If you specify a color name which is not in your current color\r
+table, PHPlot will draw an error and exit. Previously, PHP would report an\r
+index error, continue, and get a 'headers already sent' message.\r
+\r
+\r
+Bug Fixes in 5.0.4:\r
+\r
+#1813021: Miss-positioned right-justified vertical GD text.\r
+  Fixed DrawText() to correctly position 90 degree right-justified text\r
+  drawn in a fixed GD font. This could be seen with 90 degree Y tick labels.\r
+\r
+#1790441 Removed destructor/shutdown function, and no longer recommend\r
+  using reference assignment when creating a PHPlot object. This was\r
+  interfering with memory usage.\r
+  Credit to annajilly for analysis.\r
+\r
+#1779115 SetLegendWorld() failed because of undefined variables. The\r
+  required order dependency was too hard to meet. This is now fixed.\r
+  You can now use SetLegendWorld anywhere before DrawGraph.\r
+\r
+#1726810 (feature request, but actually a bug fix) Ignore empty strings\r
+  as data labels when doing time or data label formatting. These would\r
+  previously produce errors or bad formatting. Now you can omit labels\r
+  as needed even with time and data formatting.\r
+  Credit to exgerhardr for finding this.\r
+\r
+#1605555 Y data labels used wrong font and not formatted (bar charts only).\r
+\r
+#1208054 Localization of number formatting in 'data' format type. PHPlot\r
+  will attempt to format the numbers in a way appropriate to your locale.\r
+  You can also force the formatting with the new function SetNumberFormat.\r
+  Credit to David Hernández Sanz.\r
+\r
+#937944 X/Y Tick counts: PHPlot could draw one two few Y tick counts, and\r
+  one too many X tick counts. This is not a perfect fix, and more work is\r
+  needed here, but this fixes an error case in both X and Y values.\r
+\r
+\r
+New Features in 5.0.4:\r
+\r
+New function SetLegendStyle allows control of the alignment of text and\r
+  color boxes within the legend.  Also allows removing the color boxes.\r
+  Based on bug #1208054.\r
+  Credit to David Hernández Sanz.\r
+\r
+New function SetNumberFormat. See bug report #1208054 above.\r
+\r
+Callbacks are added. PHPlot can call back your functions while generating the\r
+  plot. This is experimental, and documented only in the file "Callbacks".\r
+  Credit to annajilly for the idea and design.\r
+\r
+-----------------------------------------------------------------------------\r
+\r
+2006-11-13 Released 5.0rc3\r
+\r
+Overview:\r
+\r
+This is an interim release. It has been a long time since the previous\r
+release 5.0rc2, and there have been a lot of changes. There are still more\r
+changes likely to go in before we have "5.0", but there are enough for now.\r
+\r
+The PHPlot Reference Manual has also been released, and is available as a\r
+separate download from Sourceforge. PHPlot users and developers are\r
+strongly encouraged to read the manual.\r
+\r
+This release does not include the "doc/" and "examples/" directories of\r
+previous releases. The Reference Manual contains more complete and\r
+up-to-date information and examples, and I am unable to maintain the doc/\r
+and examples/ files while also maintaining the Reference Manual. If you\r
+need those files, they can be accessed with the Sourceforge web CVS\r
+browser.\r
+\r
+\r
+New Features:\r
+\r
+The emphasis for this release is bug fixing, so there are few new features.\r
+\r
++ You can now suppress lines or points on individual plots in a linepoints\r
+  graph. This feature was added because I needed a graph with several\r
+  linepoints lines, but also with a solid line showing an "80% goal".\r
+  Use SetPointShapes with the value 'none' in the array to suppress the\r
+    point markers for that plot (and only draw the line).\r
+  Use SetLineStyles with the value 'none' in the array to suppress the\r
+    line for that plot (and only draw the point markers).\r
+  [Bug # 1594458]\r
+\r
++ Bar charts can have data labels above the bar with the value. Turn\r
+  these on with SetYDataLabelPos('plotin'). This is somewhat experimental,\r
+  since there isn't a lot of room for labels on top of the bars and you\r
+  may find the results are not useful.\r
+\r
+\r
+Visible Changes:\r
+\r
+Here are the more significant changes in this release. These are changes\r
+which may affect existing scripts and output from PHPlot.  See the\r
+ChangeLog file for information about all changes and bug fixes.\r
+\r
++ A bug fix on bar chart bar borders results in black borders around the\r
+  bars if shading is turned off. The border was previously covered up,\r
+  but was supposed to be there. If you need borderless, unshaded bars,\r
+  you need to use SetDataBorderColors to make the borders the same colors\r
+  as the bars. [Bug # 1096197]\r
+\r
++ TrueType font pathname handling was fixed. You no longer need to use\r
+  SetUseTTF(True). You can either use full paths to the font files with\r
+  SetDefaultTTFont() and SetFont(), or you can call SetTTFPath() to point\r
+  to a directory of font files, and then use simple font filenames without\r
+  paths in SetDefaultTTFont() and SetFont().\r
+  [Bug # 1144644 plus several others]\r
+\r
++ There have been several fixes regarding automatically calculated ranges\r
+  and scales. The result is that you may see less extra space and fewer\r
+  tick marks in some cases.\r
+\r
++ A fix was made to bar and stackedbar graph bar widths in order to get\r
+  the X axis labels to properly center. As part of the fix, the bar widths\r
+  now match between the two graph types. (Before this fix, the bars were\r
+  narrower in bar graphs compared to the same data plotted as a stacked\r
+  bar.) As a result, bar graph bars will now be drawn with wider bars, and\r
+  stackedbar graph bars will be narrower. You can adjust this with the new\r
+  class variable bar_extra_space.     [Bug # 1437912]\r
+\r
++ Dot shapes and sizes were off by 1 or 2 slots in the array of shapes or\r
+  sizes. After the fix, you may get different dot shapes or sizes per\r
+  plot line. [Bug # 1096194]\r
+\r
+\r
+Testing:\r
\r
+Since its output is visual (graphics), and it has so many interconnected\r
+modes and options, PHPlot is difficult to test. But at least we are now\r
+trying. I have a collection of PHPlot scripts (currently about 60) and a\r
+script to run through them. The script automatically checks that:\r
+    1) Nothing was written to the standard error stream;\r
+    2) An image file of size greater than 0 was written;\r
+    3) Neither the test script nor PHPlot did exit(). This catches cases\r
+       where PHPlot aborts with DrawError().\r
+\r
+The automated test is an easy way to check for serious regression, but you\r
+really need to inspect the output files to validate PHPlot. This takes a\r
+little time, and it is easy to overlook problems.\r
+\r
+The real issue is test coverage. Just as we can be sure that future\r
+PHPlot releases will pass the test collection, we can also be sure that\r
+future bug reports will be written against untested cases.\r
+\r
+--------------------\r
+\r
+2006-11-08 PHPlot on Sourceforge has a new maintainer: lbayuk\r
+\r
+--------------------\r
+\r
+2004-10-24 Released 5.0rc2\r
+\r
+--------------------\r
+\r