Introduction

The present document describes the HIGZ package (High level Interface to Graphics and ZEBRA). The package is a part of larger system PAW (Physics Analysis Workstation)[bib-PAW], and it was originally implemented in order to provide a graphics interface to PAW. However HIGZ can also be used independently.

Graphics packages like GKS [bib-GKS1] mediate the transition from user programs (applications) to devices in a standardized way. The European effort to restrict High Energy Physics users to using only one such package (at least for the 2D graphics), GKS, will yield portability of application programs between systems on which GKS is installed, and will make the application programs largely device-independent.

These packages, however, have limitations. They do not foresee an acceptable way of recording large volumes of graphical information in compact form with a convenient access method, for later manipulation. The GKS metafile is conceived as a vehicle to communicate series of pictures between computers, but not for their subsequent manipulation. Also, the acceptance of GKS, in particular by Laboratories outside Europe, is still rather modest, and thus it is not a standard that the High Energy Physics community can restrict itself to exclusively. We believe that the following requirements must be met by the graphical output of PAW:

  1. The PAW picture data base must be fully transportable.
  2. It must have easily accessible units (pictures) for later manipulation.
  3. The picture data base must be as compact as possible, and accessible in direct access mode.
  4. The picture data base must be independent from the underlying graphics package and, a fortiori, from different implementations of the same graphics package.

    These requirements are not restricted to PAW. They are common to many applications existing or under development. We therefore define below an interface package called HIGZ, written in the context of PAW, and aiming at graphics applications of any nature, provided the level of functionality is similar. This package is basically a thin layer between the user program (application) and an underlying graphics package, offering the following advantages:

    1. An interface to a standard memory management system (ZEBRA) [bib-ZEBRA], and through it a mechanism to store graphics data in a way which makes their organization and subsequent editing possible and easy. The picture data base is also highly condensed and fully transportable. A picture editor is part of the package. It allows merging of pictures, editing of basic graphics primitives, operations onto HIGZ structures, etc.
    2. A GKS like user interface to the graphics package, keeping the program independent of the underlying graphics package installed.

      The level of HIGZ was deliberately chosen to be close to GKS and as basic as possible. This makes the interface to GKS a very simple one, and preserves full compatibility with the most important underlying graphics packages. HIGZ does not introduce new basic graphics features, and does not duplicate GKS functions. On the other hand, some graphic macroprimitives are implemented, providing very frequently used functions, such as graphs, circles and axis. The user will also be able to call GKS directly in parallel with the use of HIGZ.

      Many of the underlying GKS concepts used by HIGZ, e.g. the concepts of workstations and viewports, are well explained in [bib-GKS1] and in [bib-GKS2].

      HIGZ is presently interfaced to several versions of GKS. The version of GKS can be selected at compilation time by PATCHY control statements. On the CERN central computers the GKS-GRAL version is implemented. The list of the different GKS versions, and of the values of GKS version-dependent parameters are specified in the appendix.

      HIGZ is also interfaced the most important graphics packages such as PHIGS, DI3000, GDDM (IBM), GPR (APOLLO), GL (Silicon Graphics). Simple interfaces to the Tektronix/FALCO terminal and to the X Window System on all the modern workstations are also available.

      Thoughout this manual the graphics package on top of which HIGZ is installed is referenced as ``underlying graphics package''. When HIGZ has initialized the underlying graphics package, the application program can call it directly. For example, if the underlying graphics package is GKS, the application program can access the segmentation facilities, but this will be not seen by HIGZ. For all the additional functionalities provided by the underlying graphics package, HIGZ is transparent.

      The X Window System interface is now one of the most frequently used on workstations but also on mainframes like VAXes or IBM/VM machines. It has the advantages of a great portability, good performances, and the possibility to be used remotely through a network. The HIGZ interfaces to the X Window System is a small layer callable by Fortran providing a convenient way to access the basic Xlib facilities from Fortran. This interface is described in the chapter: The X Window System interface routines.

      Most modern underlying graphics packages usable from HIGZ provide PostScript drivers. These drivers can be used through HIGZ, but a good uniform interface to PostScript is so important that HIGZ has its own native PostScript driver independent from the underlying graphics package used (see section [more info]).

      In order to produce similar outputs even with different underlying graphics packages, HIGZ has its own line styles, hatches, marker types and text independent from the underlying graphics package. Thus it is possible to use all the basic tools even on a very simple terminal (for example a FALCO).

      Functionality