$Id: README,v 1.60 1992/09/05 04:35:12 pturner Exp pturner $

Fri Sep 04 21:02:15 1992

(C) COPYRIGHT 1991, 1992 Paul J Turner
All Rights Reserved

XVGR IS PROVIDED "AS IS" AND WITHOUT ANY WARRANTY EXPRESS OR IMPLIED. THE
USER ASSUMES ALL RISKS OF USING  XVGR. THERE IS NO CLAIM OF THE
MERCHANTABILITY OR FITNESS FOR A PARTICULAR  PURPOSE.

YOU MAY MAKE COPIES OF XVGR FOR YOUR OWN USE, AND MODIFY THOSE COPIES.
YOU MAY NOT DISTRIBUTE ANY MODIFIED SOURCE CODE OR DOCUMENTATION TO USERS 
AT ANY SITES OTHER THAN YOUR OWN.

Xvgr Release 2.09

This is xvgr Release 2.09, a plotting tool for workstations using the
X Window System. Source code is available via anonymous ftp to 
ftp.ccalmr.ogi.edu [129.95.72.34] in /CCALMR/pub/acegr/xvgr-2.09.tar.Z.
Xvgr requires the XView toolkit, release 2.0 or 3.0.

A compiled binary for Sun SPARC is in xvgr-2.09/examples/xvgr. Run 
the script 'dotest' for a demo (see the file README.ex in the examples
subdirectory about the particulars of the script). You might let me 
know about problems you may encounter running the demos. Some of the 
demos are for color systems only and will not draw meaningful graphs 
on mono or grayscale systems.

I wish to thank all those who have participated in the development of 
xvgr by supplying bug reports, fixes, and comments.

Some of the following refer to xvgr v2.08 - as 2.08 was never announced
officially, they are repeated here.

To build xvgr, edit the Makefile and type 'make', or use the Imakefile.
I don't use the Imakefile generated Makefile in the course of development
so there are probably problems with it.

Note:

    * If you are using filled bars in barcharts, there will be problems
	with the specifications of fills in parameter files written with 
	2.07. The diagnostic is that the bars will not be filled. The 
	fix is to edit the parameter file and replace lines of the form:

	s0 fill 0

	with:

	s0 fill 1

	This will need to be done for each set that has a fill defined.

Bugs fixed:

    * Hopefully, the -R3 flag is gone for good - xvgr should run just fine
	under most anything. There is a -bc flag that prevents the graph
	from being drawn twice on startup when using XView 2.0/X11R4/OW 2.0.
    * There were several problems with getting the dimensions of the canvas
        that generated Infs in the locator display and other weird effects.
    * Degenerate viewports created with the mouse led to infinite loops.
    * Commands using the GRAPHS and SETS tokens were not working.
    * There have been XOR problems - this shows up as invisible rubberband 
	and no visible graph focus markers. The fix is to use an invert
	write mode selectable from the command line or by setting an xvgr 
	resource - Xvgr.DrawInvert: True - in a .Xdefaults file individually
	or globally through the application default file.
    * At 2.08 the legend popup had some bad xv_sets(), didn't peep on
	our systems. but others complained of core dumps.
    * Fixed log plots. There are a couple of things to note:

	1. The major tick spacing should be in integer values.
	2. The minor tick spacing works as follows:
		a value of 0 - draw a no minor ticks
		a value of 1 - draw a minor tick at each decade
		a value of 2 - draw a minor tick at decades 2, 4, 6, 8
		a value of 3 - draw a minor tick at decades 3, 6, 9
		a value of 4 - draw a minor tick at decades 4, 8
		a value of 5 - draw a minor tick at decade 5
	3. Minor ticks are not drawn at integer powers of 10.
	3. There are no provisions for drawing labels at other than
		integer powers of 10. I'm considering using fractional
		values of the major tick spacing to do this. Say
		a major tick spacing of 1.1 would mean label every 
		magnitude and every decade. 1.5 would mean label
		every magnitude and decade 5 only.
	4. Scrolling in any direction or in and out is not implemented.
	5. Use the tick label skip parameter to draw tick labels
		when the scale covers many magnitudes but minor ticks
		are desired at every magnitude.

	Please avoid throwing negative numbers or 0 at log graphs,
	there is little checking done for these values.

Additions/changes:

   * Added double click functions. Double clicking to the left of the
	current graph brings up the View/Ticks-tick labels popup with
	the axis to edit set to the Y-axis. Double clicking below the
	graph brings up the popup for the X-axis. Double clicking above
	the current graph brings up the popup for the title and sub-title.
	DC'ing to the right of the current graph brings up the View/Legends 
	popup. DC'ing inside the current graph brings up View/Symbols, set
	to edit the set nearest the pointer when the DC was made.
	DC'ing inside a graph with no sets will bring up the File/Read sets
	popup.

	Note that if the graph focus policy is set to FOLLOWS, this stuff
	may not work very well in a multiple graph session.

   * Removed the limitations on the number of sets and graphs. There is not
	much support in the user interface for directly manipulating
	sets beyond 30 (the default maximum) - but with the toolbox
	of point & click ops mentioned below, useful things can be done
	besides display only. I'll probably add a 'pick' selection in
	the transformations, and a pick selection in View/Symbols.
	There is no support for legends beyond 30 sets. There is no direct
	support for graphs beyond 10 (g9, actually) - but with the notion
	of a current graph, this is less a problem.

        There are resources settings, parameter settings, and command line
	settings for changing number of sets and graphs.

   * Added a popup that allows all the legends for the first 30 sets
	to be edited at the same time, see View/Legends/Edit... The
	legend label item in the symbols popup remains.

   * Added a popup to set page layouts - this should give a more
	WYSIWYG appearance. Support is for 8.5x11.5 inches, my apologies
	to those users of A4 sizes - it's in the works.

   * Added a timestamp string.

   * Added non-linear curve fitting. This should be considered a prototype.
	The engine is lmdif1.f from minpack (available from netlib) and
	is the routine that does not require an analytic Jacobian.
	Presently, the routine will fit a function with up to 10
	parameters (should there be more?). It is not quite finished,
	the Eval... button does nothing (I see this as a way of visually
	fitting the curve). Not much in the way of diagnostics are printed.
	There is a demo in examples (cd to examples and run ./xvgr logistic.d).
	There is no support for constrained problems. The code was converted
	from Fortran to C using f2c from netlib.

	I'd appreciate any feedback you might have on this feature. Should
	I be using a different engine? NL2SOL? Others? Got one that handles
	constrained problems? What kind of diagnostics should be printed?
	This routine may not survive, as I'm not sure I want to support it.

   * Added a prepend/append string item in View/Ticks/Tick label props
	to allow a string to be added in front of or at the end of the
	tick label.

   * Added a toolbox of point & click set operations, this is a preview
	of future revisions to xvgr. I'd like to extend this to the
	tools in Transformations also.

   * Added a cross hair cursor, turn it on in View/Draw options - thanks to
	Marc Evans evans@zk3.dec.com for supplying the prototype code.

   * Added horizontal bar and stacked bar charts. As with bar charts,
	use the View/Symbols/ Fill selections to set the patterns and 
	colors for filled bar charts.  Set fill to anything but None.

   * Added an InvertX and InvertY selection in View/Invert[X-Y]. These
	2 items negate the data and the axes scaling - there are problems
	with underflow if 0.0 is a tick label (comes out -0.0). Any data 
	read after the application of InvertX/Y will need to be negated also.

   * Added a box that may be optionally drawn around the legend - either
        filled or unfilled.

   * In Edit/Points/Add points, there is a 'paint' mode that allows points
	to be placed on the canvas by holding the left mouse button down and
	moving the cursor along the line the points are desired.

   * The nxy format now allows 30 columns, and multiple sets of nxy data may
        be read from the same file (using a '&' in the first column to separate
        the sets.

	So,

	1 2 3 4
	5 6 7 8
	9 8 7 6
	&
	1 2 3
	4 5 6
	7 8 9
        8 9 10

	if read in as nxy data, will generate 5 ACE/gr data sets.

    * Added a new auxillary program to convert old style xvgr and grtool
	parameter files to the new format. Look in aux/cnvparm.c - doesn't
	do everything as yet, but should convert titles, world scaling, 
	viewports, axes labels.

    * Every popup that writes a file will now accept a directory, if a
	directory is found, then a chdir is performed.

    * The current directory is displayed in the title. The display name and 
	time the right footer was last changed is displayed in the right 
	footer.

    * Added -noauto to suppress autoscaling - some customers are using
	imbedded parameters to set the axes scaling and the autoscaling done
	on startup was colliding with these settings.

    * Incorrect command line parameters now cause the usage() message to be 
	printed and xvgr halted.

    * Added Activate/Deactivate popups in Edit/Set ops. Use these to force
	xvgr to ignore sets without having to Kill them.

    * Cut down the number of colors allocated to 17.

    * Strings previously defined may now be referenced directly from the
	command interpreter, or imbedded parameter settings. Syntax is

	with string N

	Where N is the number of the string (you need to know which string
	it is).

    * Some resources for a .Xdefaults file - here, set to the default values.

	! Use GXinvert rather than GXxor for rubberband lines
	! if the rubberbanding for zooms and lines, etc. doesn't
	! appear on the canvas, set the following resource to yes.
	Xvgr.InvertDraw: no
	! do backing store if the server doesn't
	Xvgr.Backingstore: no
	! do the inital draw in the refresh() proc
	Xvgr.InitialDraw: 0
	! reverse the color indices for black and white
	Xvgr.ReverseVideo: no
	! Set the number of sets for each graph
	Xvgr.MaxSets: 30
	! Set the number of graphs for each session
	Xvgr.MaxGraphs: 10
	! Set the number of colors to allocate
	Xvgr.MaxColors: 17
	! Verify Edit/Set ops/Pick sets operations
	Xvgr.VerifyAction: no
	! Autoscale after reading a file from Files/Read sets
	Xvgr.AutoscaleOnRead: no

Problems and works in progress:

  * Sort sets only operates on sets of type XY
  * Region operations only work on sets of type XY
  * There appears to be a problem with the colors used for lists in 
	xvgr compiled with XView 3.0. This will show up in the file
	lists and the command interpreter - don't know how to fix it
	yet.
  * The Symbols and Legend popups still need a facelift.
  * Log plot major tick spacing needs to be in terms of magnitudes.
  * Changing to PostScript fonts has led to problems with the mapping
	of Greek and special characters (Hershey fonts are still used
	for on screen text). I've tried to adhere to the PostScript
	collating sequence for Greek characters - I've not got to the
	special characters yet, so this remains a problem. There is also
	a difference in size between the Hershey and PostScript fonts
	that leads to problems in getting WYSIWYG hardcopy.
  * The fills and patterns drawn on the screen and the .mif output are
	not matched in the PostScript output. I know how to do it,
	but I haven't found the time.
  * Changing directories in the File/Read... popups does a chdir,
	therefore, if you write a file from xvgr, it will be written
	in the new directory.

Comments and bug reports to:

pturner@amb4.ccalmr.ogi.edu

Due to time constraints and the volume of mail, I can't promise that
I will be able to reply.

Paul J Turner
