Last: tex Up: ../plot79.html Next: abstract
PLOT79 is a very large software package for support of passive computer graphics. It is based partly on the 1979 SIGGRAPH CORE Graphics System and provides a substantial amount of additional support software. It is distinguished by its high degree of portability, having been installed at over 160 computing installations in 24 countries, and complete graphics device independence. PLOT79 consists of a number of subroutine libraries, of which the four main ones are PLT:CORLIB - CORE system routines PLT:PLTLIB - higher-level graphics routines PLT:UTILIB - general utility routines PLT:DEMLIB - demonstration programs In addition to these, there are a score or more of device driver libraries whose contents are not relevant to anyone except the local site maintainer of PLOT79. Device library routines are called only by routines in CORLIB and PLTLIB, and absolutely no guarantee of functionality or call interface exists; they should NEVER be called by user programs.
The SIGGRAPH CORE system is based seven drawing primitives: Move (Absolute or Relative; 2-D or 3-D or 4-D) - MOVxn Line (Absolute or Relative; 2-D or 3-D or 4-D) - LINxn Polyline (Absolute or Relative; 2-D or 3-D or 4-D) - PLNxn Polygon (Absolute or Relative; 2-D or 3-D) - PGNxn Marker (Absolute or Relative; 2-D or 3-D or 4-D) - MRKxn Polymarker (Absolute or Relative; 2-D or 3-D or 4-D) - PMKxn Text - SYMxx Module naming conventions for the first six encode a three-letter prefix defining the operation, a letter A or R (Absolute or Relative), and a digit 2, 3, or 4 (dimensionality). For example, PGNA3 is the routine for the Polygon Absolute 3-D primitive. The 4-D primitives are an extension of PLOT79 to support the use of homogeneous coordinates. The CORE system uses the concept of the "current point", which is updated by each of the drawing primitives to the last point plotted, except for text, which leaves the current point unchanged. Relative coordinates define movement relative to this current point, and are useful for creating graphical objects which can be drawn anywhere without revising the program code or data. Coordinates for these primitives are termed "world coordinates", and may be chosen arbitrarily by the user with the viewing parameter routines which set the window, reference point, view depth, and so on. The device drivers are called by CORE routines with "normalized device coordinates", which form a left-handed system with coordinates in the range 0.0 .. 1.0. The only user-callable primitive which needs to be aware of this is SETIT (Set Image Transformation). Device driver routines are NEVER called by user programs. Attributes and other actions are handled by routines whose names are prefixed SET. For each attribute-setting primitive, there is a corresponding inquiry primitive with prefix INQ and the same suffix and argument list, which can be used to get the current value of a parameter. For example, SETPN sets the current pen, and INQPN returns the current pen. Reasonable defaults for all CORE parameters are selected each time a new plot is started by PLT00, so that usually only a small number of primitives need to be selected. The default system is right-handed, 2-D, with device space, viewport, and window all in the range 0.0 .. 1.0, and the current point at (0.0,0.0). ----------------------------------------------------------------------- Attributes modify the effect of the drawing primitives: Coordinate system handedness SETCS Color SETCO Color Index SETCI Color Model SETCM Dimensionality SET3D Line Intensity SETLI Line Style SETLS Line Width SETLW Marker Symbol SETMS Marker Size SETMSZ Pen SETPN Polygon Color Index SETPCI Polygon Edge Style SETPES Polygon Fill Index SETPFI Polygon Interior Style SETPIS Polygon Pixel Array SETPPA Polygon Pixel Pattern Origin SETPPO Polygon Vertex Color Indices SETPVI ----------------------------------------------------------------------- The view is modified by: Set Back Plane Clipping SETBC Set View Depth SETDP Set Device Space 2-D SETDS2 Set Device Space 3-D SETDS3 Set Back Plane Clipping SETFC Set Image Transformation SETIT Set Projection Type SETPR Set Reference Point 2-D SETRP2 Set Reference Point 3-D SETRP3 Set View Up 2-D SETUP2 Set View Up 3-D SETUP3 Set View Distance SETVD Set View Plane Normal SETVN Set Viewport 2-D SETVP2 Set Viewport 3-D SETVP3 Set Window Clipping SETWC Set World Modelling Matrix SETWM Set Window SETWW ----------------------------------------------------------------------- Text drawing is modified by: Get string extent SYMEX Get string extent (curvilinear coord) SYMEX3 Set string justification SYMJU New Font SYMNF Text Path SYMPA Text Pen Diameter SYMPD Text Redefine Symbol SYMRS Text Right Direction SYMRT Text Sub/Superscript Switches SYMSCR Text Set Font SYMSF Text Intercharacter Spacing SYMSP Text Case/Overstrike Switches SYMSS Text Character Size SYMSZ Text Draw SYMTX Text Draw (Curvilinear Coordinates) SYMTX3 Text Draw Bold SYMTXB Text Character Up Direction SYMUP ----------------------------------------------------------------------- Miscellaneous primitives are: Begin New Plot PLT00 Begin New Frame SETNF End Plot PLTEJ Marker SYMMK (called by MRKxn and PMKxn) Marker (2-D curvilinear coordinates) SYMMK2 Marker (3-D curvilinear coordinates) SYMMK3 Set Debug Output SETBUG Set Viewing Parameters SETPA -----------------------------------------------------------------------
The location of the various routine classes can be determined from the following table: Library: PLT:CORLIB Source code: *.sf3 TOPS-20: aps:<beebe.plot79.core> UNIX: /usr/local/plot79/p79core VMS: [plot79.core] FIL INQ LIN MOV MRK PGN PLN PMK SET SYM Library: PLT:PLTLIB Source code: *.sf3 TOPS-20: aps:<beebe.plot79.plot79> UNIX: /usr/local/plot79/plot79 VMS: [plot79.plot79] CON GRF HID HZN PL2 PL3 PLT PVI VIS Library: PLT:DEMLIB Source code: *.sf3 TOPS-20: aps:<beebe.plot79.demo> UNIX: /usr/local/plot79/demo VMS: [plot79.demo] DEM Library: PLT:UTILIB Source code: *.sf3 TOPS-20: aps:<beebe.plot79.utility> UNIX: /usr/local/plot79/utility VMS: [plot79.utility] ABS CLP DEF ERR FIT HLP IOP MAT UTD UTI UTL UTR UTT miscellaneous others
The module classes are as follows: ABS Abstract manual utility program CLP Clipping utilities CON Contouring routines DDI Display Device Interface utilities (NEVER to be called by user program) DEF CORE-like viewing transformation definition utilities DEM Demonstration programs ERR Error-handling utilities FIL Area filling utilities FIT Fitting utilities GRF General line graphing utilities HID Hidden-line utilities HLP Help utilities HZN Horizon class hidden-line utilities INQ CORE inquiry utilities IOP I/O package LIN CORE line primitives MAT 4 x 4 matrix utilities MFD CORE METAFILE dump package MFT CORE METAFILE translator package MOV CORE move primitives MRK CORE mark primitives PGN CORE polygon primitives PL2 2-D pen movement utilities PL3 3-D pen movement utilities PLN CORE polyline primitives PLT General plot utilities PMK CORE polymarker utilities PRS TOPS-20-like command parsing utilities PVI Hidden-line utilities SET CORE set parameter utilities SYM CORE symbol (text) utilities TKIO Display Device I/O utilities (NEVER to be called by user program) UTD General utilities - Double Precision UTI General utilities - Integer UTL General utilities - Logical UTR General utilities - Real UTT General utilities - Packed Hollerith Text VIS Hidden-line visibility utilities
Program modules follow a consistent naming convention of a three-letter prefix defining a general functional class, followed by a two- or three-character suffix chosen from a short mnemonic phrase given in the first line of the module abstract. When the last character of a name is a digit, this is usually an indication of the coordinate dimensionality. Thus SETVP2 is the routine to SET the ViewPort in 2 Dimensions. PLOT79 source code at the College of Science Computer is maintained online and has public read-access. The source module abstracts are also available via the XINFO system for rapid and convenient access both stand-alone and from within the EMACS text editor.