Blame | Last modification | View Log | RSS feed
30 May 2003 JpGraph 1.12.2==========================* [me & A. Tang] Added support for Chinese font and character handling.This requires you to install the "simhei.ttf" Chinese font.* [J Sweat] Fix bug [#124] Make step line style ignore NULL values in data* [J Sweat] Fix bug [#123] Divide by zero for line length of zero for dashed lines* [me] Fix bug [#109]. Problem with pie color when a supplied color arraycontains more colors than data. For anti-aliased images that meant thatthe last n colors was used and not the first n colors.* [me] For plotmarks that use the ALT string the wrong value was in dueto the recent addition of both Y and X value to control the plot callback.This has now been fixed so that it will work as before and that previouscode that assumes one parameter in their ALT srting will see the Y-value atthe plotmar. New is also that the X-value is given as a secondparameter. This means that the ALT string can display both the Y and X valuefor a specific point.* [me] Make it possible to disable individual plot legends through the methodPlot::HideLegend()* [me] Fixed problem with SetTextTickInterval() together with grouped bars(bug #116)* [me] Fixed a problem with shadows on accumulated bar plots (bug #111)* [me] Fixed Legend::SetMarkAbsSize()* [me] Add error check for the case that the server (Windows)doesn't support SystemRoot and TEMP server variables.* [me] Fix short-open-tags bug that made it's way into 1.12.1 (bug #121)* [me] Make sure we only pass integers into GD when positioning texts.* [me] Always treat "" (empty string) as NULL for bar plots* [me] Allow links from vertical position 0 on gantt charts12 Apr 2003 JpGraph 1.12.1==========================* [me] Added Legend::SetLineSpacing() to control the vertical linedistcance (in pixels) between legend texts.* [me] Compensate for bug in imagecopyresampled() in GD 2.01.This made clipping unusable with GD 2.01* [me] Added LinePlot::SetFillFromYMin() to make the fill start fromthe bottom of a Y-scale with negative values rather than the 0-valuewhich is now the case.* [me] Fix a problem with legend box layout in the case of TTF fontsand different lengths of individual texts. The layout engine nowwork out each column individually. This will also give the legendbox the minimum possible size.* [me] Compensate for possible bug in strtok() when parsing colorspecification as a string with adjustment factors.06 Apr 2003 JpGraph 1.12========================* [me] Added possibility to specify the position of the legend boxwith absolute pixels coordinates not only as fractinos as before.* [me] Improved legend layout. It is now possible to specifythe number of columns in the legend box. The preferred way ofspecifyin the layout is now Legend::SetColumns(). The oildway with SetLayout() is still available for backwards compatibilityreasons. The old vertical layout corresponds to a 1 columnlayout (SetColumns(1) which is also the default).* [me] Added possibility to specify text string positionusing scale coordinates onto the plot by addingText::SetScalePos(). The autoscaling has been modifyied tobe aware of the text scale positions.* [me] Added builtin images for plotmarks. This also meant arefactoring exercise for the PlotMark class and it has now beensplit in sevaral files.* [me] Added footer capability to Radar, Pie and Gantt charts* [me] Improved upon rounding problem with GD2 and pie slices(defect #88)* [me] Take shadow color as specified with Graph::SetShadow() into account.* [me] Don't rotate the footer if the graph is rotated.* [me] Added Axis::HideLabels()* [me] Adjusted of the automatic margin calculation so that it isaware of when the x-axis have been hidden.* [me] Added PlotMark::SetCallbackYX(), This allows for thespecification of a callback function which is given both X and Ycoordinates. Also extended the returned values from the callback sothat image in a marker can be dynamically modified both size andactual image file used. This will enable the use of advanced"push-pin" graphs. For example adding markers to a background imagemap of certain size and type.For backwards compatibility any callback specified withPlotMark::SetCallback() will not be given the extra parameter. Soold code does not need to be changed.* [me] Fixed handling of PHP array URL parameters with CSIM. [Bug #82]* [me] Added Legend::SetFrameWeight() which adjusts the frame aroundthe legend. Legend::SetLineWeight() now works as documented and setsthe line weight for the markers instead.* [me] Autoscaling will now also take the value of added lines into account.* [me] Fixed problem with horizontal legend box becomming too smallfor many legends.* [me] Radar plot. SetColor() always sets a fill color. Fixed (Bug #83)* [me] Added SetWidth() for tab-title. The tab can now easily extendover the entire plot width. Added SetPos() as synonym in tab titlefor SetTabAlign().* [me] Gradient bar plots now show a gradient mark in the legend* [me] PiePlot3D::SetSliceColors() now more correctly specifies thecolor anti-clockwise. The same order that slices are drawn.* [me] Pie position can now also be specified in absolute pixelsin PiePlot::SetCenter()* [me] Added Bevel frame for entire graph* [me] Added possibility for some more advanced Graph titleformatting through the Graph::SetTitleBackground() method.* [me] Type safe comparison in auto-detection of GD version* [me] Added Graph::SetCanvasColor() to specify the background colorthe canvas is initialized with.* [me] Fine tuned label positiong for pie labels and made 3D piestake the specified labels into account.* [me] Added Anti-aliasing to Pie charts. Looks good but it reallyslows down the pie generation. Enable by acallingPieGraph::SetAntiAliasing()* [me] Ignore NULL values in Stock and bar plots* [me] Some minor internal adjustments for rounding in log scales.2 Feb 2003 JpGraph 1.11=======================* [Martijn] Compensate for GD 2.x bug in filledarc() which doesn'tlike negative angles.* [me] Added Graph::SetBackgroundGradient() . This allowsa gradient to be used as a background. The gradient can either fillthe whole frame, only the margin or just the plot area. See theclass reference or the manual for details regarding this method.* [me] Modified adjustment factor for colors so that it nowis linear between dark and light, i.e. a factor of 1 is the originalcolor, a factor of 0 is black and a factor of 2 is white.* [me] Added two new gradient style GRAD_LEFT_REFLECTION andGRAD_RIGHT_REFLECTION* [me] Some fine tuning of text layout in legend box* [me] Radar plots can now have a background image and multipletitles (sub-title, and subsub title).Added RadarGraph::SetPos() as alias forRadarGraph::SetCenter().* [me] Fixed a small pre-read-loop error which could casue theX-gridline to be outside the right edge of the plotarea if theX-scale was indented.* [me] Added possibility to use (scaled) images as markers byintroductin the new mark type MARK_IMG.* [me] Added tab titles for graphs. See class reference and Exampletabtitleex1.php.* [me] Added filled grids by adding method Grid::SetFill(). This newfeature is illustrated in example filledgridex1.php. Documented insection 6.2.11 in the manual.* [me] Improved automatic margins so they adapt to one or more titlelines automatically.* [me] Fixed a class hierachy bug. RotImage::DashedLine() should not beimplemented but rather rely on the Image::DashedLine() since therotation will happen in the RotImage::Line() which gets called inImage::DashedLine() by any istance of RotImage().You could see the ffect of this by trying to create a 90 degreesrotated graph with dashed gridlines, they would appear not to berotated at all where in fact they were rotated twice.* [me] Added automatic default margins when using Set90AndMargin()* [me] Added Box plots which is a variant of Stock charts with thepossibility to add the median as a horizontal line in the box.* [me] Added Stock charts, (aka candle-bars) as new class StockPlot().added example stockplotex1.php in the Example directory.* [me] Added two new axis styles AXSTYLE_YBOXOUT, AXSTYLE_BOXIN whichsuplicates the Y-axis on both sides but not the X-axis.* [me] Set90AndMargin() now also adjusts the label alignment on theaxis to suit the rotation.* [me] Added class LineErrorPlot which alolows a line plot tohave error bars (+/- delta error).* [me] Added Ticks::SetSize()* [me] Modified size for plot mark circle so it will have thespecified width as radius and not as diameter.* [me] Added Ticks::SetSize() to be able to set the absolute sizein pixels of the tick marks.* [me] Default directories for Fonts and Cache now gets setautomatically.13-Jan 2003 JpGraph 1.10.1==========================* [me] Fix bug in Band pattern Left diagonal and Right Diagonal wherethe drawing was incorrect when width < height* [me] Take the border on/off switch into account for line AddArea()* [me] Added color parameter to Axis::SetTickLabels() to make itpossible to set individual colors on labels.* [me] Fixed PiePlot::SetSliceColor() so that colors are now specifiedin the same order as slices.* [me] Gantt, Radar and Canvas graph now also considers the special file_IMG_HANDLER (returns the actual image handler and doesn't streampicture back)* [Christian Reiser] Pie graphs can now also return the IMG_HANDLER* [Richard Black] Removed case sensitivity for extension ofbackground images. Added support for handling file names withmultiple '.' characters in the path for background images.* [me] Added error check for imagettfbbox() since it can givea file not found error even though both file_exists() andis_readable() reports that the file exists and is readablein the case when PHP basedir restriction is in place.* [me] Corrected CSIM handling in Gantt for non-file basedGantt charts.* [me] Note to self: 1.10p* [me] Gracefully handle the abnormal case where no valid data pointsis included in the Y-data array when creating a line plot.16-Dec 2002 JpGraph 1.10========================* [me] Added GanttGraph::CreateSimple() whihc is a utility method tohelp create simple gantt charts with a minimum of code.* [me] Added new plot (FieldPlot) type which handles field plots. This isbasically a variant of scatter plots where each point is representedas an arrow which a specific direction (0-360 degrees).* [me] Added Graph::SetY2OrderBack() to control of plots on Y2 shouldbe under (in z-order) te plots on Y. By default they are on top.* [me] Avoided a potential 1-pixel off rounding problem if a usersupplies a non integer canvas width and height in the Graph() call.* [me] Added two new formats for week scale in Ganttcharts. WEEKSTYLE_FIRSTDAYWNBR, WEEKSTYLE_FIRSTDAY2WNBR Theseformats adds the weeknumber as well to displaying the date of thestart of the week. Also tweaked the auto-sizing of the Gantt chartsto adjust for the size of the text in the week scale.* [me] Fixed wrong define in jpgraph_gantt.php for WEEKSTYLE_DAY2(Bug #45)* [me] Improvements on manual scaling. If a manual scale is specifed(in the Graph::SetScale()) you are now longer required to specify amajor and minior tick interval (but of course you can still do itwith a call to Ticks::Set() ).A suitable intervall will be automaticallycaclulated in the same way as for autoscaling. By default the exactlimits for the scale as specified will be used. This means thatdepending on the scale and tick intervall chosen the max value ofthe scale may or may not fall on a major tick mark. If you want thatbehaviour you need to call Scale::SetAutoTicks(). By using this callyou give the algorithm permission to slightly adjust the specifiedmin and max values (if needed) so that they wil fall on a evenmajor step.* [me] Added error check if user tries to use SetTextLabelStart()with a logarithmic scale (where it is undefined).* [me] Default marker for scatter plots are now a filled square* [me] Adjusted the x-axis labelling for a 1-pixel off limit. Whichsometimes (depending on the image size and scale) could cause alinear scale's last label not to be shown.* [me] Fixed bug report #40* [me] Fixed positioning of caption for full odometers. (Bug #34)* [me] Fixed spelling mistake in jpgraph_odo.php which casuedOdometer::SetLabelPos() to have no affect. (Bug #33)* [me] Fixed an overzeoulous optimization which skipped both rotationand translation for angle=0. Addresses (Bug #36)* [me] Colors can now include an alpha channel specification as well.The alpha channel is specified in the text string separated by aa '@' , for example "red@0.5". The alphachannel is specified as afraction between 0.0 and 1.0.* [me] Improved filled line plots so they now handle negative valuesin a more standard way.* [me] Added automatic detection of what version of GD is installed.* [me] Aligned the order of legends and slices for pie and 3D pies sothat they now follow the more common order of clockwise slices withlegends from top to bottom.* [me] Changed call to deprecated function SetLinePos() to SetLineSide()* [me] Added clipping to generated plots. This means that if you haveplots (for example lines) which extends outside the scale range itwill be clipped. This might come in handy in for example balloonplots. Clipping is enabled by default but can be controlled by acall to Graph::SetClipping()* [me] Fixed a problem with circles and filled circles when they wererotated twice in a rotated graph. (Bugtraq #26)* [me] Added Graph::Set90AndMargin() which helps for doing a 90degrees rotation and getting the margins right. (Otherwise you haveto adjust them manually since height becomes width and width becomesheight when you rotate 90 degrees)Changed the horizbar* examples to use the Set90AndMargin()* [me] Changed the behaviour of plot marks in legends. The possibleformat callback is no longer called. Instead the plotmarks areset to a default size.* [me] Added three more plotmarks MARK_LEFTTRIANGLE,MARK_RIGHTTRIANGLE, MARK_FLASH. These new types are primarily meantto be used with GanttCharts.* [me] Added constrain lines to GanttCharts. It is now possible toillustrate start-end, start-start, end-start and end-endconstrains. This is illustrated by adding lines with arrows,Use GanttPlotObject::SetConstrain()* [me] Added Image map support for Gantt chart. Bar and titles can nowhave associated image map targets. Use GanttBar::SetCSIMTarget()GanttBar::SetCSIMAlt() and for titles useGanttBar::title::SetCSIMTarget() and GanttBar::title::SetCSIMAlt()* [me] Fix problem in Gantt graph whereby the progress bar indicatorcould extend over the end date if an explicit date scale was set.* [me] By default logarithmic scale now print the labels as 10^3instead of 1000. You can change the behaviour with the newmethod for logarithmic ticks, SetLabelLogType().Also added the possibility to have a callback for log scales* NOTE TO SELF 1.9p* [me] Added the possibility to specify a value > 1 as the positionfor labels in PieGraph::SetLabel() to increase the margin betweenthe label and the edge of the pie.* [Olaf Kandel] Fixed subtle bug in the printing of the month scale for thecase where the start and end month hjave the same number butare on different year. This would cause the width for thefirst month to be wrong.Jpgraph 1.9.1=============* [me] Fixed defects #20 and #21 (spelling mistake and and oneoverzelous last minute error check I added). I have to eat a lotof humble pie over these ones. Sorry to all who have been affected.What can I say? Human error........JpGraph 1.9===========* [me] Changed the way TTF fonts are handled. The font files are nolonger distributed with JpGraph due to potential copyright problem.This change also has the advantage that it is now verystraigthforward to install new fonts whatever their namingconventions are.1. If you are running on a standard Windows system just point theTTF directory to your standard font directory and use the availablefonts in windows.2. If you are on a Unix system you can download the MS Core TTFfiles from http://corefonts.sourceforge.net/. The old MS EULA allowsdistribution of the fonts in unaltered form (Win EXE) and thisproject exercises this right and provide tools to download andinstall the fonts on a UNIX system.* [me] Renamed this release from 1.8.1 to 1.9 due to the bigchange in the handling of TTF fonts which breaks backwardcompatibility due to the copyright problem with TTF fonts.* [me] Improved the TTF pargagraph layout engine for consistencyin handling "\n\r" vs "\n". It is now always sufficient touse just "\n".* [me] Adjusted the text positioning for StrokeBoxedText()to use the new GetBBoxHeigh() and GetBBoxWidth().* [me] Added Image::GetBBoxHeight(), Image::getBBoxWidth()* [me] Once and for all fixed the handling of rotated TTF text byadding Image::GetBBoxTTF() which returns the bounding rectangle(which is not the same as the bounding box except for angle==0)* [me] Added argument to Legend::SetColor() to make it possibleto specify both frame and font color.* [me] Cosmetic adjustment of markers in legend so that they arepositioned exactly in the middle of the text string.* [me] Corrected the positioning of TTF fonts when defining thehotspot as 'bottom'. It could be up to 4 pixel off when usingtexts that contained character that extended below the TTFbaseline e.g. '('.* [me] Added possibility to use a cache system with CSIM imagesas well. The cache system is used slightly, slightly differentand require a call to the new method Graph::CheckCSIMCache()This is unfortunately unavoidable due to the nature of CSIM inHTML. The documentation is updated to deal with this. This alsoadded two more defines CSIMCACHE_DIR and CSIMCACHE_HTTP_DIR* [me] Added CSIM (Client Side Image Maps) to legends, addedtarget and alt arguments to all Plot::SetLegend()* [me] Added functionlity to pass on any URL arguments when usingStrokeCSIM() (Bug: #006)* [me] Fixed so that Gantt charts can again have just the widthspecified and have the height automtically sized. (This was aregression introduced in 1.8) (Bug #005)* [me] Added error check for return value from imaagecolorsforindex()in Anti-aliased lines. In combination with GD2, no-true-color, atrue color background (ala JPG) this can fail since it gets a colorwhich doesn't exist (since it uses imagecolorat()).* [me] Improved edges support in 3D Pies.* [me] Changed Image::Polygon() so i now draws an open polygon and nota closed one.* [me] Legends for scatter plots no displays the mark used foreach scatter plot and not just a square with the correctcolor.* [me] Fixed a small cosmetic problem in that horizontal legendbox was sometimes not wide enough and made a small adjustmentof the positioning of marks in the legend box for betterapperance. (Bug #0017)* [me] Improved manual by adding linked TOC.* [me] Added Bezier curve to canvas Shape class. Added Bezier canvasexample canvasbezierex1.php* [me] Added Paragraph Alignment setting in Text::Align() as well toavoid seprate call to Text::SetParagraphAlign()* [me] Added Image::SetExpired() . By default the image now sendsback a couple of variants of "no-cache" headers to force the browserto reload.* [me] Some serious speed improvments for 3D Pie plots. It can now beup to 6000% faster (yes that's right 6000%!). This is the way I hadplanned on doing it but for time reasons were pushed out of 1.8.I have completely changed the algorithm that handles the individualslices on the expense of a slightly more complicated implementation.This means that there is no performance difference between 2D and3D Pie Plots.* [me] Fix bug for rotation of paragraphs (multi-line) texts.A limitation for now is that rotated pargraphs always getsparagraphs align "left". (Bug: #008)* NOTE TO SELF: 1.8p* [me] Fixed a typo that had the strange affect that paragraph stringswhich started with a number would have larger distance between theindividual lines since that number would be interpretated as theangle for the text!* [me] Fixed a problem with marks getting out of sync if NULL valuesare present in the line plot. (Bug #0018)* [me] Scatterplot no skips NULL values instead of treating themas zero.* [me] Added LinearScale::SetAutoMax() as complement to SetAutoMin()* [me] Added LinearScale::SetAutoTicks() this makes it possible tomanually set a scale but still have the tick marks automaticallydetermined. By default this feature is off to keep old codebehave exactly the same as before. If this is enabled anyTicks::Set() calls are ignored.* [me] Added possibility to adjust the position of the displayedvalue for bars via the BarPlot::SetValuePos() method. Added newexample example20.5 to demonstrate this.* [me] Bugfix: Fixed color themes for 3D pie plot. The color arraywas not wrapped around in the case where more slices (data points)than colors is used. (Bug: #001)* [me] Documentation is now 100% pure HTML and does not requireany PHP. Previously a PHP script was used to generate thehighlighted source used in the image/source frames. All thisis now pre-generated in the docs.* [me] Position the values in a scatter plot in the center of theplot mark by default (Setting align to 'center','center' and margin=0* [me] Added LinePlot::SetBarCenter to make it possible to center theline on the bars when combining a plot with both bars and lines.The new example 'ceneterdlinebarex1.php' demonstrates this.[19-Sep-2002] JpGraph 1.8=========================* [me] Added Text::SetPos() as alias for Text::Pos() to harmonize withother setting methods.* [me] Made Graph::Add() polymorphic. You can now use Graph::Add() toadd all plot objects and you don't longer have to use AddText(),AddLine(), AddBand() and so on.* [me] Added PiePlot::SetLabelPos(), added some more Pie examples.* [me] Improved the API for class Text by adding SetShadow() to makeit more like the other objects. Extended Text::SetBox() with shadowwidth and corner radius.* [me] Added the possibility for Text object to use the new roundedrectangles as the filled background.* [me] Added possibility to add arbitrary labels inside the pie plot* [me] Added special filename __IMG_HANDLER to make it possible tohave Graph::Stroke() return the image handler instead of strokingthe image to file (or stream it back).* [me] Improve FilledCircle() to avoid moire-patterns in circle.* [me] Added middle type pie plot* [me] User specified values for the band position is truncated to themin and max values of the axis.* [me] Added possibility to use Text::SetMargin() for all the titlesin a graph* [me] Added SetSize() as synonym for SetWidth() for plot marks.* [me] Updated some of the examples with more comments.* [me] Fixed problem with with jpg background images wrongly beingloaded with imagecreatefromjpg instad of imagecreatefromjpeg* [me] Corrected the positioning of individual titles for 3Dplots.* [me] Added Text::SetMargin() to make it easy to have contextsensitive margins.* [me] Added capability to have background images on Pie and 3DPie plots* [me] Added method Axis::HideLine() which hides the axis line butnothing else.* [me] Fixed bug in Stroke::Text() where negative coordinateswasn't properly handled. We must allow negative absolutecoordinates since these might be rotated/translated into"real" screen coordinates. This fixes the bug, for examplein bar_csimex1.php where the first value of the bar wasn'tdisplayed.* [me] More adjustment of how the rounding takes place withcoordinates. This should now avoid all potential differencebetween different graphic objects.* [me] When you use automatic labelling on text scale it now startsat 1 and not at 0. This makes more sense since most people (exceptmathematicians) start counting from 1.* [me] Example directory:- Added more advanced canvas examples- Updated all CSIM examples- ~60 new example script which are used in the new documentation* [me] Compensate for bug in imagettfbox() which return to small size forlarge fonts.* [me] Added jpgraph_canvtools.php which contain some utility classes foruse with canvas graphs.* [me] DOCUMENTATION: The class reference is now included in the release.* [me] DOCUMENTATION: Completely rewritten the originalWord-introduction to JpGraph to pure HTML. This will be a livingdocument that will be updated as time moves on. This is currentlyconsidered "Beta" and more chapters need to be added but this isa good start!!* [me] Added full support for multiline legends. (See for examplenullvalueex01.php. Also improved the way lineplot with marksare illustrated in the legend by adding the line underneth theplotmark.* [me] Added some utility classes to be able to draw DB schema forDDDA. This is tailored for my DB abstraction layer (jpdb.php)in DDDA but is generic enough to work in other circumstances as well.The classes can be found in utils/misc/imgdbschema.incPlease see (run) dbschema_ddda.php which shows how it looksin a real life example.* [me] Tweaked the positioning of TTF fonts and how the width andheight are determined. Making more carefull assumptions abouthow the baseline is handled for individual lines of text.* [me] Added class RectangleText() which makes it easier to workwith text inside a rectangle with rounded corner.* [me] Added support for multi-line TTF paragraphs with paragraphformatting. This was previously only supported for the builtinfonts. All text object should now support fully formatted paragraphsof text.* [me] Added Image::RoundedRectangle() andImage::FilledRoundedRectangle()* [me] Added format callback to plot marks. This makes itpossible to individually adjust the plot marks dependingon it's specific data value. See balloonex1.php* [me] Added some initial support for super script used forscientific numbering, i.e properly print for example 10^2where the 2 is in superscript. This is all handled by thenew class SuperScriptText(). Not yet used in the actuallabels drawing but will be added shortly.* [me] Added a small tool mkgrad.php in the utils directory tomake it a breeze to create gradient squares which may beused as background images.* [me] Added footer class to graph. This makes it easy to haveleft,center and right footers in your graphs.* [me] Added subsubtitle to graphs* [me] Improved/Changed the way you work with CSIM. This new methodmakes it possible to generate CSIM without having to create anintermediate image on disk.Added Graph::StrokeCSIM(). Added new chapter in the docs on how towork with CSIM* [me] Changed naming of Spider* to Radar* since SpiderGraph is acopyrighted name.* [me] Modified the automatic suppression of the first value of theX-axis when the Y-axis have negative value so it don't happenin the case where the X-axis is positioned at the minimum ofthe Y-axis.* [me] Fixed spelling error of BK* instead of the correct BG*for the default settings of background image style.* [me] Some internal code changes to RGB() class to make it easierto use directly for external scripts.* [me] Changed the behaviour of filled line plot so that theydon't go down to 0 for null values in the plot but insteadbehaves like '-' for non-filed plots, just ignore them andconnect the previous and next point instead.* [me] Fixed problem in integer scaling where it certain scalecombinations could generate floating point labels! Ooops..(Affects IntCalcTicks())[5-July-2002] JpGraph 1.7==========================* [me] Removed the APACHE_CACHE_DIRECTORY define since it isnot used.* [me] Added Image map functionlity for rotated bar graphs,also added new example for this (bar_csimex3.php)* [me] Made Ticks::SetPrecision() deprecated. Use SetFormatString()instead* [me] Fixed problem with incorrect string being returned fromToCyrillic()* [me] Allow Y2 axis to use "int" scale* [me] Fixed problem with wrongly names framework function forpatterns* [me] Fixed small problems with margins being slightly off forroated images.* [me] Changed name of PlotMark::SetMarkColor() to PlotMark::SetColor()for consistency* [me] Added example with "hidden" Y-axis.[17-June-2002] JpGraph 1.7-BETA===============================* [me] Added DisplayValue::SetFormatCallback() to make it possible to usea user specified formatting callback routine.(Note:: Yes, this is very nono-OO but the proper OO way, by forcing theuser to define a subclass of the plot class where the formatting methodis overridden will probably not fly with to many non-OO PHP peoples sincea callback is conceptually simpler.)* [me] Added DisplayValue::HideZero(). Makes it possible to hide zero valuesin labels, for example zero slices in pie's, (e.g. $pieplot->value->HideZero())* [me] Added manual scaling to Gantt graphs, added example to illustratethis, fixscale_gantt.php* [me] Adding image maps for Y2 scale as well.* [me] Fixed a small bug which made it impossible to use BRAND_TIMING withGantt charts. Enabling timestamping of graphs would give a "PlotArea to small"error.* [me] Made a very small change to the AutoScaling algorithm to yield tighterboundaries, i.e with the existing algorithm, depending on rounding problemsa plot which had a maximum value of, say 4, could get a autoscaling maxvalue of 5. Not a big problem (or hardly a bug) but not what I wanted.All my 111 test cases works fine with the modification but I'm stillnot convinced that this (very minor) adjustment is 100% (I can distinctlyremember that I had a good reason to do it the original way, I just can'tremember what :-)* [me] Graph titles may now have multiple rows. By default the lines willbe centered, but this may of course be adjusted by a call to, forexample, $graph->subtitle->ParagraphAlign('left');* [me] Added class FuncGenerator() to make it easy to generatefunction plots (both normal and polar). To illustrate this I haveadded three new examples funcex1.php,funcex2.php,funcex3.php.* [me] Added Axis::HideFirstLastLabel() to hide first and last label onaxis. This is usefull if we have a box around the plot area and we don'twant the labels to owerwrite the box (see funcex1.php)* [me] Make sure GD2 variables is registred in $GLOABALS[]* [me] Fixed bug in image maps for marks. Alt strings was incorrectlyindexed so it was only using values 0,2,4.. instead of 0,1,2,...* [me] Added Graph::SetAxisStyle(). This makes it easy to usea few number of preset axis setup. For example duplicating the axisas a border around the plot. Preset axis position availabel areAXSTYLE_SIMPLE, AXSTYLE_BOXIN, AXSTYLE_BOXOUT* [me] Made Axis::SetTickLabelMargin() deprecated. UseAxis::SetLabelMargin() instead. Name change to make it moreconsistent with the other margin settings.* [me] Made Ticks::SetSide() a synonym for Ticks::SetDirection()to make it consistent with side setting for labels and values.* [me] Added Axis::HideZeroLabel() as a shortcut foraxis->scale->ticks->SupressZeroLabel()* [me] Internal code changed. Replace the use of FontProp in SpiderGraphwith Text() and some additoinal code cleanup.* [me] Adjusted Image::Arc() so that no negative angles arepassed on to GD imagearc() since it barfs at negative angles.* [me] Added PiePlot3D::SetHeight() which is used to specify theheight in pixels of the 3D pies instead of using the defaultheight.* [me] Pie plots (both 2D and 3D) now displays the slice labelsby default.* [me] Added two more Examples. barintex1.php shows how to useinteger scale and barscalecallbackex1.php shows how to usea callback function for formatting the scale.* [me] Modified grace calculation for Integer scale to have highersensitivity.* [me] Restructured code so class DateLocale is now in jpgraph.phprather than in jpgraph_gantt.php. Also added $gDateLocale as aglobal instance of the class DateLocale* [me] Modified integer autoscale to correctly handle very small values(needs special handling of max==1 to avoid fraction)* [me] Changed the way min value is extracted when finding the baselinefor bar plots. Now uses the function Scale::GetMinVal() instead ofreading the value directly fomr the instance variable. This makes itwork better with logscales so that the bar starts from the min valueof the log scale. Also added check in bar PreStrokeAdjust() to see ifwe are using a log Y-scale to automatically adjust the Y-base.* [me] Optimized Stroke() loop for LinePlot so calls to PlotMark::Stroke()will only be done if the marks are really to be shown.* [me] Added Axis::SetLabelAlign().* [me] Made some internal modifiaction on how Axis title gets alignedto make it possible to specify it manually without having itautomtically set. This makes it possible to generate nicehorizontal bar graphs.* [me] Added three examples in the Example directory on how to makehorizontal bar graphs.* [me] Don't always set Y-axis position automtically* [me] Add Text::SetAngle() as synonym for SetOrientation()Added SetLabelSide() as synonym for SetlabelPos()* [me ]Make it possible to manually specify the alignment of the textstringfor the title position. This makes title looks nicer with horizontalbar graphs.* [me] Allow Y-axis labels to be at an angle[14-May-2002] JpGraph 1.6.3===========================Changes/Additions:* [me] Added functionality to make AccBarPlot::SetAbsWidth() work injpgraph_bar.phps* [me] LinePlot::SetColor() no longer sets the color of the plotmark.The problem that some people had was that if you set the mark colorspecifically first and then unsuspecting called SetColor() for theline the color for the plotmark circumference would also be set makingit look like the PlotMark::SetColor() didn't work.* [me] Improved the functionality of GanntGraph::SetDateRange() to makeit possible to display a section of the graph.(In previous version it was a checked error if you tried to plota graph where any activity bar was outside the specified area.This is now changed to only cap the bars to the area.This makes it more suitable to handle big gantt chartswhich now can be split into several images to show differentparts of the projects)* [me] Added GanttScale::SetWeekStart() to set the start of week to anarbitrary day. For example SetWeekStart(0) will make the weeks starton Sunday, SetWeekStart(1), Monday and so on.* [me] Fixed a rounding error in Gantt chart that could cause the weekstart day to off by one.* [me] Modified the Min() and Max() methods for AccLineBar's to avoidthem overestimating the max value. (Basically now using the samemethods as in AccBarPlot)* [me] Added missing code to do percentage calculation for 3D Pies sothey work the same way as the 2D Pies.* [me] Added error check for the case where the image is so small thatthe available plot area becomes to small.* [me] Compensate for a PHP bug (#12474) in strtotime() which can affectGantt chart so that the same month name is shown twice.See http://bugs.php.net/bug.php?id=12474* [me] Compensate for the documented shortcomming in my3D Pie algortitm whereby a small exploded slice close to 270 degreesget's slighthly nagged at tha base due to the fact that the z-orderstroking algorithm is only perfect if the slices are not exploded.[20-April-2002] JpGraph 1.6.2=============================Changes/Additions:* [me] Slightly adjusted LinearTicks::Stroke() to better handle sompotential rounding problems.* [Thomas George] Added LinePlot::AddArea() which makes it possibleto just fill part of a line plot (a part that is specified with astart and end x-point)* [Thomas George] Fixed bug with missing coordinate when using filledline plot with step style.* [me] Added client side image maps to scatter and line plots* [me] Fixed problem with warning "IMG_ARC_CIRCLE not defined" whenrunning on GD 1.x* [me] Removed test with is_null() in jpgraph.php to make JpGraph 1.6.2work with older versions of PHP (especially 4.02).[07-April-2002] JpGraph 1.6.1=============================Changes/Additions:* [me] Modified autoscaling for the case where all values are equal tomake the min/max difference larger.* [me] Fixed bug in 3D pies for certain data values* [me] Fixed bug with images maps assuming that sliceswhere order anti-clockwise and the new pie algorithm did themclockwise.* [me] Added subtitle to Pie and Pie3D graphs.[02-April-2002] JpGraph 1.6===========================Changes/Additions:* [me] Changed license to QPL* [me] Completely rewritten algorithm for 3D pies which gives MUCH better result. Willalso allow exploded 3D pies.* [D. Reinbach] Better handling of filling line plot with negativevalues* [me] Added LinePlot::StrokeDataValue() for easy handling of plottingdata point values.* [Gyozo Papp,me] Real locales for Gantt chart. The locales now take aproper locale string (e.g. "en_UK", or "sv_SE") to get the reallocales from the system. Note that this breaks the sc compatibility* [me] Removed jpgraph_dir.php and moved the directory settings back injpgraph.php due to problems in PHP with nested includes and searchpaths.* [me] Added possibility to show values for scatter plot byrefactoring value support back into jpgraph.php Plot() class. Thismakes it easy for all subclasses that uses Plot() to add displayvalue support.* [me] Added possibility to use X-coordinates in Error plots* [me] Fixed missing LogScale::SetXLabelOffset(). This made itimpossible to use linear plots with a log x-scale !!!* [me] Fixed bug so possible Y2 plots are also taken into account when autoscaling the X-axis. This could otherwise couse plots outside thescale when using Y and Y2 plots where Y2 plots had more data values.* [me] **********!!SC BREAK!!**************Aligned the way values are displayed on Bar graphs with line andscatter plots. The values to be displayed for these plots are nowall accessed through the "value" property of the plot. For example$myBarPlot->value->Show();instead of the previous$myBarPlot->ShowValue();* [me] **********!!SC BREAK!!**************Aligned the way values are displayed in Pie plots with line andbar plots. You know use the "value" property in exactly the same wayas in bars and lines.* [me] **********!!SC BREAK!!**************Aligned the way values are displayed in 3D Pie plots with line andbar plots. You know use the "value" property in exactly the same wayas in bars and lines.* [me] Added possibility to display individual values in anaccumulated bar graph in addition to the overall accumulatedvalue. This is done as usual through setting the individual barsvalue property to what you want (size, color, format and so on)* [me] Added another default error handler which is image based tomake it easier to see error messages when images are includedin a page. This is now the default error handler.* [me] Added possibility to specify the location of the X-Axisto the top of the graph by using xaxis->SetPos("max") alsoadded new Example topxaxisex1.php to demonstrate this feature.* [me] Added more 3D pie examples to demonstrate new functionlity.[01-March-2002] JpGraph 1.5.3=============================Changes/Additions:* [me] Make it possible to use JpGraph 1.5.3 with GD 1.8.x. In 1.5.2 I wasusing a function only available in GD 2.x.[29-Feb-2002] JpGraph 1.5.2===========================Bug fixes:----------* [me] Released the correct 3D pie file (By mistake I mixed the stable version withthe development branch for 2.0 in the 1.5.1 release just to provethat I'm still human :-)* [me] Fixed out of bounds error when using shadows for bar graphswith 0 value* [me] Fixed typo in DisplayValue::SetFormat()* [me] Fixed potential array out of bounds error in Plot::Min() andPlot::Max()* [me] Fixed misplaced ')' in string construction in call toJpGraph error.Changes/Additions:------------------* [me] Added possibility to use "auto" file name when strokingdirectly to a file.* [me] Added tag 'title' to the image maps to make for bettercompatibility with Mozilla.* [me] Moved class LineProprty to jpgraph.php from jpgraph_gantt.phpsince it can be used in other modules as well.* [me]Added Text::GetTextHeight() which differs fromText::GetFontHeight() in that it takes the total text height(possible multiple lines) into account.* [me] Added Image::FilledArc()* [me] Added RotImage::SetTranslation()Added RotImage::Circle()Added RotImage::FilledCircle()Added RotImage::Arc()Added RotImage::FilledArc()[11-Feb-2002] JpGraph 1.5.1===========================* [me] No longer treat a not set $y[0] value as an explicit error. Insteadsilently set $y[0] to 0.* [me] Changed "include" to "require" in jpgraph.php when includingjpgraph_dir.php. This seems to fix the strange problem wherebythe constants defined in jpgraph_dir.php didn't have a correctvalue in jpgraph.php.* [me] Fixed problem with correctly drawing of bars when all barsare negative. (Previously the baseline wasn't correctly handledsince min/max values needs to be mirrored for negative bars)Note: Funny this problem has gone unnoticed so long.* [me] Fixed problem with doing gradient fill for negative bars.* [me] Fixed problem with autoscaling when there is a very smalldifference (< 0.00001) between min and max and when both min and max arenegative. This might happen if you have a single negative value.* [me] Added labels for line graph. Each point my now also optionallydisplay it's value on a line graph. Value are controlled troughclass DisplayValue and it's instance in LinePlot.LinePlot->value->Show(),LinePlot->value->SetColor(),LinePlot->value->SetFont(),LinePlot->value->SetMargin(),LinePlot->value->SetFormat(),[27-Jan-2002] JpGraph 1.5=========================* [me] Fixed misnamed xmin variable in Min() for acc bars* [me] Added possibility to specify paragraph alignment formulti line text, i.e the text can be left,right or center alignedwithin it's bounded box. The lignment is set by the new methodText::ParagraphAlign()* [me] Changed position specification for text so that if the positionis specified in range [0,1] it is interpreted as fraction of imageheight width and otherwise as absolute pixels.* [me] Added possibility to specify pie size (radius) both as a fraction andabsolute size in pixels.* [me] Added possibility to tweak color specification by adding asaturation percentage, i.e you can specify color as "red:0.65"which means 65% of the red value (in other words 35% darker).* [me] Tweaked the estimation of number of segments to approximate anarc in Image::CakeSlice.[17-Jan-2002] JpGraph 1.5beta2a===============================* [me] Fixed typo in Max() calculation for accumulated bar graphswhich caused it to return wrong value.* [me] For Min() calculation for acc bars graphs take the userspecified ymin into account.* [Peter Svistunov, me] Added Cyrillic unicode support through theglobal define LANGUAGE_CYRILLIC. This is also the start of ageneric support for Unicode languages through the LanguageConvclass.[15-Jan-2002] JpGraph 1.5beta2==============================* [me] Rewrite of the pie-chart drawing algorithm. This versionis slightly slower but avoids using GD floodfill function. Thisfixes problems with small slices not being filled completely. Asan added bonus it is now possible to explode (and specify theexplode radius) for all slices. It is also possible to draw thepie without having internal borders between the slices as wellas turning on/off the border surronding the pie.* [me] Added graphic primitive CakeSlice() to the Image class.Used to simplify pie-drawing.* [me] Added more generic error handling. It is now possible toinstall your own error object withJpGraphError::Install(<name of error object>)The default error handler will just abort execution.* [me] Security whole in utility script for displaying sourceand image in frames fixed.* [Cedric Scheyder] Actively ignore hours in calculating Max/Minvalues for dates in Gantt charts to avoid problems in autoscalingwhen users specify start and end dates down to hours.* [Rick Widmer] Fixed problem in calculating min/max value when firstY-value was non-numeric.* [me] Fixed calculation of width and height of text with multiple lines.Multiple text lines (text blocks) should now be almost fully supported.[16-Dec-2001] JpGraph 1.5-BETA==============================* Take "\n" into (some) account when calculating string height and widthText output now supports multiple lines better.* [me] Removed reference to global PHP_SELF, use HTTP_SERVER_VARS arrayinstead. This makes JpGraph working with 'register_globals' turnedoff.* [me] Added some rudimentary check that GD is enabled before trying torun JpGraph.* [me] Fixed silly cut-and-paste bug in AccBarPlot::Max() which couldcause to small max values to be returned* [me] Added property 'title' to PlotMark. The title is printed in the centerof the plotmark.* [DanNY (dulcis28@hotmail.com)] Added JpGraph Logo. (Thanks!)* [me] Added jplintphp.php, jpgendoc.php, jplintdriver.php which areparsing, documentation and pretty printing tools I use to helpme to documentation and find unused code.Tthat does some simple static analysis on PHP for silly mistakesthat I do (Like using instance variables without qualifying themwith "$this->" ) The tool also warns about unused instance variables.Since it also parses the classes and methods I use it to generatethe documentation skeleton for the reference section.* [me] Added Gantt chart funcionality, jpgraph_gantt.php . SeeGantt tutorial for help on usage.* [me] Added new Gantt tutorial* [me] Added BKIMG_CENTER, possibility to center the background image.* [me] Timeout function now also aplies when you generate an imageoff-line, i.e if the imagefile exist and is within the time windownow file will be written.* [Rasmus Lerdorf] Added patch to make background images work with GD 2.xN.B GD 2.01 has bugs in handling TTF font with truecolor images whichare fixed in 2.02 but that has (of this writing) still not been officiallyreleased. GD 2.x support in JpGraph is still to be considered experimental.* [me] Fixed some potential rounding errors in 2D Pie plot which in somecircumstances might have caused a flood fill to escape. Also added checkto better handle very small slices so we don't try to do a fillon the border edge.* [me] Slightly changed the internal design for band patterns.They are now created by a factory class instead. This makes it much easierto re-use and have maximum code reuse.* [me] Factored out some functionlity from Graph::Stroke() to make it possibleto re-use some code in GanttGraph::Stroke()* [me] One more instance when PHP surprised me by thinking 0 == "-" aarrghhhNow I think (knock on wood) all problems with data points=0 should be solved* [me] Added '&' to the assignment in Graph::Add() This now lets you specify changesfor lines, plots even after they been added to a Graph. But I'm not sure if thisis really such a good ide because you will have problem if you write codelikefor( .... ) {$myplot = new LinePlot(.....);$graph->Add($myplot);}Since this will not work the way you think (why?) Because the samereference to the variable $myplot will be used for all additions andhence the graph will only have multiple instances of the last addedLinePlot(). Have to think of this and what is the best way. (I willprobably never get used to PHP references....)[11-Nov-2001] JpGraph 1.4==========================Bug Fixes:-------------------------------------------------------------------------------------* [me] Enabled E_NOTICE warnings in my PHP installation and found a couple ofglitches (harmeless out-of-bound in two loops) which is now corrected.* [me] Fixed problem in line plots where y-value==0 wasn't drawn. (Once againbitten by the fact that in PHP the following is true: ""==0)* [me] Fixed color specification for bars when initialized as an array of colors* [me] Fixed color of bars using shadow which was advertedly set to shadow color* [me] Fixing incorrect color specification for legends using bars with color arrays* [me] Add check for sum=0 in pie plots to avoid divide by 0 problem* [me] Changed the stroke orderd for FilledRectangle() so that the shadow doesn'toverwrite a line with weight > 1* [me] Fixed incorrect calculation of font height for titles which cause thesubtitle to be to close to the title.Additions:-------------------------------------------------------------------------------------* [me] Added depth parameter (DEPTH_FRONT, DEPTH_BACK) for gridlinesGraph::SetGridDepth()* [me] Added possibility to add static horizontal and vertical band with apattern in the plot area. Graph::AddBand() Supports solid, diagonal,stright line, 3D-plane crosses (both diagonal/vertical) patterns.Graph::AddBand()* [me] Added possibility to have static lines in the plot. This is now implementedwith new class PlotLine and two new functions Graph::AddLine(),* [me] Added symbolic constants to specify background image typesBGIMG_COPY, BGIMG_FILLPLOT, BGIMG_FILLFRAME* [me] Added extended label formatting through eitherAxis::SetLabelFormatString() C-style formatting stringorAxis::SetLabelFormatCallback() A callback function that are given the value to be displayedand should manipulate the value as it likesThe use of the old style digit precision variable will be deprecated from next version.* [me] Added error check if supplied Y-data has unspecified value at index 0 to avoidout of bounds error when corrupted data is sent in to JpGraph.* [me] Added possibility to specify image depth for gridlines. You can now specifyGraph::SetGridDepth() as DEPTH_FRONT or DEPTH_BACK. Depending on if you wantthe gridlines at the back of in front of your plots.* [me] Added possibility to specify Cache file name as "auto". In this case theimage file name will have the same name as the scriupt that generates theimage with the extension of the automtically generated graphic format.NOTE: You will get the wrong extension using this feature at the sametime as specifying a different graphic format thne the automatically choosenone.* [me] Added some more advanced examples for impuls drawings impulsex3.php andimpulsex4.php* [me] The values on top of bars can now be at an angle and the horisontalposition now account for if a shadow is present.* [me] Added filename to Graph::Stroke() which makes it easy to output an imagedirectly to a file _without_ streaming it back to the browser. Usefull forbatch processing* [me] Added new tutorial for bar graphs* [me] New scale type "int". This gives a normal linear scale but restrictsticks (and labels) to integer values. Can be used for both X and Y scales.* [me] Added subtitle to graph* [me] Added possibility to specify an array of X-coordinates with bar plots toposition individual bars on the X-scale. Makes it much easier to combinebar plots with other types of plots, (line, scatter etc)* [me] Extended utility adjimage.php to allow it to manipulate color saturation.* [me] Added Image::AdjSat() to allow manipulation of the colorsaturation in the image. This also makes it very easy to change the imageto greyscale (just set saturation=-1).Extended Graph::AdjImage() and Graph::AdjBackgroundImage()to include new parameter for saturation value.* [me] Added BarPlot::SetAlign() which makes it possible to alignbars relative the tickmark for linear and int scale* [me] Added possibility to absolutely set the width of bars. This willoverride the automatically decided with based on the scale and tick distanceChanges:-------------------------------------------------------------------------------------* [me] Legend color for scatter plots now becomes the fill color of the mark* [me] Impulsplots now anchors at Y-value = 0 if the y-axis contains both negativeand positive values. Otherwise it will go to the lowest value on the Y-axis.* [me] Bar shadows is now connected to bars to make for a stronger 3D effect.* [me] Removed all deprecated references and usage of FONT0, FONT1, FONT2. NoteYou can no longer use these. Instead use FF_FONT0, FF_FONT1, FF_FONT2 etc* [me] Text scale now starts default labelling at 0* [me] All plots internally adjusted to start at default X-coordinate 0 to harmonize betterwith X-scale.* [me] Graph->Stroke() now just returns instead of exit()* [me] Removed flag argument for BarPlot::SetShadow()* [me] Bar plots are know by default filled with lightblueunless otherwise specified.* [me] Changed the way bars are positioned for linear and integerscale for maximum flexibility when mixing barplot with otherplots.* [me] The ALT strings for all image maps now uses printf() syntax to displaythe actual value. If you have used this feature you must update yourALT strings, for example "val=%v" must become "val=%d" or whatever formatyou choose.* [me] Changed the formatting of bar graphs by changing the frameworkso that labels on the x-axis using a text scale is now independenton the tick marks.This makes it possible to have the labels centered under each bar but havethe tickmarks between the bars as most other commercial graph packagesformat these typw of graphs. Introduced Axis::SetTextLabelsInterval()Effects jpgraph.php, jpgraph_log.php and jpgraph_bar.php* [me] Renamed Axis::SetTextTicks() to Axis::SetTextTicksInterval() to make the namemore descriptive. The old name is deprecated from this version on but will stillwork until 2.0 to keep compatibility.* [me] Cleaned up implementation of pie3d so it now inherits from pie to avoida lot of duplicated code and easier maintainance. (A good example of the reallife OO programming where you might not see the similarities between two classesuntil you fully implement them.) File size of jpgraph_pie3d.php has shrunk byroughly 40%[23-Sep-2001] JpGraph 1.3.1===========================Additions:* [Michael Anthon] Added client side image maps to 3D pie plots* [me] Added possibility to better control the labeling of pie graphs with an optionallabel formatting string PiePlot::SetLabelFormat(), PiePlot::SetLabelType()This also makes it possible to have labels with the absolute value and not only thepercentage. (same with pie3d)* [me] Added formatting capabilities for legends on pie and pie3d graphs. Can have the valueautomtically included (Se Examples/pieex6.php)* [me] Added some more examples, negbarvalueex1.php, scatterlinkex2.php, pie3d_csimex1.phppieex6.phpKnown bugs and omissions:- Client side image maps does not currently handle exploded pie graphs (justnormal pie graphs.Bug fixes:* [me] Fixed problem with positioning the displayed values for negative bars* [me] Fixed shadow for negative bars* [me] Fixed problem in Plot::Min(), PlotMax::Max() whereby zeros where not countedtowards minimum since in PHP 0=="". This could sometimes cause strange autoscaling.* [Vitaly E. Ashmarin] Wrong arguments to imagejpeg() for combination of specifiedimage quality and filename = ""* [John Milne] BarPlot::SetFillColor() fixed glitch in loop variable[13-Sep-2001] JpGraph 1.3=========================Note: I have to the best of my memory tried to give credit wherecredit is due. Howevever, since ver 1.2.2 I have received over 2000 mail aboutJpGraph with Questions/Suggestions/Improvments (and a few bug fixes) etc andI might have missed some in the process of going through these mails. Thefault is completely my own and if you recognize some idea I have implementedsomething which you think you should have credit for please drop me a note andI will adjust the add you to the change notes.Known bugs and omissions:- The automatic value on bar graphs does not work well withnegative bar graphs. (Quite easy to fix though..)- Client side image maps does not currently handle exploded pie graphs (justnormal pie graphs.IMPORTANT NOTICE:* SC (SOURCE COMPATIBILITY) BREAK !: If you want to rotate the image the parameteris no longer supplied directly in the call to Graph() but rather as a methodcall Graph::SetAngle(). I decided to make this SC break since I judged it morenatural to supply the timeout value just efter the specified cache-file namein the Graph() call. Hopefully this will not hit to many people since my hunch isthat few people uses the rotate function and it's very easy to fix those scriptthat does so.Bug Fixes:* [michael@anthon.net] Corrected behviour of accumulated bar graph so it nowdiffrentiate between the accumulated positive and negative values.* [marko@fly.srk.fer.hr] Fixed Max() calculations for accumulated bar graphswhere my original code was a little bit sloppy. (I simply took the max foreach plot and added those and this might be more then the real maximum.)* [m.purgar@extracom.de] Spotting an incorrect "jpg" in the image where it shouldhave been "jpeg"* [adam.blomberg@euroseek.net,patrik.johansson@euroseek.net] 3D-Pie fillingproblem for small slices due to the discrapency between GD arc() and theJpGraphs purely mathematical definition of an ellipse.* [delorme.maxime@free.fr] 2D-Pie Floodfill might "escape" for very small values of slices.* [et.al] Improved handling of 0:s vs "" values. This was necessary since PHP treats0 as "" the same in a number of situations and JpGraph needs to diffrentiate thesetwo cases. This caused 0 data values to be treated as null values and not be inludedin (for example) autoscaling consideration.Additions:* [me] Added new global constant USE_CACHE which makes it possible to disablewriting to the cache even if a filename is supplied in th Graph::Graph() method.* [me] Added LinePlot::SetStyle() to make it possible to make dashed, dotted etclineplots. (See example1.2). Also adjusted legend to display the same style inthe legend.* [michael@anthon.net, me] Added client side image maps for all types of barsand 2D pies with possibility to have the actual value shown in an ALT-tag.* [me] Added drop shadow (or rather "right-up" shadow) to bar graphs BarPlot::SetShadow()* [me] Added possibility to have the actual value of bar graphs displayed at top of graphsvia BarPlot::ShowValue(), BarPlot::SetValueFont(), SetValueMargin(), SetValueColor()The format of the value is specified according to standard C printf() string formattingi.e. "val=%d" will for example print a string "val=13"* [me] Added possibility to adjust brightness and contrast for background imagevia the Graph::AdjBackgroundImage() method.* [me] Added possibility to adjust brightness and contrast in the finished imagevia the Image::AdjBrightContrast() method.* [me] Added possibility to just generate an image to a file and not streamit directly back to the browser. Added parameter $aInline to Graph::Graph()* [me] Added timout for cache, i.e if the image in the cache is older thenthe specified number of minutes (=0 never re-generate, -1 always regenerate)then re-generate the image. Just specify a timeout in minutes with a call:$mygraph->cache->SetTimeOut(10)* [me] Added possibility to use logarithmic scale for SpiderPlots. This also resultedin a little bit of internal cleanup in jpgraph_spider.php.* [me] Added SetWeight() method to class Ticks() for control of line thickness for ticks* [me] Added SetMarkColor method to class TIcks() which lets you specify differentcolors for major and minor tick marks.* [me] Added method RelTranslate() to LinearScale() and LogScale() classes which is usedin Spider class. This makes a world to screen relative translation.* [me] Added possibility to link data points in a scatter plot with linesby the addition of method ScatterPlot::SetLinkPoints()* [me,john.milne@one2one.co.uk] Added possibility to have individual colors ofbars in bar graphs by having BarPlot::SetColor() accept an array as argument.* [sergio@alsernet.es] Make it possibly to have x-tick labels to consist of two linesby inserting a "\n" separator in the text.* [CK1@wwwtech.de] Adding JPEG quality setting. This is done by addinga method SetQuality() to the img class. After creating a graph this can thenbe used as $mygraph->img->SetQuality($some_qvalue).Currently this only affects JPEG images.* [delorme.maxime@free.fr] Possibility to use different grace value for top and bottomof graph and not just a single value as in 1.2.2Changes:* [me] Changed group/permission handling for created files to better adjust itselfto the way the local Apache user is setup* [me] The default for spider graphs is now NOT to be filled* [me] Allow all datapoints to be 0 which will set the scale to [0,1]* [me] Removed the need for a DIR_BASE variable[29-Apr-2001] JpGraph 1.2.2===========================Bug fixes:* Removed reference to non-existent property 'bypass' in class RotImg* Changed to allow the last X-gridline to be drawn (comparison with limit was '<'where it should have been '<=' )Additions:* Added possibility to use background image* Added possibility to use approximate color through the "USE_APPROX_COLORS"constant* Handling of diffrent form of "null values" for line graphs. An y-valuecan now be "" or "-". In the first case (a true null value) this markwill cause a disruption in the line graph to indicate that the valueis undefined. In the other case specifying the value as "-" will causethe value to be ignored bu the line will still be drawn between theprevious data point and the following. Neither of these cases will haveany mark drawn.* Added a fatal warning when no more colors can be allocated for the chosengraphic format.Changes:* "Downgraded" anti-aliasing algorithm to use fewer color levelsin the transition to avoid using up to much of the color palette* Cleaned up some of the code to not rely on PHP default initializationof variables. This will help those who have got warnings when theyhave had all error reporting enabled in php.ini (E_ALL)* Legends now show the plot mark (if defined) instead of just a square ofthe right color.Acknowledgements:* Thanks to kevin@pricetrak.com for suggesting the treatment ofpure NULL values.* Thanks to luca_n@hotmail.com for getting my attention to the warningscaused by relying on PHP default initialization of variables.(My installation had E_NOTICE disabled, hence I never got those warning myself.)[29-Mar-2001] JpGraph 1.2.1===========================Bug fixes:* When min and max values for autoscaling was equal this resulted in trying to calculatelog10(0) = INF resulting in an infinite loop in LinearTicks::Stroke()* When autoscaling was used with only one data point it tried to calculate log10(0) = INFresulting in an infinite loop* fopen("xxx","r") should be fopen("xxx","rb") causes problems on windows system with IIS5* JPG streaming function was incorrectly called "imagejpg" should be "imagejpeg" (see the difference?)* Non existent color name in jpgraph_pie.php* Removed all deprecated forced references in function calls* The width of the surrunding box was not calculated correctly for internal bold fontAdditions:* Color themes for pie graphs* Beta release of 3D pie graphs* Added DIR_BASE as constant to make it possible to use one system wide copyof JpGraph. NOTE: This must be set to the directory where JpGraph is installed.Acknowledgements:* (ck1@wwwtech.de) (and a russian guy which I unfortunately lost the name of)for reporting the imagejpg spelling mistake* (ales.gregor@zps.skoda-auto.cz) for finding the binary file problem with IIS* Several people have reported the problem with autoscaling when all Y-valueswere equal. Thanks to you all for acting as my privet QA team![18-Mar-2001] JpGraph 1.2=========================Additions:----------* Added "BRAND_TIMING" which give possibility to brand each image generated withthe time (in ms) it took to generate the image.* Added Gradient Fill for bar graphs, The gradient fill allows 6 different styles.* Added Anti-aliasing for lines. Note drawing anti-aliased lines is 7-10 timesslower then "normal" lines!* Added full TTF support. this means an internal SC break (Source Code Break). Normal JpGraphscript should not be affected if you have used only publized "public" frunctions. The SC break isto allow uniform treatment of both internal fonts and TTF. This has been achieved by changingthe parameter list for SetFont(). However, backward compatibility with the old naming conventionsfor internal fonts are kepot, e.g. SetFont(FONT1_BOLD) still works but is deprecated and will notbe valid from 2.0* Added possibility to control font for title of Spider Axis through the addedproperty 'title' to the axis in the spider graph.* Added 'SetColor()' in pie graphs as a shortcut to SetMarginColor() to set the background color* Added possibility to draw X-axis labels at arbitrary angle. Internal fonts only supportshorizontal and verical.* Added possibility to draw boxed text at an angle* Added possibility to have different colors for axis and the labels on the axis by the additionof extra parameter to SetColor()* Added 350 more named colors.* Added canvas "fake" graph to make it easy to draw arbitrary graphics* Added SetCenter() method for line graphs.* Added SetGrace() for autoscaling purposes.Changes:--------* If you use a text-scale for X-axis the default labels now start at 1 instead of 0 since this isactually a counting scale and it makes more sense to start at 1.* Improved handling of bar-graphs with negative values.* Updated existing examples to use new format for SetFont()* Made it a critical error to specify a non existant font* Changed so that orientation for Text() is now given as an angle, i.e. SetOrientation(45). Oldstyle of using SetOrientation("v") (for vertical) is deprecated. But will work until V2Bug fixes:----------* Improved handling of computational effects on small values in scaling where a rounding error might cause thelast label not to be drawn.* The position for the title of X-axis could in some cases be slightly different in firstand second pass due to incorrectly determination of the X-axis labels font height.* Specifying an minimum Y-value for Y-axis on bar graphs could on rare occasions (combinationof scale values and specified density of autoscaling ticks) cause a gap between the bottom ofeach bar and the X-axis.[18-Feb-2001] JpGraph 1.1=========================Additions/Changes:------------------* Added Spider graphs* Added Pie graph* Added Scatter (and impuls) graphs* Added possibility to rotate plots an arbitrary angle* Added step style rendering to lineplot* Added Breseham circle drawing which gives better visual apperancethen the built in Arc() in GD (on the expense of CPU and performance)* Improved Polygon and Rectangle drawing so that it will use line weight settings* Improved the visual appearance of lines with weight>1 by correctly calculating(angle wise) the endpoints and using a filled polygon to draw the line.Unfortunately it would require some real improvements in the GD library to really improvethe visual appeance of lines with weight>1. This is as good as it gets without writinga low level pixe-by-pixel correct plotting. With my method you get it to look visuallyaestethic right in 90% of the cases with just 10% work.* Added MARK_FILLEDCIRCLE as new mark type. Note that due too the poor performance of thebasic Arc() image primitive in PHP4 the circles isn't perfect circles, they tend to be aa little bit flat at multiples on PI/2.* Added the possibility to have a separate fill- and line- color for marks* Moved Class PlotMark from jpgraph_line.php to base in jpgraph.php since this class is also usedwith scatter plots.* Made it a critical error to try to use Text X-scale with specified X-data points.Previously no warning was given for this non-defined state. (Using text scale with specifiedpoints really doesn't make sense.)* Made it a critical error to use unknown color rather than silently replacing it with black.* Updated documentation to reflect added capabilityBug fixes:----------* Fixed minor bug in Line() in which it didn't update the last point for use withsubsequent LineTo() calls (forgotten $this->)* Eliminated assumptions in DashedLine() that x1<=x2 and y1<=y2 eliminates thepotential pixel overshoot.* Fixed a serious bug in Line plot when used with a specified X-scale (not the normal default)since the X-coordinate wasn't read from the correct vector!* Fixed a serious bug whe using as specified X-scale since the maximum value for a plotwasn't correctly passed to the autoscaling.Note: The reason that these two bugs haven't been discovered previously is the factthat my test specs didn't include test cases to do with specified X-axis (I almost never ever use that).This has now been corrected and added to the test suit.* Fixed so the possible box around the plot area correctly honours the weight specified for it.[05-Feb-2001] JpGraph 1.0=========================* Initial release.[EOF]