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