1*************************
2 Image_Graph - Changelog
3*************************
4Version 0.x.x-alpha [x-y-z]
5     * Fixed Bug #11812 "forceMaximum method" (uwesteinm)
6
7Version 0.7.2-alpha [2006-Mar-02] - Jesper Veggerby <pear.nosey@veggerby.dk>
8     * Added Pie chart support for grouping items with values below a specified threshold in a "the rest" group
9     * Added possibility to set color of axis ticks (thanks to bdondo from forum)
10     * Added clipping support, causing forceMinimum() and forceMaximum() to show expected results
11     * Modified axis arrows, so that an axis with all negative values, the arrow will be shown at the minimum value instead of maximum
12     * Fixed a bug with Image_Graph_DataPreprocessor_Function not working, when callback function is an object method
13     * Fixed a bug with Candlestick, Band and Box & Whisker plots not working when using markers
14     * Fixed Bug #6024 "Undefined variable: parameters"
15     * Fixed Bug #6085 "Graph doesn't understand a numeric variable extracted from the GET method."
16     * Fixed Bug #6919 "Isolated points in linegraphs with breaks drawn incorrectly"
17     * Fixed Bug #6921 "Marker not drawn for points with Y value == 0"
18     * Fixed Bug #6941 "Logarithmic axis values between 0 and 1"
19     * Fixed Request #5985 "Logarithmic Axis Minimum Value"
20     * Fixed a problem with labels not appearing on the same baseline
21     * Added possibility to specify padding on all edges of an element separately
22     * Updated some API documentation entries
23
24Version 0.7.1-alpha [2005-Oct-05] - Jesper Veggerby <pear.nosey@veggerby.dk>
25     * Fixed Bug #5415 "Axis's wrong when plot is Dot/Scatter"
26     * Fixed Bug #5607 "X Axis Labels align to right"
27     * Fixed a problem with horizontal plots and axis labels and titles not showing/aligning properly
28     * Fixed a problem with horizontal Step plot
29
30Version 0.7.0-alpha [2005-Sep-30] - Jesper Veggerby <pear.nosey@veggerby.dk>
31    * Added Image_Graph_Plot_Odo (thanks Maxime Delorme)
32    * Added Image_Graph_DataSelector_Values (thanks Paolo)
33    * Added best-fit line plot (Image_Graph_Plot_Fit_Line)
34    * Added possibility to specify the pie plot diameter
35    * Modified Image_Graph_Plot_CandleStick, it is now only necessary to specify 'open' for first point (other 'open' = previous 'close')
36    * Changed Image_Graph_Plotarea::hideAxis() to actually hide the axis, not remove them
37    * Added Image_Graph_Plotarea::clearAxis() to remove the axis
38    * Fixed markers so that y values equal to null never shows markers
39    * Fixed problem in Image_Graph_Plot_BoxWhisker causing an undefined method
40    * Fixed problem with markers and horizontal plots
41    * Fixed problem with axis not showing arrow-ends even if enabled
42    * Fixed problem with an error "Call to a member function on a non-object..." in Common.php
43    * Fixed a problem with Image_Graph_Dataset_Trivial when supplying a datarray as constructor parameter and Image_Graph_Fill_Array
44    * Fixed Bug #5421 "Documentation for Image_Graph constructor wrong"
45    * Fixed Bug #5502 "Axis_Logarithmic::setAxisIntersection('max') is broken"
46    * Fixed Bug #5504 "PHP Notice: Undefined index: tohtml"
47    * Fixed PHP notice with Image_Graph::done() when using output to file
48    * Fixed so it is possible to use array(R, G, B, a?) as fill color
49    * Fixed issue with markers not rotating along with plot when using setStartingAngle()
50    * Fixed trivial dataset so that it is possible to use 'id' as key when populating dataset in constructor
51
52Version 0.6.0-alpha [2005-Aug-27] - Jesper Veggerby <pear.nosey@veggerby.dk>
53    * Added possibility to set starting angle of pie chart (at which angle does the first pieslice start) and the direction of the pies (clockwise or counter-clockwise)
54    * Added Request #5031 "Horizontal Bar graphs required" - all plot types (except radar and pie) support horizontal, it is the "Plotarea" that is horizontal
55    * Fixed Bug #5035 "Legend and graph color mismatch when using zeros in stacked bar"
56    * Fixed Bug #5066 "Reference Notices"
57
58Version 0.5.0-alpha [2005-Aug-08] - Jesper Veggerby <pear.nosey@veggerby.dk>
59    * Major change: removed Image_Graph_Driver and subclasses and uses Image_Canvas instead, which implies:
60        - Image_Graph_Color is obsolete, removing dependency on Image_Color (however Image_Canvas still depends on Image_Color)
61        - Fonts are simplified (all identified by name) and implemented using Image_Graph_Font class, removing Image_Graph_Font subclasses (only subclasses!), removing Fonts/ folder
62        - Added dependency on Image_Canvas
63        - Image/Graph/Config.php becoming obsolete since only IMAGE_GRAPH_SYSTEM_FONT_PATH was defined here. File kept for future purposes but not used.
64        - TTF Fonts (which were most often used) keep BC in 99% of the cases by replacing the 'ttf_font' factory alias mapping to 'Image_Graph_Font' and adding a mapping for 'Image_Graph_Font_TTF' to 'Image_Graph_Font'. Only case not working is when user manually includes Image/Graph/Font/TTF.php and creates and instance using 'new', which should only very, very rarely be the case
65        - BC break: If drivers were explicitly created before, they now have to be changed to Image_Canvas objects
66    * Added support for HTML image maps on line-, bar-, area-, smoothed line-, impulse-, band- and pie charts (more to come)
67    * Added 'tohtml' option for output directly in HTML using canvas and imagemap (if any)
68    * Added label option 'format' and 'dateformat' to Image_Graph_Axis to be able to format a label directly using sprintf() / date()
69    * Changed plus and cross markers to be outlined (by defalut) - visual improvement
70    * Added a star marker (Image_Graph_Marker_Star)
71    * Added legends to scatter/dot plots - the marker now shows in legends
72    * Performance optimization in Image_Graph_Axis_Category (with regards to heavy usage of array_search())
73    * Improved appearance of axis arrows
74    * Fixed Bug #4240 "Pie graph - color difference between graph and legend"
75    * Fixed Bug #4430 "Call-time pass-by-reference has been deprecated"
76    * Fixed Bug #4876 "mis-type in code -> undefined property"
77    * Bugs fixed/Features added in Image_Canvas
78        * Added Request #4451 "Unable to define IMAGE_GRAPH_SYSTEM_FONT_PATH outside of Config.php"
79        * Fixed Bug #4484 "SVG output problem with fill and alignment attributes of text"
80        * Fixed Bug #4586 "Content type image/jpg does not recognized by IE"
81
82Version 0.4.0-alpha [2005-May-24] - Jesper Veggerby <pear.nosey@veggerby.dk>
83    * Added support for antialiasing images when using GD (both using native GD method and Image_Graph own implementation)
84    * Added possibility to specify horizontal title alignment (left, right or center)
85    * Fixed an "off-by-one" problem with secondary axis
86    * Included all on-line examples in package
87    * Removed some memory leaks as described in bug #3958 "Memory leaks in Image_Graph 0.3.0-alpha"
88    * Fixed bug #4113 "Image_Graph_Driver_GD::pieSlice() warnings"
89    * Fixed bug #4333 "Legend division by zero error on PieChart"
90    * Fixed bug #4417 "Cannot use point ID as marker value"
91
92Version 0.3.0-alpha [2005-Feb-25] - Jesper Veggerby <pear.nosey@veggerby.dk>
93    * Added possibility to use arrays of the type $data[$id] = array('x' => $x, 'y' => $y) for easy data addition to a dataset
94    * Added use of 'null' y-values in line plots (normal and smoothed) causing a break in the line (instead of dropping to zero)
95    * Added possibility to make one legend use multiple plotareas
96    * Added grouping to drivers (currently only fully supported by SVG driver)
97    * Added axis padding (padding inside the plotarea)
98    * Added Image_Graph_Axis::setFixedSize() to allow for alignment of axis on different plotareas when in a layout
99    * Added possibility to use padding with overlayed legends to make legend _not_ display fx. on-top of y-axis
100    * Added/improved support for multi line text using GD drivers
101    * Added support for antialiasing images when using GD (GD built in method)
102    * Implemented simple shadows (and removed shadow images from distribution)
103    * Fixed bug #3346 "double as data"
104    * Fixed a problem with normal multi-data bar charts not displaying expected bar width
105    * Fixed problem with legends when overlayed
106    * Fixed axis not displaying labels after resetting driver
107    * Fixed problem in SVG driver with vertical texts
108    * Fixed a problem with line axis marker on a secondary y-axis displaying vertically instead of horizontally
109    * Fixed problem with logarithmic axis not scaling properly
110    * Changed the way coordinates are calculated when adding titles to non-layout objects
111    * Changed which changes API causing minor BC breaks
112        - Renamed Image_Graph_Plot_Bar::barWidth() to Image_Graph_Plot_Bar::setBarWidth()
113        - Renamed Image_Graph_Plot_Bar::spacing() to Image_Graph_Plot_Bar::setSpacing()
114        - Removed Image_Graph_Layout_Plotarea, it being completely obsolete with introduction of Image_Graph_Axis::setTitle()
115    * Updated header comment blocks to conform to new standards as specified by RFC
116    * Performance optimizations
117
118Version 0.3.0-dev4 [2005-Jan-28] - Jesper Veggerby <pear.nosey@veggerby.dk>
119    * Fixed problem with logarithmic axis causing an infinite loop
120
121Version 0.3.0-dev3 [2005-Jan-27] - Jesper Veggerby <pear.nosey@veggerby.dk>
122    * Added possibility to invert axis direction, fx. minimum at top or bottom
123    * Added methods to handle axis label customization (Image_Graph_Axis::setLabelOption() and Image_Graph_Axis::setLabelOptions())
124    * Minor change to the way GD driver(s) calculate height (so that fx. x-axis labels appear printed on the same baseline)
125    * Fixed axis so that forceMinimum() works with axis intersection
126    * Fixed PDF (PDFlib) driver to display images correctly
127    * Fixed factory method class name alias 'vector', tried to create Image_Graph_Dataset_Vector instead of Image_Graph_Dataset_VectorFunction
128    * Fixed a minor problem in category axis when adding more that one point with the same value, i.e. ('A', 10), ('A', 20)
129    * Fixed problem with grids on category axis
130    * Added possiblitity to add simple colors to Image_Graph_Line_Array
131    * Added id tags for line styles
132    * Performance optimization/tuning (axis, elements)
133    * Removed XML_SVG driver which was included by mistake (SWF driver remains, but has several unimplemented features)
134    * Added more tests
135
136Version 0.3.0-dev2 [2005-Jan-13] - Jesper Veggerby <pear.nosey@veggerby.dk>
137    * Added functionality for multi-level labels (ticks, text, etc.) to support for minor and major labels (and more if needed)
138    * Added fontmapping in GD drivers useful for mapping mnemonic fontnames, i.e. Times New Roman to font file names (either partial or full)
139    * Added configuration option in Config.php (IMAGE_GRAPH_SYSTEM_FONT_PATH) enabling to specify default search path for system fonts
140        - On Windows systems this defaults to %SYSTEMROOT%\Fonts\
141    * Added 'auto' split on layouts - calculated automatically based on actual sizes of the parts (supported only with titles)
142    * Added visual tests - not PHPUnit, test cases:
143        - Basic testing if requirements are met (GD + Freetype)
144        - Testcases for testing drivers
145        - Plot tests
146        - Axis tests
147    * Added support for setting width on the bars in a bar chart
148    * Added setFontColor(), setFontSize(), setFontAngle() to elements for easy change of properties of propagating fonts, without needing to create a new object
149    * Added new setTitle() method to axis to allow for easier displaying of axis titles
150    * Added Image_Graph_Plot_CandleStick to display financial charts for the stock market
151    * Added Image_Graph_Plot_Band
152    * Added major tick customizability to axis
153    * Added possibility to use user-defined values as axis-labels
154    * Added support for adding an array to Image_Graph_Dataset_Trivial for easy point addition
155    * Added some error/insanity checks
156    * Added Image_Graph_Tool class with static function for bezier curve-smoothing for drivers without native support (fx. GD)
157    * Added Image_Graph_Axis::setAxisIntersection() to specify a value for which the axis intersects another axis (i.e. Y-axis intersects X-axis in x=1 instead of x=0)
158    * Implemented drivers to support different output formats
159        - Currently full GD (JPEG/PNG/GIF/WBMP), SVG and PDF (PDFlib) support
160        - Semi-supported drivers SWF (Ming)
161        - Drivers planned SVG (XML_SVG), PDF (File_PDF) and SWF (libswf)
162        - No BC breaking API changes
163        - Currently no support for animations, i.e. SVG and SWF
164    * Re-implemented support for line styles
165    * Fonts now propagate through the structure, meaning if you set a font on the Graph all other elements inherit this font (but can be overridden)
166        - This does *not* break BC
167    * Modified Image_Graph_Axis_Radar to be a category axis
168    * Modified Image_Graph_Dataset to allow for y-value to be an array of values (to support candlestick diagrams)
169    * Changed pie chart legends, so they show all data values as legend except just one for complete chart
170    * Changed logging behaviour (added Image_Graph::setLog() method)
171    * Changed while-list-each to foreach for performance reasons (minor)
172    * Changed Image_Graph_Title constructor slightly (second parameter, see Docs. for details)
173    * Changed Image_Graph_Axis::setTitle() slightly to accomodate propagating fonts (no BC break)
174    * Included some more aliases for the Image_Graph::factory() method
175    * Updated how bar charts calculate width
176    * Legends now scale properly
177    * Legends now show differently depending on plot type
178    * API Changes with minor impact on BC
179        - Removed caching
180        - Removed Image_Graph::saveAs(), functionality moved to Image_Graph_Driver::done() method
181        - Removed Image_Graph::thumbnail()
182        - Removed Image_Graph_Axis_Multidimensional, mainly for perfomance reasons
183        - Image_Graph_Fill now inherits from Image_Graph_Common (instead of Image_Graph_Element)
184        - Removed GLOBAL font variables
185    * Fixed problems with Image_Graph_Axis_Radar showing values in wrong order
186    * Fixed bug causing negative bars to display incorrecly (why o' why is 0 == 'some string'?)
187    * Fixed bug causing setLineStyle() to fail
188    * Fixed bug #2684 "Source typo breaking data selectors"
189    * Fixed bug #2685 "Plots do not honor ID tags for fills"
190    * Fixed bug #2791 "wrong x-axis label position when using ttf font"
191    * Fixed bug causing displayErrors() to generate WARNING and FATAL ERROR
192    * Fixed problems with gradient fills (did not display propery using GD drivers)
193    * Fixed problem with bar-, area-, step- and impulse-charts when using forceMinimum(), causing bars to display 'below' x-axis
194    * Fixed Image_Graph_Axis::force(Minimum|Maximum)
195    * Removed default Image_Graph logo
196    * Removed _graphWidth() and _graphHeight(), they are now handled by the driver
197
198Version 0.3.0dev1 [2004-Oct-25] - Jesper Veggerby <pear.nosey@veggerby.dk>
199    * First PEAR version - GraPHPite changes to Image_Graph
200    * Changed Image_Graph_Axis_Sequential to Image_Graph_Axis_Category
201    * Changed default X-axis to be Image_Graph_Axis_Category
202    * Changed all plot types to be stackable
203        - This implies removing Image_Graph_Plot_Stacked_Bar, Image_Graph_Plot_Stacked_Bar100Pct, Image_Graph_Plot_Stacked_Area, Image_Graph_Plot_MultipleData
204        - Modified the way axis handling is done - no user impact
205    * Removed Image_Graph_Plot_Bar_Horizontal
206    * Modified management of axis maxima
207    * Removed Image_Graph_Text completely, replaced by Image_Graph_Element::write() - performance improvement
208    * Added possibility to draw graph on an existing image
209    * Added caching capability
210    * Added Image_Graph_Axis_Marker_Area and Image_Graph_Axis_Marker_Line
211    * Added marks to axis (a value marker, i.e. an arrow or a ranged box)
212    * Fixed bug where stacked / multiple charts containing all zeros in datasets did not display or gave a division by zero error in Axis.php
213    * Modified Image_Graph_Fill_Gradient for better performance
214    * Added Image_Graph::factory and Image_Graph::layoutFactory methods, mainly for lazy include
215    * Removed Include.php, use either factory methods or include necessary files manually
216    * Added Image_Graph_Simple for very simple creation of graphs
217    * Added secondary y-axis
218    * Changed internal color scheme to use Image_Color - user impact:
219        - Image_Graph::newColor(), Image_Graph::addColor removed
220        - Uses Image_Graph_Color from 'old' Image_Graph package, which statically uses Image_Graph_Color::allocateColor() and Image_Graph_Color::color2RGB()
221        - Constants IMAGE_GRAPH_[COLORNAME] removed. Use string names, i.e. 'white', 'blue' as defined by Image_Color (now a dependency)
222        - Standard 'string' color formats supported
223    * Added internal error handler Image_Graph_Common::_error() which uses PEAR_ErrorStack and Log
224    * Changed Image_Graph_Marker_PercentageCircle to Image_Graph_Marker_Bubble
225    * Changed logo
226    * Changed all strings using double quotes to single quotes for performance
227
228Version 1.2 [2004-Sep-15] - Jesper Veggerby <pear.nosey@veggerby.dk>
229    * Fixed some more errors caused by error_reporting using E_NOTICE
230    * Documentation brush up
231    * Added logarithmic axis
232    * Tested with PHP5
233    * License changed from GPL to LGPL
234    * Changed to accomodate PEAR standards
235        - All classes are now named according to PEAR naming scheme, i.e. Image_Graph_*
236        - All class methods are sturdy caps i.e. Element::done(), Axis::forceMinimum()
237        - Include files are now named .php instead of .inc
238        - File structure changed
239        - All private variables/methods are prefixed with a _ (should have no effect on usage since they are (should be!) private)
240    * Axis' are now returned via the Plotarea::getAxis() method
241    * Add methods now return a reference to the object, instead of the 'odd' way of creating global variables, i.e.:
242            $Graph->addPlot(new Plot(), 'Plot');
243        is changed to:
244            $Plot =& $Graph->addPlot(new Plot());
245    * Coloring scheme changed so that named colors are now linked to a 24 bit integer value instead of the objects. setFillColor, setLineColor, setBorderColor and setBackgroundColor instead of the corresponding -Style, to use the named colors). The colors are named according to the PEAR naming scheme: IMAGE_GRAPH_[COLOR], fx  IMAGE_GRAPH_RED
246    * Included (a few) examples in the distribution
247
248Version 1.1 [2004-Aug-16] - Jesper Veggerby <pear.nosey@veggerby.dk>
249    * Added support for legends in PlotTypeMultipleData (i.e. StackedBarChart, StackedAreaChart and StackedBarChart100Pct)
250    * Added step-, impulse-, horizontal bar- and dot chart (dot chart is marker only chart)
251    * Added AxisSequential for using a non-numerical axis (i.e x-values '1st quarter', '2nd quarter', etc.) for use 'instead' of a ArrayData preprocessor for labelling
252    * Added setLineColor, setFillColor, setBackgroundColor and setBorderColor to allow settting colors directly using RGB values instead of Color objects
253    * Added PlotareaMap to allow for map charts
254    * Added FloodFillMarker and PercentageCircleMarker
255    * Changed CircleMarker to use polygon instead of arc, to allow (proper) non-solid filling
256    * Fixed Title to work when used in a Layout
257    * Added a secondary Marker to the Marker class to allow for multiple/'nested' markers
258    * Added global variable DEFAULT_VERTICAL_FONT (which is an instance of VerticalFont)
259    * Added PlotareaLayout - a standard layout with plot- and axis- titles (using DEFAULT_FONT!)
260    * Added showShadow to GraPHPElement to allow *any* element to be able to show shadows! Note however it may not always look good
261    * 'Re'-fixed bug #989601 - Pixel oddities
262    * Changed Documentation to NOT include source code - to reduce documentation size (approx 2Mb)
263
264Version 1.0 [2004-Jul-26] - Jesper Veggerby <pear.nosey@veggerby.dk>
265    * Added spider/radar charts
266    * Added AverageMarker
267    * Added LineArray and MarkerArray similar to FillArray
268    * Changed include file structure - every class in its own file (Java style)
269    * Fixed so that GraPHPite works with error_reporting using E_NOTICE
270    * Changed PieCharts to use polygon instead of arc, to allow (proper) non-solid filling
271    * Fixed bug #982634 - GradientFill on BarChart broken in 0.9e?
272    * Fixed bug #989601 - Pixel oddities
273    * Legends with GradientFill or ImageFill now shows correctly (FillArray shows the 'next in line')
274
275Version 0.9e [2004-Jun-29] - Jesper Veggerby <pear.nosey@veggerby.dk>
276    * Added stacked area charts
277    * Added possibility to show min, max and zero labels on axis
278    * Changed FontTTF so that scaling when angled works properly
279    * Added VerticalFont, fx for simple vertical printing of X-axis labels
280    * Changed Layout/Plotarea hierarki slightly - does not have any effect on usage
281    * Made Text as layoutable, i.e. it is possible to use in vertical/horizontal layouts
282    * Fixed bug #978231 - The plottype.inc has an error in the function MaximumY()
283    * Fixed bug #981227 - GradientFill/ImageFill does not work within FillArray
284    * Added possibility to hide the GraPHPite logo
285
286Version 0.9d [2004-Jun-25] - Jesper Veggerby <pear.nosey@veggerby.dk>
287    * Added legends
288    * Added layouts (Java style)
289
290Version 0.9c [2004-Jun-15] - Jesper Veggerby <pear.nosey@veggerby.dk>
291    * Added pie-charts
292    * Added stacked/multiple bar charts
293    * Fixed bugs
294    * Improved visual appearance
295
296Version 0.9b [2003-Nov-03] - Jesper Veggerby <pear.nosey@veggerby.dk>
297    * 2nd release, minor changed
298
299Version 0.9a [2003-Oct-14] - Jesper Veggerby <pear.nosey@veggerby.dk>
300    * Initial release