R E A D M E
Product Name: plot-widgets
Product Version: V1_1
Date (mm/dd/yyyy): 03/23/1998
--------------------------------------------------------------------------
ORIGIN
======
Authors
Mark Edel
Konstantine Iourha
Jeff Kallenbach
Joy Kyriakopulos
Paul Lebrun
Baolin Ren
George Dimas
Fermi National Accelerator Laboratory - Mail Station 234
P.O Box 500
Batavia, IL 60510
Internet: histoscope_support@fnal.gov
Fermilab Standard Government Sponsorship Notice
This work was performed at Fermi National Accelerator Laboratory,
which is operated by Universities Research Association, Inc., under
contract DE-AC02-76CHO3000 with the U.S. Department of Energy.
Acknowledgements
Thank-you to George Dimas for writing the original documentation and
Joy Kyriakopulos for subsequent edits.
--------------------------------------------------------------------------
TERMS AND CONDITIONS
====================
This software has been made freely available with a request for
collaborative input subject to standard Fermitools Terms and Conditions
given in full below.
--------------------------------------------------------------------------
PRODUCT DESCRIPTION
===================
The Histo-Scope Widget Set is a collection of six Motif widgets for graphing
and plotting. It features the high performance and screen stability
necessary for animation, and includes interactive controls for direct
manipulation with the mouse. The widgets were developed for an interactive
data browsing tool called Histo-Scope, but are very general and easy to
incorporate into other Motif applications.
The widgets include line plots, 2-D and 3-D scatter plots, 1 and 2 dimensional
histograms, and several specialty plots:
* Generic X vs. Y two-dimensional line/marker plot
* 2-dimensional (X vs. Y) scatter plot
* 3-dimensional (XYZ) scatter plot
* 1-dimensional (conventional) histogram, (also does adaptive histogram)
* 2-dimensional histogram (lego plot), (also does 2D adaptive histogram)
* Cell plot (alternative to 2D histogram representation)
Most of the widgets have some support for color, though not all have the
ability to color arbitrary elements.
The widgets are dependent on Motif, and on a few private routines in the
Motif widget set. (Mostly they rely upon Motif for Motif-specific behavior,
such as keyboard traversal and drawing shadows, though they also follow
Motif naming conventions and use XmStrings, so employing them outside of
the Motif environment would take some additional work.)
In addition to the widgets, the distribution kit contains a number of
additional utility routines for Motif programming, most of which are not
required for using the widgets. These are common among various tools
produced by our group, including the NEdit text editor, and are included
for your programming enjoyment, but are documented only by the source code
comments. They are also subject to radical change in future releases of
the widget set, Histo-Scope, and NEdit.
Documentation
-------------
The plain-text document, widgets.doc, in the distribution kit, explains
the resources and subroutine interfaces to the widgets. It is expected
that users already know how to use Motif and widgets in general.
Required Hardware and Software
------------------------------
The plot widgets kit contains Makefiles for the following systems:
DEC/ULTRIX
DEC/Unix
SGI/IRIX
Sun/Solaris
IBM/AIX
PC/Linux
The sources have been compiled and proven to work on these systems.
Graphics Support: X-based workstation or X-Terminal
Product Installation
--------------------
To install the Plot Widgets and build the example programs, make sure
you have the following requirements or prerequisites:
* a C compiler, include files for compiling and libraries for linking
* X11 include files and libraries
* Motif include files and libraries
For Unix systems follow these two steps:
1) Un-tar the source tar file. For example:
% tar xvf plot_widgets.tar
You will find the following source directories have been created:
util
plot_widgets
examples
2) Run the Makefile for the system you have, for example:
% make sgi
Makefiles are supplied to automate the building of the plot widget
library, the utility library, and the example programs on the following
systems:
sgi
dec
ibm
linux
solaris
sunos
ultrix
(The "dec" makefile is for Digital Alpha Unix systems, previously OSF-1).
These all run with the configurations, compilers, and operating
system versions that we have and support. It is possible that you
may have to modify the makefiles for your system if, for example,
your Motif libraries are located in a different directory than
the one assumed by the makefile or you want to build the plot widgets
for a system without a supplied makefile. If you want to look over
or edit the makefiles before trying the build, see the section on
Makefiles below.
Documentation describing the widgets and example programs can be found
in the file widgets.doc.
For VMS Systems, command files are provided for compiling and linking files
in all three source directories. comutil.com compiles the files in the util
directory and produces two library files, vmsutils.olb and libutil.olb.
comwidgets.com compiles the files in the plot_widgets directory, and
comexamples.com compiles and links the files in the examples directory to
produce the example executables.
Makefiles
---------
The makefiles in the source directories consist of two parts, a
machine-dependent part and a machine-independent part. The machine-
dependent makefiles contain machine specific header information and
invoke a common machine-independent part called Makefile.common. The
master makefile executes the machine-dependent makefile for each
source directory based on the machine-type you give it. So, for
example, if you type "make sgi" you will see something like
the following:
% cd util
% make -f Makefile.sgi clean all install
Each directory contains the following makefiles:
Makefile.sgi
Makefile.dec
Makefile.ibm
Makefile.linux
Makefile.solaris
Makefile.sunos
Makefile.ultrix
(The "dec" makefile is for Digital Alpha Unix systems, previously OSF-1.)
You may want to take a moment to look over the makefile for your system
and ascertain whether it correctly pertains to your system. Or use one
of these as a guide to create a Makefile for your own Unix system.
To add a new machine type or configuration, copy one of the existing
machine dependent makefiles and give it the name of the new system,
for example: Makefile.sony. Then, make any required changes in the
new makefile and create a target for your "sony" system in the top-level
makefile.
Each source directory has its own set of makefiles. The directories
should be built in the order listed below:
util - cross-project utility routines
plot_widgets - plotting widgets
examples - example programs
The utility and plot_widget directories build library files which are
used by the examples makefile.
If you find that the makefiles stopped with an error, it is probably
due to system variations such as a different location for Motif include
files or a different compiler. The system-specific makefile must then
be modified to correct the problem or, if necessary, the source files
themselves. If you need to start completely afresh in a source
directory, you can first type "make clean" which will delete all object
and executable files so that a subsequent make command will start from
the beginning.
On Solaris systems, expect a few warnings during the compilation of
Scat.c, Cell.c, XYDialogs.c, and many warnings during the compilation
of 2DHelp.xbm, 2DHistHelp.xbm, and 3DHelp.xbm.
The Source Directories
----------------------
The makefiles in the util directory build a library file called libNUtil.a,
which is used mostly for the example programs, but contains one module required
by all of the wigets. Unless you re-arrange the libraries, you will need to
include libNUtil.a in any link to use the plotting widgets. However, most of
the real widget code is in the plot_widgets directory.
The plot_widgets directory builds libPlotW.a, which contains the object code
for the widgets themselves. The directory also contains the include files
necessary to use the widgets in a program.
The examples directory builds two example programs for each widget: a simple
one, which just creates a widget with simple data, and a demo program which
exercises more of the features of the widget.
The makefiles in all three source directories consist of two parts, a machine-
dependent part and a machine-independent part. The machine-dependent makefiles
contain machine-specific header information and invoke a common machine-
independent part called Makefile.common. To compile the files in any of
these directories, issue the command: "make -f Makefile.<machine-type>"; where
<machine type> is one of the supported machine types. For example, on a
Silicon Graphics machine, you would type:
make -f Makefile.sgi
To add a new machine type or configuration, copy one of the existing machine-
dependent makefiles and give it the name of the new system, for example:
Makefile.sony. Then, make any required changes in the new makefile.
Using the Widgets in a Program
------------------------------
To link your own programs with the widgets, you need both libPlotW.a from the
plot_widgets directory, and libNUtil.a from the util directory, as well as
some of the include files from plot_widgets. The file widgets.doc explains
the resources and subroutine interfaces to the widgets, but it is also
expected that users already know how to use Motif and widgets in general.
Since we most users are interested in source code for just one or two of the
widgets, we haven't gone to any particular trouble to package the libraries or
arrange the directories nicely. They are just arranged as they are in our own
source directory tree for our own software products.
-------------------------------------------------------------------------
SUPPORT
=======
Help with the installation or use of plot-widgets is available by sending
mail to:
histoscope_support@fnal.gov
which is auto-forwarded to the group in charge of plot-widgets support at
Fermilab.
This software is furnished by Fermilab on an "as is" basis as a service
to the wider community with the goal of stimulating collaborative use and
further development.
Provision of the software implies no commitment of support by Fermilab.
The Fermilab Computing Division is open to discussing other levels of
support for use of the software with responsible and committed users and
collaborators.
Use of the software in experiments at Fermilab will be assured of a level
of support as agreed to through the standard Memorandum Of Understanding
process.
Users may send mail to the mail address given above, with the expectation
that it will be read and noted.
--------------------------------------------------------------------------
TERMS AND CONDITIONS IN FULL
============================
--------------------------------------------------------------------------
Fermitools Software Legal Information - October 16, 1997
--------------------------------------------------------------------------
COPYRIGHT STATUS: Fermi National Accelerator Laboratory (FNAL) documents
are sponsored by the U.S. Department of Energy under Contract No.
DE-AC02-76CH03000. Therefore, the U.S. Government retains a non-exclusive,
royalty-free license to publish or reproduce these documents or software
for U.S. Government purposes. All documents and software available from
this server are protected under the U.S. and Foreign Copyright Laws, and
FNAL reserves all rights.
Terms and Conditions
--------------------
When a User distributes or otherwise obtains a software package included
in the Fermilab Software Tools Program, the user agrees to abide by the
Terms and Conditions of the Program below:
o Any redistribution of the software shall be accompanied by this
README file.
o The User shall acknowledge the origin of the software as set forth
below:
"This work was performed at Fermi National Accelerator Laboratory,
operated by Universities Research Association, Inc., under contract
DE-AC02-76CH03000 with the U.S. Department of Energy."
o The user is asked to feed back problems, benefits, and/or suggestions
about the software to the Fermilab Software Providers and/or Fermitools
management.
o Any distribution of the software available from this server shall be
at no charge except for nominal media and distribution costs. To
obtain a license to commercialize any of the software programs available
from this server, contact FNAL's Office of Research and Technology
Applications, P.O. Box 500, MS-200, Batavia, IL 60510-0500.
Indemnification by User of Third Party Claims and Disclaimer of Liability
-------------------------------------------------------------------------
The User, his/her directors, officers, employees, and agents hereby release
and waive all claims against Universities Research Association, Inc. (URA)
operator of Fermi National Accelerator Laboratory, its trustees, overseers,
directors, officers, employees, agents, subcontractors, successors and
assigns, for any and all liability and damages arising from the reproduction,
use or other disposition of the software. The User shall indemnify URA and
the U.S. Government for all damages, costs or expenses, including attorney's
fees, arising from the utilization of the software, including, but not limited
to, the making, using, selling or exporting of products, processes or services
derived from the Software. The User agrees to indemnify, hold harmless and
defend URA, its trustees, overseers, directors, officers, employees, agents,
subcontractors, successors and assigns, against any and all liability, damage,
loss, cost, charge, claim, demand, fee or expense of every nature and kind
which may at any time hereafter, be sustained by URA by reason of claims of
third parties arising out of alleged acts or omissions of the User in the
reproduction, use or other disposition of the Software.
The User agrees that URA, its trustees, overseers, directors, officers,
employees, agents, subcontractors, successors and assigns shall not be liable
under any claim, charge, or demand, whether in contract, tort, criminal law,
or otherwise, for any and all loss, cost, charge, claim, demand, fee, expense,
or damage of every nature and kind arising out of, connected with, resulting
from or sustained as a result of the use of the software programs available
from this server. In no event shall URA be liable for special, direct,
indirect or consequential damages, losses, costs, charges, claims, demands,
fees or expenses of any nature or kind.
Disclaimer of Warranties
------------------------
The software is provided on an "as is" basis only. URA makes no
representations, express or implied. URA MAKES NO REPRESENTATIONS OR
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE, or
assumes any legal liability or responsibility for the accuracy, completeness,
or usefulness of any information, apparatus, product or process disclosed, or
represents that the Software will not infringe any privately held patent,
copyright, or trademark. The entire risk as to the results and the
performance of this software is assumed by the User.
Disclaimer of Endorsement
-------------------------
Reference herein to any specific commercial products, process, or service by
tradename, trademark, manufacturer or otherwise, does not constitute or imply
its endorsement, recommendation, or favoring by the United States Government,
U.S. Department of Energy or URA. The views and opinions of individuals
expressed herein do not necessarily state or reflect those of the United
States Government, U.S. Department of Energy or URA and shall not be used for
advertising or product endorsement purposes.
Liabilities of the Government
-----------------------------
This software is provided by URA, independent from its Prime Contract with
the U.S. Department of Energy. URA is acting independently from the
Government and in its own private capacity and is not acting on behalf
of the U.S. Government, nor as its contractor nor its agent. Correspondingly,
it is understood and agreed that the U.S. Government has no connection to
this software and in no manner whatsoever shall be liable for nor assume
any responsibility or obligation for any claim, cost, or damages arising
out of or resulting from the use of the software available from this server.