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.