===============================================================================
    
    #     #                  #####
    ##    #  ######   ##### #     #  #    #    ##    #####    #####   ####
    # #   #  #          #   #        #    #   #  #   #    #     #    #
    #  #  #  #####      #   #        ######  #    #  #    #     #     ####
    #   # #  #          #   #        #    #  ######  #####      #         #
    #    ##  #          #   #     #  #    #  #    #  #   #      #    #    #
    #     #  ######     #    #####   #    #  #    #  #    #     #     ####

		Bringing the Power of Java to all Web Authors

===============================================================================


			CHANGE HISTORY


Version 1.0 (1 Feb 1996)
-----------

The first public release, including an easy-to-use HTML interface 
supporting Barcharts, Piecharts, XY Charts, and Diagrams.


Version 1.1 (15 Mar 1996)
-----------

Developer Documentation was generated to allow the extension of most 
objects by Java developer.

License control features were modified to allow a longer time before the
Demo banner is displayed.  This compensates for slow applet loading 
times over low bandwidth links.

Dwell labels were added to all applets, displaying an appropriate data 
value when the cursor "lingers" over a data area.


Version 1.2 (15 Apr 1996)
-----------

The NFBoxchartApp class was added supporting display of "Box and Whisker"
graphs.  See NFBoxchartApp for details.

A new border type of BOX was added to NFRegion, supporting an outline
border type of the given width.

The GraphLayout parameter was added to the NFBarchartApp, allowing the
designation of either VERTICAL or HORIZONTAL barcharts.

All applets were enhanced to allow them to be imbedded within a 
standalone Java application.  See the StandAlone Applications 
documentation in the Developers Package for more details.

All applets were enhanced to allow them to process parameter definitions
that are generated asychronously by a Parameter Server located on the
server from which the applet was launched.  See NFParam and the applet
documentation for details on how to specify a server connection in 
either an HTML document or from within an application.

The number of objects documented in the API documentation (Developer's 
License) was increased to include all major objects used by NetCharts.

The class licensing scheme was modified to include additional 
information. If your license no longer works, please send email to 
NetCharts@pittelli.com and give your registered IP addresses.  We will 
generate a new license file for you and send it out via email.


Version 1.3 (15 May 1996)
-----------

Axis Tic Spacing
----------------
An optional "step" value can be defined following the "min" and "max"
fields in the BottomAxis, TopAxis, LeftAxis and RightAxis tuples.  If
no step is given, the tic spacing will be determined automatically.  
Otherwise, the given step value will be used.  For example, the 
following definition will generate a tic label every 20 values from 
-100 to 100 along the bottom axis:

	BottomAxis = (black, "TimesRoman", 16, 0, -100, 100, 20);

Axis Color
----------
An optional "color" value can be defined for the axis, following the
"step" value.  It will be used to generate the axis line and tic marks.
For example, the following specifies a green axis, with black labels:

	LeftAxis = (black, "TimesRoman", 16, 0, -100, 100, 20, green);

Axis Tic Labels
---------------
The following parameters have been added to allow you to specify
arbitrary text labels for all axes (much like BarLabels in the 
BarChart):

	BottomLabels
	RightLabels
	LeftLabels
	TopLabels

Each parameter accepts a vector of labels, separated by commas.  The 
number of labels given in the list overrides any step size defined in
the corresponding axis definition.  For example, the following 
definition defines a BottomAxis from 0 to 100, with 4 labels located 
at 0, 25, 50, 100.

	BottomAxis = (black, "TimesRoman", 16, 0, 0, 100);
	BottomLabels = "5/1/96", "5/2/96", "5/3/96", "5/4/96";

This allows an axis to display any data value format.


Version 1.4 (1 Aug 1996)
------------------------

Applet Snaphots
---------------
The NFSnapshotApp and NFSnapshotServer objects have been added to 
generate snapshots of HTML documents that contain any number of Java 
applets.  For each named applet in the HTML document, the applet image 
will be saved to a temporary file on the Web server as a GIF file.  
Additionally, the entire HTML document will be copied to a temporary 
file on the Web server, replacing each named applet by a reference to 
the corresponding GIF file. Finally, the snapshot is displayed in a 
separate browser window, which allows the user to view the document 
further or print it using the standard browser capabilities.

See the NFSnapshotApp and NFSnapshotServer documentation for additional
details.

NOTE: The NFSnapshotApp applet uses some public domain class files 
provided by ACME Labs (www.acme.com) which must be accompanied by
the following notice:

	Copyright (C) 1996 by Jef Poskanzer <jef@acme.com>.  All rights 
	reserved.

	Redistribution and use in source and binary forms, with or 
	without modification, are permitted provided that the following 
	conditions are met:

	1. Redistributions of source code must retain the above copyright
	   notice, this list of conditions and the following disclaimer.

	2. Redistributions in binary form must reproduce the above 
	   copyright notice, this list of conditions and the following 
	   disclaimer in the documentation and/or other materials 
	   provided with the distribution.

	THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS 
	IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
	LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
	FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT 
	SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
	INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
	DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 
	BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 
	LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
	(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 
	THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
	SUCH DAMAGE.

	Visit the ACME Labs Java page for up-to-date versions of this 
	and other fine Java utilities: http://www.acme.com/java/


Packages
--------
All NetCharts objects have been organized into the following set
of packages:

	netcharts.graphics
	netcharts.util
	netcharts.snapshot

The applets are NOT included in a package, in order to reduce the
complexity associated with specifying an applet in the <APPLET> tag.
That is, the same <APPLET> tag can be used, because the applet objects
are stored at the top level in the classpath directory.

When overwriting a previous version of NetCharts, you should delete
all previous class finals and replace them with the class files in
this distribution, as well as the sub-directories contained in the
classes directory.


Licensing
---------
The licensing scheme was replaced by one that displays an initial banner
if no valid license is found.  This eliminates any potential problems 
associated with the background thread used to display a banner after a 
given period of time.  Furthermore, it allows evaluation copies to 
display charts for as long as necessary.


Max Data Sets
-------------
The Barchart, Boxchart and XYChart objects now support a maximum of 20 
data sets.


Warning Messages
----------------
If any chart is displayed in an area that it is too small to properly
display either the legend box or the graph or both, then a warning 
message is printed on the Java Console.


Lots of Colors
--------------
A new low-level class has been defined to support color names, with over
100 specific names.  These names can be used in any parameter definition
that requires a color name. Additionally, colors can be defined using
hexadecimal notation such as xRRGGBB where the 'x' is mandatory. See the
NFColor documentation for a list of all of the color names supported.


Start/Stop
----------
NetCharts now utilize applet start/stop calls.  In particular, this 
change affects the threads managing parameter servers and dwell timers.
Whenever an applet is "stopped" by the browser, NetCharts will
automatically terminate any open parameter server connections and will
stop dwell label processing.

This also means that stand-alone applications that imbed NetCharts 
applets must call the applet start() method before they will display 
themselves


Dwell Label Display
-------------------
Unlike previous versions, where dwell labels were generated 
automatically, dwell labels are now shown ONLY IF the 
DwellLabel and DwellBox parameters are defined. This increases 
performance for those applications that don't require dwell labels.


ActiveLabels
------------
Dwell labels can now be defined for each data value (as opposed to using
the data value itself).  The ActiveLabels[1-20] parameter defines a list
of active labels that correspond to data points in the data set.  (e.g. 
ActiveLabels2 corresponds to DataSet2). Active labels are shown only if 
the DwellLabel and DwellBox parameters have been defined.  If the data 
label is not defined, a default label will be used.

For each label, you can optionally specify a "label", "url", and 
"target".  If "label" is not specified or is "", the data value will be 
displayed as the label.  If "URL" is specified, the given document will 
be displayed when the user clicks the mouse over the label. (See 
ActiveClicks). If no "URL" is specified, the URL previously specified in
the list will be used.  If "target" is specified, the document specified
by the URL will be displayed in the given browser window or frame. 
Otherwise, the document will replace the current document.

For example, consider the definitions for a bar chart:

	DataSet1      = 1, 2, 3, 4;
	ActiveLabels1 = ("Oranges, "orange.html", "NewWindow"),
			("Apples", "applets.html"),
			("Pears",  "pears.html"),
			("Grapes", "grapes.html");

In this case, the bar with value "1" would display the "Oranges" label 
when the mouse cursor dwells over that bar.  If the mouse is clicked
on that label, the "orange.html" document would be displayed in the
window or frame named "NewWindow".

The ActiveClicks parameter can be used to specify the number of
clicks needed to activate a URL assigned to an ActiveLabel.

See examples/Barchart9.html and examples/Piechart8.html for an
example of how to use ActiveLabels with various documents and
target windows.


AddDataPoint
------------
The AddDataPoint parameter was added to improve performance for 
parameter server driven XY charts.  This allows the XY chart to be 
updated by one or more points at a time, rather than updating the entire
data set.  The syntax is:

	AddDataPoint = (<datasetnumber>,<x>,<y>,<label>,<url>,<target>);

where <datasetnumber> identifies the dataset to add the point to, while 
<x> and <y>y identifies the location of the data point.  The 
<activeLabel> and <activeURL> fields (described above) are optional.  If
a few points are to be added at once, the tuples may be comma separated 
as in:

	AddDataPoint = (1, x1, y1), (2, x2, y2);
  
which would effectively add the point (x1,y1) to dataset 1 and (x2,y2) 
to dataset 2.  

Note that the AddDataPoint parameter is intended for use within a 
parameter server command stream and should be sent by itself, followed 
by the Update command.


Bar3DDepth
----------
The Bar3DDepth parameter was added to NFBarchart in order to specify 
the pixel depth for the 3D bar effect.  A value of -1 (the default) 
indicates the default depth should be used, while a value of 0 means no 
depth, and values greater than 0 display the appropriate depth.


loadParams() Interface
----------------------
When calling loadParams() from another applet or a standalone 
application in order to modify the parameters of any chart, it is now 
necessary to execute an "Update" command via the loadParams() method in 
order to update the chart properly. Use of the display() method should 
be discontinued, although it is still supported for backward 
compatibility.  This makes API and Parameter Server processing 
identical, thereby reducing confusion.


Version 1.5b1 (10 Sep 1996)
---------------------------

Area Curves
-----------
A FillColor attribute has been added to the DataSets parameter of the XY
Chart.  If defined, the area under the curve represented by the given 
data points will be filled with the given color. In such cases, each 
successive X value must be greater than or equal to the previous value.
This attribute can be combined with the symbol and line attributes
to yield a wide variety of XY charts.  See XYChart7.hmtl in the examples
directory for an example of how to use the FillColor attribute.


Snapshots
---------
Snapshot generation performance has been significantly increased, with
a 2-5 fold speedup depending on the platform(s) used for the applet
and the server.  As a rough estimate of the time required, here are
the performance figures for generating a snapshot of an HTML file
that contains an HTML table and a 400x400 piechart:

	Browser				Server	 		Time
	--------------------		-------------------	---------
	Netscape3.0, Solaris, Sparc5	Solaris, Sparc5		18.5 secs
	Appletviewer, Solaris, Sparc5	Solaris, Sparc5		17.5 secs
	Netscape3.0, Win95, Pentium90	Solaris, Sparc5		 4.8 secs**
	Appletviewer, Solaris, Sparc5	Win95, Pentium90	15.9 secs

	**The Borland AppAccelerator in Netscape 3.0 really works.

	NOTE: The network used was a 10Mb/sec ethernet.  The Sparc5
	had 48Mb RAM and the P90 had 16Mb RAM.

A parsing problem associated with the ButtonLabel parameter has been
fixed, allowing registered users to define the label to be used in the
snapshot button.  Furthermore, the layout format has been changed so
that the button always fills the entire applet area defined for the
NFSnapshotApp applet.

The NFSnapshotApp incorrectly ignored all attributes found within any
HTML tag.  The problem has been eliminated.

The NFSnapshotServer correctly uses '\' or '/' as necessary when 
generating HTML and GIF file names for snapshots.


Symbol Type NONE
----------------
A new symbol type of NONE has been added to allow the display of
area curves without symbols for each data point.  This does not affect
the DwellLabel or ActiveLabel processing in any way.


Insufficient Display Problem
----------------------------
A NullPointerException which occurred whenever a chart had insufficient
room to display the entire graph has been fixed.  In such cases, a
warning message is printed on the system console, and the graph is not
drawn.


Parameter Errors
----------------
The parameter parser has been modified to show the current parameter
being processed when a parsing error occurs.  This greatly facilitates
the debugging of Parameter scripts embedded in HTML.  Furthermore,
the output generated by the parser has been made more readable, eliminating
the unnecessary stack trace.


Dwell Labels
------------
It is no longer necessary to define a DwellBox in order to have a
DwellLabel displayed.  That is, you can specify a DwellLabel without
any box and they will appear.


Version 1.5b2 (29 Oct 96)
-------------------------

Snapshot Processing
-------------------
The NFSnapshotApp and NFSnapshotServer have been enhanced to allow the
specification of a filename prefix to be used when saving a given snapshot.
The FileName parameter can be used to designate the specific web server
filename to be used by NFSnapshotServer when saving the html and gif files
for a given snapshot.  When the FileName is specified, the files ARE NOT
automatically deleted after being displayed.  If no FileName is given,
the NFSnapshotServer will generate a temporary filename in the directory
specified on its command line and the temporary files will be deleted when
no longer needed.

If the StatusFrame parameter is defined, then a separate frame will be
displayed to show the status of the snapshot processing.  This is useful
to inform the user about background processing.

If the TargetWindow parameter is set to "NONE", then the resulting 
snapshot WILL NOT be displayed in a browser window.  This provides 
support for applications that want to save snapshot files (using the 
FileName parameter) without viewing or printing them immediately.


Snapshot Utility
----------------
The NFSnapshotUtil application has been created to faciliate the generation
of snapshots outside of a Web browser.  It accepts one or more file names
or URLs on its command line and then automatically generates a snapshot
for each input file.  The output files are named using the same name as
the input file name and are stored in a designated output directory.
See doc/NFSnapshotUtil.html for details.


Default Colors
--------------
The ColorTable parameter has been added to all charts to specify
a vector of default colors.  These colors will be used whenever
a color value is not defined within a given parameter, depending
on the chart.  If the ColorTable parameter is not defined, a system
default table of 10 colors will be used.

Default colors are used if a color attribute is not defined in
a parameter or if the special color name "null" is assigned to
a color attribute.  The specific choice of color depends on the
specific chart parameter and attribute.

The following chart parameters support the use of default colors
and/or null color values:

	Applet		Parameter	Attribute
	-------------	--------------	-------------
	NFBarchartApp	DataSets	Bar Color
	NFBoxchartApp	DataSets	Box Color
	NFDiagramApp	Nodes		Foreground, Background
			Edges		Edge Color
	NFPiechartApp	Slices		Pie Color
	NFXYChart	DataSets	Symbol Color
					Line Color
					Fill Color

Autoscale Axis
--------------
Fixed a problem which prevented all axes from autoscaling properly when
a min and max value are not specified.  Also changed the algorithm so
that the 0 tic mark is always displayed when autoscaling and selecting
default tic locations.


Barchart Display Bugs
---------------------
Eliminated some barchart display bugs related to multiple data sets
in the ROWS format and improper tic marks in all HORIZONTAL formats.


Dwell Timer
-----------
The Dwell Timer is now started only if the DwellLabel parameter is
defined.  When dynamically updating the parameter definitions, via
loadParams() or a parameter server connection, if the DwellLabel string 
is set to "OFF", any current dwell processing will be stopped. In that 
way, DwellLabel processing can be dynamically enabled and disabled,
depending on application requirements.

Additionally, dwell processing no longer generates warning messages
when running within the Netscape Navigator.


Diagram Arrows
--------------
A new attribute has been added to the Edges parameter in the NFDiagramApp
that allows the user to specify the arrow style for each edge.  The following
styles are supported:

	NONE   - No Arrows
	FROMTO - Arrow from src to dest node (default)
	TOFROM - Arrow from dest to src node
	BOTH   - Arrow both ways

The Diagram applet has also been modified to update the display continuously
whenever one of the boxes is dragged to a new location.


Version 1.5b3 (30 Nov 96)
-------------------------

Documentation Revision
----------------------
The User's and Programmer's Documentation has been revised to include
more explanations of generic features supported by most of the charts.
The documentation now includes applet examples as well, to show specific
parameter settings.


Parameter Errors
----------------
Index information is now printed with an error message to indicate the
given item with a vector and the given attribute within a tuple that is
in error.


Date/Time Values
----------------
The data values in most charts can now be specified using date/time
values, including common date string expressions ("10 Apr 1996") and
relative time units ("2d 12h 30m").  All automatic axis features, such
as tic mark labeling, active label generation and autoscaling are supported
when using date/time values.

See $NETCHARTS/doc/Date.html for more details concerning the use
of date/time data values.


Time Chart
----------
A new chart has been created that allows users to specify one or more
data sets representing one or more tasks.  Each task is assigned a starting
and ending value, and is rendered as a box that extends horizontally from
the starting value to the ending value.  Optionally, each task can be
assigned a unique color (independent of the default color for the data set)
and a label, which is displayed inside of the task box.  Date and time
values are supported along the X-axis, both as input data values and when
generating axis and active labels.

See $NETCHARTS/doc/NFTimeChartApp.html for details.


Strip Chart
-----------
A new chart has been created that allows for efficient dynamic updates,
in which the data values are shown in a scrolling manner across the
display.  As new values are added to each data set, the entire display
is scrolled to the left, with the oldest values being discarded.  The Strip
Chart automatically shifts X-axis labels as necessary and re-computes
the scale of the Y-axis if desired.  The Strip Chart, as do all other charts,
supports the use of date/time expressions as both input values and for
the generation of axis and active labels.

See $NETCHARTS/doc/NFStripChartApp.html for details.


Combo Chart
-----------
A new chart has been created that combines the display of data sets in
a barchart format, with data sets using an XY line format.  The Combo Chart
supports up to 20 bar sets and 20 line sets, providing most of the features
supported by the Barchart and XY Chart applets.

See $NETCHARTS/doc/NFComboChartApp.html for details.


Axis Scrolling/Zooming
----------------------
All axes in all graphs have been modified to allow the user to scroll
between a given minimum and maximum value, as well as zooming in and
out, within those values.  The ScrollMin and ScrollMax attributes have
been added to the TopAxis, BottomAxis, LeftAxis and RightAxis parameters
to specify the absolute limits of those axes.  Both values must be
set in order for axis scrolling/zooming to be enabled and they should
be smaller and larger than the Min and Max attributes specified for the
same axis.

See $NETCHARTS/doc/Axis.html for more details concerning scrolling/zooming
of an axis.


Axis Format
-----------
The TopFormat, BottomFormat, LeftFormat and RightFormat parameters have 
been added to define the format type of the default labels (including
tic labels and active labels) for the Top, Bottom, Left and Right axes,
respectively.

See $NETCHARTS/doc/Axis.html for more details concerning axis label
formatting.


Axis Parameters
---------------
In order to reduce the number of attributes needed to be defined for
a given axis at one time (especially during dynamic updates), the standard
Axis parameters (TopAxis, BottomAxis, LeftAxis, and RightAxis) have been
replaced by a set of smaller parameters.  Each parameter can be specified
indepenent of the others, and if a given attribute is not defined, the
previously defined attribute value is used.  This allows dynamic update
servers to specify only those attributes that have changed for a given
axis.

For backward compatibility, the TopAxis, BottomAxis, LeftAxis and
RightAxis parameters can still be specified and they have the same semantics
as before.

See $NETCHARTS/doc/Axis.html for details concerning the various parameters
used to specify axis attributes.


Piechart
--------
A bug was fixed involving slice values that had fractional parts,
resulting in an incorrect total value and subsequently improper
slice angles.


LegendItems Parameter
---------------------
The LegendItems parameter was added to all charts, except NFDiagram,
supporting custom legend item definitions.  This parameter can be
used to override the default legend items created by each chart.

See $NETCHARTS/doc/Legend.html for more details.


Snapshot Utility
----------------
Added the -debug and -delay options to the NFSnapshotUtil application
to display license processing debug messages and to set a delay period
before creating an image for an applet being loaded, respectively.

The delay option should reduce the likelihood that applet images
are captured before the applet has initialized.

Also, license processing for the applets being snapshot has been
modified to search the CLASSPATH, as does the utility itself,
in order to find a valid license file.  In that way, if NFSnapshotUtil
finds a valid license, so will the applets contained in the HTML
file.  Previously, the applets attempted to access the NFLicense.dat
file using the CODEBASE, which may have contained an absolute Web
pathname, thereby preventing a successful search in the file directory.

See $NETCHARTS/doc/NFSnapshotUtil.html


Snapshot Applet/Server
----------------------
Fixed a problem related to blank spaces in the applet tag and
the generation of URLs with '\' in the generated HTML document.
Now, all HTML URLs are generated using the standard '/' file
separator.

Also, the -debug option has been added to allow the generation
of license processing debug messages.


Version 1.5 (20 Dec 96)
-----------------------

Error Message
-------------
An error message is now displayed on the screen if any parameter
parsing error occurs, reducing the need to refer to the Java Console.


Snapshot Utility
----------------
The -autoclose option has been added to automatically exit the utility
after the last file has been processed.


Axis Tic Marks
--------------
A round-off error for date/time values along an axis has been fixed.


Grids
-----
In all charts, the grid now defaults to off, unless specifically
enabled using the Grid parameter.  Also, Grid support has been added
to the Box Chart.

------------------------- End of CHANGE HISTORY ------------------------
