Last: tex Up: ../plot79.html Next: abstract

Table of contents



 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

 Library: PLT:DEMLIB            Source code:    *.sf3
                                TOPS-20:        aps:<beebe.plot79.demo>
                                UNIX:           /usr/local/plot79/demo
                                VMS:            [plot79.demo]


 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

 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.