Previous: chrrtn Up: ../plot79.html Next: dir
The UNIX implementations of <PLOT79> provide with user with a choice of about a dozen different output devices. Because shared libraries in UNIX systems are not uniformly available or implemented similarly, the current <PLOT79> implementation uses link-time libraries that result in the binding of an output device to an executable program at link time.
Because the <PLOT79> system contains several libraries, and the order of these libraries is critical for correct loading, rather than use the convention -lxyz compiler and loader switches, library lists are defined with UNIX shell symbols. To define the standard ones, just do source $PLT/define.csh with the C shell (csh), or . $PLT/define.sh with the Bourne shell (sh) or Korn shell (ksh). If the shell variable PLT is not already defined at your installation, try putting setenv PLT /usr/local/plot79 # csh or PLT=/usr/local/plot79 # sh or ksh in your .cshrc (csh) or .profile (sh or ksh) startup files. The define.* files create symbol definitions that let you subsequently link as follows: f77 -o myprog myprog.o ... $ptzlib The complete set of defined symbols can be determined by looking at the $PLT/define.* files. The current symbols are: pt1lib # Tektronix-401x pt4lib # Tektronix-4014 pt3lib # Tektronix-4663 ptblib # BBN BitGraph ptelib # Epson MX-100 pthlib # Hewlett-Packard GL series plotters ptilib # Imagen 8/300 laser printer (raster) ptklib # Imagen 8/300 laser printer (vector) ptjlib # Hewlett-Packard Laser Jet laser printer ptmlib # Metafile ptllib # DEC LetterPrinter 100 ptplib # Hewlett-Packard 2468a CRT ptrlib # Ramtek 6211 color CRT pt9lib # Ramtek 9460 color CRT ptslib # CalComp-Sanders Model 84 pen plotter pttlib # TeX generic graphics file ptvlib # Intecolor VHR-19 ptwlib # C-Itoh Prowriter printer ptxlib # Printronix printer ptzlib # Apple LaserWriter laser printer x11lib # X11 Window System interface
 The VAX  VMS  3.x  (and  later  versions)  implementation  of  <PLOT79>
 provides  the  user with a choice at present of about a dozen different
 output devices.  User programs can be linked with either the  shareable
 or  non-shareable  libraries.  Shareable libraries should be the normal
 choice, because:
        * linking is faster,
        * disk space for the .EXE file is drastically reduced,
        * the output device can be chosen at runtime,
        * bug corrections applied to the library will automatically be
          in effect the next time the user program is run, without it
          having to be relinked.
    To link with a device-specific non-shareable library, do $ LINK yourprogram,@PLT:PT*LIB where * is a single character device identifier as listed in the DEVICE-LIBRARIES section. At run time, you then do $ DEFINE CRT plotfile $ DEFINE HARDCOPY anotherfile ! Optional $ RUN yourprogram The HARDCOPY file is only available for those devices which use the terminal I/O package, generally all CRT displays and most ASCII pen plotters. It is simply an exact copy of what is written to the CRT file, and is primarily used to preserve a record of the plot when CRT is directed to a terminal.
To link with the shareable library, simply do $ LINK yourprogram,@PLT:PLOT79 and then at run time: $ DEFINE CRT plotfile $ DEFINE HARDCOPY anotherfile ! Optional $ DEFINE P79DDI SHR:libname $ RUN yourprogram The HARDCOPY file is only available for those devices which use the terminal I/O package, generally all CRT displays and most ASCII pen plotters. It is simply an exact copy of what is written to the CRT file, and is primarily used to preserve a record of the plot when CRT is directed to a terminal. If you omit the definition of the logical name P79DDI, an installation default will be used. On the University of Utah Mathematics Department CAGD VAX, this is DDITK4014, the Tektronix 4014 storage tube family. If it is anticipated that the plotfile is to be viewed on several devices, and takes a considerable amount of time to construct, it will usually be advisable to choose the CORE Metafile device, DDIMFL, as the output device. This file can subsequently be translated for any other device by the Metafile translator described in another section.
 Non-shareable  libraries  are  selected  at  LINK time by specifying an
 indirect library command file named PLT:PTxLIB, where x is a letter  or
 digit.
 Shareable device libraries have names beginning DDI (for Display Device
 Interface), followed by a device name of up to  six  characters.   They
 are  stored  as shareable images named SYS$SHARE:DDIxxxxxx.EXE, but VMS
 defaults allow only the name DDIxxxxxx to be specified as the value  of
 the logical name P79DDI.
 ===========    =====================   ================================
  Shareable     Non-shareable library           Comments
   Library          command file
 ===========    =====================   ================================
 P79DDI                                 Installation default (DDITK4014
                                        on Utah CAGD VAX)
 DDITK4010      PT1LIB.COM              Plots on Tektronix 401x CRT
                                        (10-bit resolution) and most
                                        4010-compatible alphanumeric
                                        retrofits
 DDIVT240       PT2LIB.COM              DEC VT240 CRT
 DDITK4663      PT3LIB.COM              Tektronix 4663 pen plotter
 DDITK4014      PT4LIB.COM              Tektronix 401x CRT (12-bit
                                        resolution)
 DDIALW         PTZLIB.COM              Apple LaserWriter laser printer
 DDIBIT         PTBLIB.COM              BBN BitGraph CRT.
 DDICANON       PTULIB.COM              Canon LBP-8 A2 laser printer
 DDIEPSON       PTELIB.COM              Epson MX-80 dot matrix printer
 DDIHPGL        PTHLIB.COM              Hewlett-Packard pen plotters.
 DDIHP2468      PTPLIB.COM              Hewlett-Packard 2468a CRT
 DDIHPLJ        PTJLIB.COM              Hewlett-Packard LaserJet laser printer
 DDIIMAGEN      PTILIB.COM              Imagen 8/300 laser printer
                                        in bitmap mode (use for complex
                                        plots).
 DDIIMPRES      PTKLIB.COM              Imagen 8/300 laser printer
                                        in vector mode (use for simple
                                        plots).
 DDIMETH        PTOLIB.COM              Metheus Omega 400 CRT.
 DDIMFL         PTMLIB.COM              METAFILE device files.
 DDIPCP         PTNLIB.COM              PCP LaserImage 200 laser printer
 DDIPRO         PTWLIB.COM              C-Itoh Prowriter dot matrix
                                        printer.
 DDIPRX         PTXLIB.COM              Printronix 300 and 600 dot
                                        matrix printers.
 DDIRM6211      PTRLIB.COM              RAMTEK 6211 color CRT.
 DDIRM9460      PT9LIB.COM              RAMTEK 9460 color CRT.
 DDICS84        PTSLIB.COM              CalComp-Sanders Model 84 pen
                                        plotter.
 DDIVHR19       PTVLIB.COM              Intecolor VHR-19 color CRT.
 ===========    =====================   ================================
    
 Each  sequence  of CALL PLT00 .. CALL PLTEJ or CALL PLT00 .. CALL SETNF
 generates a new generation of the plot file.  The name of the plot file
 is  not  fixed in the <PLOT79> source code, but rather is determined at
 run time from system service translations of logical names and symbols.
 The search order is as follows:
 For all devices:
     Logical name PLOTFILE
     Symbol PLOTFILE
 For most ASCII devices:
     Logical name CRT
     Symbol CRT
 For  ASCII  devices,  which  includes  most terminals and plotters, but
 excludes dot matrix printers, and other binary devices, an  exact  copy
 of  the  plot  written  to CRT can be requested by defining the logical
 name or symbol HARDCOPY.  It is primarily used to preserve a record  of
 the plot when CRT is directed to a terminal.
 For example, on VAX VMS,  to make the plot go to a terminal attached to
 line TXA1:, do
 $ DEFINE PLOTFILE TXA1:
 or
 $ ASSIGN TXA1: PLOTFILE
 or
 $ PLOTFILE := TXA1:
 Similarly, to direct it into a disk file, you can do
 $ DEFINE PLOTFILE dev:[directory]file.ext
 or
 $ ASSIGN dev:[directory]file.ext PLOTFILE
 or
 $ PLOTFILE := dev:[directory]file.ext
 On UNIX, for a terminal window device (which you can find by typing
 % tty
 in that window)
 % setenv PLOTFILE /dev/ttyp3                   # csh
 or
 % PLOTFILE=/dev/ttyp3 ; export PLOTFILE        # sh or ksh
 For disk files, use
 % setenv PLOTFILE myprog.crt                   # csh
 or
 % PLOTFILE=myprog.crt ; export PLOTFILE        # sh or ksh
 For disk files,  the definition of PLOTFILE is  used  to provide a base
 name to which generation  numbers (one  per frame) are attached.  Thus,
 the  above   example   will  result   in  files   named   myprog.crt.1,
 myprog.crt.2, ...
    The <PLOT79> CORE Metafile device is a generic graphics file which contains sufficient information and precision to be suitable for translation and output on any other graphics device. It contains textual information giving the job name, plot file name, and date and time of creation, so that it is suitable for a graphical archive. The Metafile Dumper described in another section can be used to dump the contents of a Metafile. The Metafile is a binary file containing 16-bit "chunks", but for machine portability, it is recorded in hexadecimal with sequence numbered and checksummed records. It can be processed for output on any other display device by the Metafile translator described in another section. By default, coordinates in the Metafile have 15 data bits, representing a coordinate range of -32768 .. +32767, a precision of one part in 65536. This is adequate for all current graphics devices, with the possible exception of the highest-precision pen plotters. A precision of 31 data bits is selectable when the Metafile is created by giving an arbitrary value to the logical name or symbol MFHIGH. The value is not important, just the fact that the value exists. For example, on VAX VMS, you can do $ DEFINE MFHIGH yes or $ ASSIGN yes MFHIGH or $ MFHIGH :== yes On UNIX, do % setenv MFHIGH yes # csh % MFHIGH=yes ; export MFHIGH # sh or ksh The precision is encoded internally in the Metafile and the Metafile Translator recognizes both 15-bit and 31-bit precisions. In practice, choosing 31-bit precision nearly doubles the size of the Metafile, so it should not be requested unless absolutely necessary.
 The  <PLOT79>  Metafile  translator  on  VAX  VMS  is  linked using the
 shareable libraries, so that only one version of it  is  necessary  for
 translation  of any Metafile to any supported <PLOT79> graphics device.
 To use it, simply do
 $ @PLT:METAFILE plotfilename sharedlibraryname
 The  shared  library  name,  if  omitted,  defaults  to   P79DDI   (the
 installation  default).   The  output  plot  file name will be given an
 extension conventional with the selected  device  library  (".CRT"  for
 most screens and ASCII pen plotters).
 Normally,  the  plotfilename  should have an extension ".MFL", and this
 will be assumed if a file extension is not specified.
    The <PLOT79> Metafile dumper utility can be used to get a human-readable dump of a Metafile. This includes all commands except move/draw commands, which would produce an enormous amount of output which is of little use. To use it, simply do $ @PLT:MFLDUMP plotfilename Normally, the plotfilename should have an extension ".MFL", and this will be assumed if a file extension is not specified.
Users are free to choose file name extensions unless these are predefined in the VAX VMS DCL command file which runs a particular program. Some conventions are useful however, and the recommended ones are as follows: .crt Display screen and ASCII pen plotter files .hrd Hardcopy duplicates of .CRT files .imp Imagen 8/300 Impress bitmap raster files .mfl Metafiles .tek Tektronix files .x79 Vector files from x11lib For the Imagen 8/300 laser printer, the extension defines the contents of the file, since the printer can support several different file formats. On VAX VMS, if it is not ".IMP", then the switch /IMPRESS must be specified on the IMPRINT command which sends the file to the printer spooler.