ftp.nice.ch/pub/next/science/mathematics/hippoplotamus.2.0.s.tar.gz#/hippo2.0

CHANGES
 
HippoRef.ps
[View HippoRef.ps as PDF] 
HippoUsr.ps
[View HippoUsr.ps as PDF] 
Makefile
 
README
 
README_X11
 
architecture
 
example.hippo
 
example.hiptxt
 
getarg.c
[View getarg.c] 
h3D.c
[View h3D.c] 
h3D.h
[View h3D.h] 
h3Dmat.c
[View h3Dmat.c] 
h_test.c
[View h_test.c] 
h_test.out
 
hb2hippo.f
 
hcstubs.c
[View hcstubs.c] 
hdata.c
[View hdata.c] 
hdata.h
[View hdata.h] 
hdisplay.c
[View hdisplay.c] 
hfstubs.f
 
hgraphic.c
[View hgraphic.c] 
hgraphic.h
[View hgraphic.h] 
hio.c
[View hio.c] 
hippo.h
[View hippo.h] 
hippo.opt
 
hntuple.c
[View hntuple.c] 
hplot.c
[View hplot.c] 
hplotNxt.c
[View hplotNxt.c] 
hplotNxt.h
[View hplotNxt.h] 
hplotPS.c
[View hplotPS.c] 
hplotPS.h
[View hplotPS.h] 
hplotUP.c
[View hplotUP.c] 
hplotUP.h
[View hplotUP.h] 
hplotX11.c
[View hplotX11.c] 
hplotX11.h
[View hplotX11.h] 
hplotXIV.cc
 
hplotXIV.h
[View hplotXIV.h] 
hprint.c
[View hprint.c] 
hpsWraps.psw
 
hshrtnm.h
[View hshrtnm.h] 
hstat.c
[View hstat.c] 
hstruct.h
[View hstruct.h] 
htextio.c
[View htextio.c] 
hutil.c
[View hutil.c] 
hutil.h
[View hutil.h] 
hxdrio.c
[View hxdrio.c] 
hxdrio.h
[View hxdrio.h] 
make.aix6000
 
make.common
 
make.next
 
make.sgi
 
make.sun4
 
make.ultrix
 
make.vm
 
make.vms
 
nt2text.c
[View nt2text.c] 
text2nt.c
[View text2nt.c] 
x11test.c
[View x11test.c] 

README

Copyright (C)  1992  The Board of Trustees of The Leland Stanford
Junior University.  All Rights Reserved.



                               Disclaimer Notice
     
     
        The items furnished herewith were developed under the sponsorship
   of the U.S. Government.  Neither the U.S., nor the U.S. D.O.E., nor the
   Leland Stanford Junior University, nor their employees, makes any war-
   ranty, express or implied, or assumes any liability or responsibility
   for accuracy, completeness or usefulness of any information, apparatus,
   product or process disclosed, or represents that its use will not in-
   fringe privately-owned rights.  Mention of any product, its manufactur-
   er, or suppliers shall not, nor is it intended to, imply approval, dis-
   approval, or fitness for any particular use.  The U.S. and the Univer-
   sity at all times retain the right to use and disseminate the furnished
   items for any purpose whatsoever.                       Notice 91 02 01



Hippoplotamus
=============

     Hippoplotamus (hippo) is a histogramming library based on n-tuples.
The original implementation was by Jonas Karlsson. It is being written at
SLAC by Paul Rensing, Paul Kunz, Mike Gravina, plus contributions from
Tom Pavel and others. It is designed to be used as an n-tuple collection
library and as the guts of an interactive application to view n-tuples.


Building hippo
==============
     We have provided some ways of building hippo. You can also make it
yourself. 

     A minimum set of files which provide support for collecting n-tuples
only is:
    hippontuple.c hippoio.c hippoxdr.c hippoutil.c ntuple-parse.c
    hippo.h hippostruct.h hippoxdr.h hippoutil.h

There are three utility programs:
    nt2text.c text2nt.c hb2hippo.f



UNIX
====
     This package includes a makefile for UNIX machines. The file is built
with machine independent parts (Makefile and make.common) and a machine
dependent part (make.<machine>). The machine architecture is determined by
the script "architecture" and is set when make.common is called from
Makefile. Architectures on which we have tested hippo are sun, next,
ultrix, sgi and aix (rs6000). If you are adding a new machine, check that
architecture gives a sensible answer.

     Because there are a number of plot drivers available, and one may want
more than one driver available on a given architecture, we have designed
the make file to build different libraries for the different (major)
drivers. For example, on a NeXT, you would build only libhippoNext.a, while
on a Sun, you might build libhippoX11.a and libhippoXIV.a (the Interviews
driver). If you don't have any of these packages to link to, you could
build a library (make target "hippo") which only contains the PostScript
and line printer drivers, no screen drivers.

     There are a number of macros which may need to be tailored to your
system.  The machine dependency file is included late so that it can
override any macro defined in Makefile.

in make.common:
SRC_DIR  - this is the directory containing the source code
LIB_INSTALLDIR - directory in which to install the libraries
INC_INSTALLDIR - directory in which to install the header files
LIB_DIR  - directory in which the libraries are built. Is include as a -L
           option when linking, so it should be defined ("." means current
           directory). 

in make.<flavor>:
CC, CPLUSPLUS - your compiler commands
FC            - your FORTRAN compiler
FBINDINGS - the Fortran binding files. Set to blank here if you don't have
            a Fortran compiler.
LIB_LIST - list of libraries to build for this machine
DEBUGLIB_LIST - list of debug libraries to build

FORTRAN
-------
     We have provided a set of FORTRAN bindings for some of the function
calls in hippo. If you don't have FORTRAN, comment out the macro FBINDINGS,
or override the definition (set it to blank) in the machine dependent file.

          
Plot Drivers
------------

     Hippo provides a number of plot drivers, which can be select for
compilation in any combination. See make.next or make.sun4 for examples.

DrvrName  CodeFile         IncludeFile      C_Define      Description
-------------------------------------------------------------------------------
LPR       (none)           (none)           (none)        line printer driver

PS        (none)           (none)           (none)        PostScript to file

NEXT      hippoplotNeXT.c  hippoplotNeXT.h  _NEXT_PLOT_   NeXT DPS driver
          hippowrapsps.c   hippowrapsps.h                 (from hippowraps.psw)

UNIXPLOT  hippoplotUP.c    hippoplotUP.h    _UNIXPLOT_PLOT_  UNIXPlot driver

XIVPLOT   hippoplotXIV.cc  hippoplotXIV.h   _XIVPLOT_     Interviews driver

X11PLOT   hippoplotX11.cc  hippoplotX11.h   _X11PLOT_     X-11 driver (R4)

By default, one of the screen drivers is included in each library, eg.
libhippoX11.a is built using the X11PLOT driver.

If you wish to have a combination of drivers, you could build your own library.
A driver must be selected at compile time in order to be able to use it in
a program. To select a driver:
1) add the codefile to MACH_DEP_MEMS in the form "$(LIBRARY)(<codefile>.o)",
   where <codefile>.o is the compiled object file of the files listed above.
2) add the include file to DRVR_INCS
3) add the C macro definition for C_Define (above) to PLOTCFLAGS, 
   eg. -D_NEXT_PLOT_

Finally, you should choose one default plot driver by defining the C macro
DEF_PLOT_DRVR; eg.  -DDEF_PLOT_DRVR=NEXT (use the DrvrName from above). LPR and
PS are always defined and one should be used as a default if you don't want any
other driver defined.

Make Targets
------------
all       - build the regular and debug libraries and utilities
libs      - (default) build the standard libraries
debuglibs - build the debug libraries
<name>    - build library lib<name>.a, eg. hippoX11, hippoNext.debug,
                  hippoXIV.profile 
util      - build the text/hippo converter programs
clean     - delete backup files
install   - copy libraries and certain include files to specified place
hb2hippo  - an HBOOK to hippo converter. Needs CERN's PackLib.
test      - run a few tests to see that hippo is working.

VMS
===
     We have included an MMS file for VMS under the name make.vms (this does
not need the file Makefile). The file is written to compile with the X11
driver. You may need to change the logicals defined under .First to point to
the correct directories (this is for RPC include files). Otherwise, many of the
macro are the same as for the UNIX makefile. We do not change the name of the
the Fortran file hippof.f.

     When linking a program with hippo on VMS, you will need the RPC and
Multinet libraries. On my system, they are located at
  multinet_root:[multinet.library]rpc.olb
  multinet_root:[multinet]multinet_socket_library.exe
(The socket library is really only needed to resolve bcopy and bset,
something that Multinet should have put in the RPC library). The file
hippo.opt is used to specify these libraries.

The C macro GLOB_QUAL is defined to be "noshare" on VMS. This should allow one
to build a sharable library.

Miscellaneous Files
===================

architecture        - determine machine type on UNIX.
example.hippo       - example hippo ntuple in binary format (used for 
                       make test).
example.hiptxt      - example hippo ntuple in text format (used in
                       make test).
fhippo.c, hippof.f  - the FORTRAN binding files.
getarg.c            - provide proper version of FORTRAN callable getarg()
                       for NeXT. Used only in hb2hippo.
hippo.opt           - options file for VAX/VMS linker.
hshrtnm.h           - header file with short names for most of the hippo
                       functions. (necessary on IBM VM)
h_test.c            - program to test basic display functions.
h_test.out          - reference output of h_test
h_testX11.c         - program to exercise the X11 driver.

Problems, Changes and Bug Reports
=================================

     We are very interested in hearing about bugs and improvements.

     If you find a bug, please send mail to
"hippo_bug@ebnextk.slac.stanford.edu" and we will do our best. Please try
to be as specific as possible.

     If you have any suggestions or wish to make some contribution (eg. a
new plot driver), please contact the authors. Send mail to
"hippo_comment@ebnextk.slac.stanford.edu".


Registration
============

     It is recommended that if you are using hippo, you send mail to
hippo_comment to "register" your copy. This will allow us to inform you
about major updates and bug fixes.

README_X11

X11 Driver for Hippo
====================

The X Driver for Hippo uses only standard XLIB calls and should work with
X11R4 and X11R5. There are a number of known bugs and limitations which are
documented below.

*** If you are not familiar with X, please look at x11test for a simple
example of using this driver.

Usage
-----

The compile flag to select the X driver is:

_X11_PLOT_

To select X as the output device use...

h_setPlotDrvr(X11PLOT);

When calling h_plot to draw a hippo plot to an X window, four additional 
arguments must be given to the h_plot call.

int h_plot(display disp, Display *dpy, Screen *scrn, Drawable Wind, GC gc);

Where:

    disp   is the Hippo plot to be drawn.
    dpy    is the X display pointer.
    scrn   is the X screen pointer for the screen on which the window resides
    wind   is the window or Pixmap into which the plot is to be drawn.
    gc     is a graphics context suitable for use with wind. The graphics
           context is used to specify the background color for the plot and
           can also be used to specify a clip mask (may be useful when handling
           exposure events).

The plot will be scaled to fill the specified drawable. Note that this
routine is intended to be used as a fairly low level routine in some
application requiring X display of histograms. The application is
responsible for handling expose events, and for dealing with redrawing the
plot if the window is resized. A simple example of how to use the X11
driver is given in the demonstration program x11test supplied with hippo.

Known bugs and limitations
--------------------------

A number of bugs and limitations are known to exist in this version of
hippo's X11 driver.  These are documented below. Any offers to fix or
improve any of these features will be warmly received. The assumption made
in designing hippo's X11 driver is that it will be used for interactive
applications where very high speed redrawing of the display is required.
The desire to avoid duplication of potentially time-consuming tasks is what
leads to a number of the limitiations below.

1) Only Color and Black and White X servers supported.

The current version of the X11 driver only supports color X servers with
dynamically allocatable color maps, and black and white servers. All other
servers (eg grey scale or displays with static color maps) are treated as
if they were black and white.

2) Crude recovery for unallocatable color map entries.

If the X11 driver is unable to allocate all of the color map entries that
it wants it issues a one time error message, but then continues execution,
resulting in displays which will have "random" colors. A better
implementation would attempt to adjust its display philosophy to the number
of colors available. To display both color and gray scale plots requires a
total of nearly 200 hundred color map entries, so a screen depth of a least
8 is required.

3) Crude lego plot.

The lego plot implemented in the current version of the X11 driver is
intended merely as a proof of principle, rather than a full implementation.
There is no support for labeling the axes, for changing the Z axis or for
changing the stereo angle. In addition the drawing speed could be improved.
Also the plot doesn't always fir in the window

4) Text handling problems.

For flexiblity the current version of the X11 driver works with all version
of X after X11R4. No use has been made of the more advanced text handling
features of X11R5. The main limitations imposed by this are in text sizing
and rotated text. The X11 driver attempts to choose an appropriate sized
font, but this process does not always work perfectly. Rotated text is
handled in a manner which requires copying pixmaps between the server and
client. To speed this process up the X11 driver maintains a cache of
previously copied strings which it attempts to reuse. This normally works
ok, but if some graphics attribute (such as the background color) is
changed dynamically the rotated text may be drawn with the old attribute.

This could be improved by generating a version of the X11 driver which uses
X11R5 when it is available.

5) Support for multiple display devices.

The first time a plot is drawn to an X device, the X11 driver caches
certain characteristics of the server, such as which fonts are available
and what type of device it is. If multiple display devices with different
characteristics are used from the same job this will cause problems.

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.