diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0155aa7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +rhel* diff --git a/makefile_rhel8 b/makefile_rhel8 new file mode 100644 index 0000000..8a054ff --- /dev/null +++ b/makefile_rhel8 @@ -0,0 +1,68 @@ +# RedHat Linunx (rhel8) with AFS at PSI + +# only debugger version works +DEB=D + +# type of library to be used (LIB_TYPE=a or LIB_TYPE=so) +LIB_TYPE=a + +# c-compiler to be used, flags for different options +CC=gcc +C_FLAGS=-g -D__unix -MMD -DF_UNDERSCORE=1 +#C_FLAGS=-g -D__unix -MMD +C_STRICT=-Wall +C_RELAXED= + +# fortran compiler to be used, flags for different options +FC=gfortran +#FC=g77 +F_FLAGS=-fimplicit-none -ffixed-line-length-none -fbounds-check -I. +#F_FLAGS=-Wimplicit -fbounds-check -I. -Wall +F_STRICT= +F_RELAXED=-Wno-globals +F_OPT=-O +F_DEB=-g + +# macros for prerequisites (for GNU make) +# Q=all, F/C=Fortran/C source with path +Q=$^ +F=$< +C=$< + +# linker flags for readline library +RDLIB=-L$(PWD) -lreadline + +SINQ=/afs/psi.ch/project/sinq/$(linuxsys) +SL=$(sinq)/sl6-64/lib/lib + +# directories for installing the binaries are $(INSTDIR)/bin and $(INSTDIR)/lib +INSTDIR=$(SINQ)/stow/fit + +# linker flags for pgplot +PGLIB=$(PWD)/src/pgplot_rhel8/libpgplot.a -L/usr/X11R6/lib -lX11 + +# link NeXus file input routines ? (comment out if not needed) +NXFLAG=Y + +# linker flags for NeXus +NXLIB=$(SL)NeXus77.a $(SL)NeXus.a $(SL)hdf5.a $(SL)mxml.a -lz $(SL)sz.a -lpthread + +# directory for the HDF include files +NXHDF=$(SINQ)/include + +# directory for the NeXus include files +NXINC=$(sinq)/sl6-64/include +#NXINC=$(PWD)/../gen + +# a hack: it seems that napif.f is not properly included in libNeXus77.a +NAPIF=napif.o + +ADD_ALL = myfit + +-include make_deb +include src/make_gen + +# location: unix/napif.f +napif.o: napif.f + $(FC) -c $Q + diff --git a/pgplot_rhel8/drivers.list b/pgplot_rhel8/drivers.list new file mode 100644 index 0000000..28c20c4 --- /dev/null +++ b/pgplot_rhel8/drivers.list @@ -0,0 +1,114 @@ +! PGPLOT drivers. +!------------------------------------------------------------------------------ +! To configure PGPLOT, ensure that drivers you do not want are +! commented out (place ! in column 1). N.B. Many device-drivers are +! available on selected operating systems only. +!------------------------------------------------------------------------------ +! File Code Description Restrictions +! BCDRIV 0 /BCANON Canon Laser printer (bitmap version), landscape +! CADRIV 0 /CANON Canon Laser printer, LBP-8/A2, landscape +! CCDRIV 0 /CCP DEC LJ250 Color Companion printer +! CGDRIV 1 /CGM CGM metafile, indexed colour selection C +! CGDRIV 2 /CGMD CGM metafile, direct colour selection C +! CWDRIV 0 /CW6320 Gould/Bryans Colourwriter 6320 pen plotter Std F77 +! EPDRIV 0 /EPSON Epson FX100 dot matrix printer +! EXDRIV 1 /EXCL Talaris/EXCL printers, landscape +! EXDRIV 2 /EXCL Talaris/EXCL printers, portrait +! GCDRIV 0 /GENICOM Genicom 4410 dot-matrix printer, landscape +! Caution: use of GIDRIV may require a license from Unisys: + GIDRIV 1 /GIF GIF-format file, landscape + GIDRIV 2 /VGIF GIF-format file, portrait +! GLDRIV 1 /HPGL Hewlett-Packard HP-GL plotters, landscape Std F77 +! GLDRIV 2 /VHPGL Hewlett-Packard HP-GL plotters, portrait Std F77 +! GODRIV 0 /GOC GOC Sigma T5670 terminal VMS +! GVDRIV 0 /GVENICOM Genicom 4410 dot-matrix printer, portrait +! HGDRIV 0 /HPGL2 Hewlett-Packard graphics language +! HIDRIV 0 /HIDMP Houston Instruments HIDMP pen plotter +! HJDRIV 0 /HJ Hewlett-Packard Desk/Laserjet printer +! HPDRIV 0 /HP7221 Hewlett-Packard HP7221 pen plotter Std F77 +! LADRIV 0 /LA50 Dec LA50 and other sixel printers +! LJDRIV 0 /LJ Hewlett-Packard LaserJet printers VMS +! LSDRIV 1 /LIPS2 Canon LaserShot printer (landscape) +! LSDRIV 2 /VLIPS2 Canon LaserShot printer (portrait) +! LNDRIV 0 /LN03 Dec LN03-PLUS Laser printer (landscape) VMS +! LVDRIV 0 /LVN03 Dec LN03-PLUS Laser printer (portrait) VMS +! LXDRIV 0 /LATEX LaTeX picture environment +! MFDRIV 0 /FILE PGPLOT graphics metafile +! NEDRIV 0 /NEXT Computers running NeXTstep operating system + NUDRIV 0 /NULL Null device (no output) Std F77 +! PGDRIV 0 /PGMF PGPLOT metafile (new format, experimental) Std F77 +! PNDRIV 1 /PNG Portable Network Graphics file C +! PNDRIV 2 /TPNG Portable Network Graphics file - transparent background C +! PPDRIV 1 /PPM Portable Pixel Map file, landscape +! PPDRIV 2 /VPPM Portable PIxel Map file, portrait + PSDRIV 1 /PS PostScript printers, monochrome, landscape Std F77 + PSDRIV 2 /VPS Postscript printers, monochrome, portrait Std F77 + PSDRIV 3 /CPS PostScript printers, color, landscape Std F77 + PSDRIV 4 /VCPS PostScript printers, color, portrait Std F77 +! PXDRIV 0 /PRINTRONI Printronix P300 or P600 dot-matrix printer +! QMDRIV 1 /QMS QUIC devices (QMS and Talaris), landscape Std F77 +! QMDRIV 2 /VQMS QUIC devices (QMS and Talaris), portrait Std F77 +! TFDRIV 0 /TFILE Tektronix-format disk file VMS +! TODRIV 0 /TOSHIBA Toshiba "3-in-one" printer, model P351 +! TTDRIV 1 /TEK4010 Tektronix 4006/4010 storage-tube terminal Std F77 +! TTDRIV 2 /GF GraphOn terminal Std F77 +! TTDRIV 3 /RETRO RetroGraphics terminal Std F77 +! TTDRIV 4 /GTERM GTERM Tektronix terminal emulator Std F77 + TTDRIV 5 /XTERM XTERM Tektronix terminal emulator Std F77 +! TTDRIV 6 /ZSTEM ZSTEM terminal emulator Std F77 +! TTDRIV 7 /V603 Visual 603 terminal Std F77 +! TTDRIV 8 /KRM3 Kermit 3 on IBM-PC Std F77 +! TTDRIV 9 /TK4100 Tektronix 4100-series terminals Std F77 +! TTDRIV 10 /VMAC Macintosh VersaTerm-PRO Tektronix-4105 emulator Std F77 +! TXDRIV 0 /TX TeX PK Font Output files +! VADRIV 0 /VCANON Canon Laser printer, LBP-8/A2, portrait +! VBDRIV 0 /VBCANON Canon Laser printer (bitmap version), portrait +! VTDRIV 0 /VT125 Dec Regis terminals (VT125 etc.) Std F77 +! WDDRIV 1 /WD X Window dump file, landscape +! WDDRIV 2 /VWD X Window dump file, portrait +! WSDRIV 0 /WS VAX workstations running VWS software VMS +! X2DRIV 0 /XDISP PGDISP or FIGDISP server for X workstations C + XWDRIV 1 /XWINDOW Workstations running X Window System C + XWDRIV 2 /XSERVE Persistent window on X Window System C +! ZEDRIV 0 /ZETA Zeta 8 Digital Plotter +! +! The following drivers can only be used in PGPLOT installations on MS-DOS +! systems with appropriate hardware and software. Do not select these +! on UNIX or VMS systems. +! +! LHDRIV 0 /LH IBM PCs and clones, Lahey F77 32-bit Fortran v5.0 +! MSDRIV 0 /MSOFT IBM PCs and clones running Microsoft Fortran 5.0 +! SSDRIV 0 /SS IBM PCs and clones, MS-DOS, Salford Software FTN +! +! The following driver can only be used in PGPLOT installations on Acorn +! Archimedes systems with appropriate hardware and software. +! +! ACDRIV 0 /ARC Acorn Archimedes computer +! +! Selection of the XMOTIF driver causes a stub driver to be placed in +! the main PGPLOT library. The real driver is placed in libXmPgplot.a. +! Applications that need the Motif driver should link with libXmPgplot.a +! before the PGPLOT library. This treatment means that only Motif +! applications have to be linked with Motif libraries. +! +! XMDRIV 0 /XMOTIF Motif applications containing XmPgplot widgets. C +! +! Selection of the XATHENA driver causes a stub driver to be placed in +! the main PGPLOT library. The real driver is placed in libXawPgplot.a. +! Applications that need the Athena driver should link with libXawPgplot.a +! before the PGPLOT library. This treatment means that only Athena +! applications have to be linked with Xaw libraries. +! +! XADRIV 0 /XATHENA Motif applications containing XaPgplot widgets. C +! +! Selection of the TK driver causes a stub driver to be placed in +! the main PGPLOT library. The real driver is placed in libtkpgplot.a. +! Applications that need the Tk driver should link with libtkpgplot.a +! before the PGPLOT library. This treatment means that only Tcl/Tk +! applications have to be linked with the Tcl and Tk libraries. +! +! TKDRIV 0 /XTK X-window Tcl/Tk programs with pgplot widgets. C +! +! The following driver is included solely for use by the aips++ team. +! +! RVDRIV 0 /XRV X-window Rivet/Tk programs with pgplot widgets. C diff --git a/pgplot_rhel8/grexec.f b/pgplot_rhel8/grexec.f new file mode 100644 index 0000000..9dc8fb1 --- /dev/null +++ b/pgplot_rhel8/grexec.f @@ -0,0 +1,43 @@ +C*GREXEC -- PGPLOT device handler dispatch routine +C+ + SUBROUTINE GREXEC(IDEV,IFUNC,RBUF,NBUF,CHR,LCHR) + INTEGER IDEV, IFUNC, NBUF, LCHR + REAL RBUF(*) + CHARACTER*(*) CHR +C--- + INTEGER NDEV + PARAMETER (NDEV=10) + CHARACTER*10 MSG +C--- + GOTO(1,2,3,4,5,6,7,8,9,10) IDEV + IF (IDEV.EQ.0) THEN + RBUF(1) = NDEV + NBUF = 1 + ELSE + WRITE (MSG,'(I10)') IDEV + CALL GRWARN('Unknown device code in GREXEC: '//MSG) + END IF + RETURN +C--- +1 CALL GIDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,1) + RETURN +2 CALL GIDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,2) + RETURN +3 CALL NUDRIV(IFUNC,RBUF,NBUF,CHR,LCHR) + RETURN +4 CALL PSDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,1) + RETURN +5 CALL PSDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,2) + RETURN +6 CALL PSDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,3) + RETURN +7 CALL PSDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,4) + RETURN +8 CALL TTDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,5) + RETURN +9 CALL XWDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,1) + RETURN +10 CALL XWDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,2) + RETURN +C + END diff --git a/pgplot_rhel8/grfont.dat b/pgplot_rhel8/grfont.dat new file mode 100644 index 0000000..acde914 Binary files /dev/null and b/pgplot_rhel8/grfont.dat differ diff --git a/pgplot_rhel8/grpckg1.inc b/pgplot_rhel8/grpckg1.inc new file mode 100644 index 0000000..b6a2118 --- /dev/null +++ b/pgplot_rhel8/grpckg1.inc @@ -0,0 +1,98 @@ +C----------------------------------------------------------------------- +C Include file for GRPCKG +C Modifications: +C 29-Jan-1985 - add HP2648 (KS/TJP). +C 16-Sep-1985 - remove tabs (TJP). +C 30-Dec-1985 - add PS, VPS (TJP). +C 27-May-1987 - remove ARGS, NULL, PS, VPS, QMS, VQMS, HIDMP, +C HP7221, GRINL (TJP). +C 6-Jun-1987 - remove PRTX, TRILOG, VERS, VV (TJP). +C 11-Jun-1987 - remove remaining built-in devices (TJP). +C 5-Jul-1987 - replace GRINIT, GRPLTD by GRSTAT. +C 16-Aug-1987 - remove obsolete variables. +C 9-Sep-1989 - add SAVE statement. +C 26-Nov-1990 - remove GRCTYP. +C 5-Jan-1993 - add GRADJU. +C 1-Sep-1994 - add GRGCAP. +C 21-Dec-1995 - increase GRIMAX to 8. +C 30-Apr-1997 - remove GRC{XY}SP +C----------------------------------------------------------------------- +C +C Parameters: +C GRIMAX : maximum number of concurrent devices +C GRFNMX : maximum length of file names +C GRCXSZ : default width of chars (pixels) +C GRCYSZ : default height of chars (pixels) +C + INTEGER GRIMAX, GRFNMX + REAL GRCXSZ, GRCYSZ + PARAMETER (GRIMAX = 8) + PARAMETER (GRFNMX = 90) + PARAMETER (GRCXSZ = 7.0, GRCYSZ = 9.0) +C +C Common blocks: +C GRCIDE : identifier of current plot +C GRGTYP : device type of current plot +C The following are qualified by a plot id: +C GRSTAT : 0 => workstation closed +C 1 => workstation open +C 2 => picture open +C GRPLTD : +C GRDASH : software dashing in effect? +C GRUNIT : unit associated with id +C GRFNLN : length of filename +C GRTYPE : device type +C GRXMXA : x size of plotting surface +C GRYMXA : y size of plotting surface +C GRXMIN : blc of plotting window +C GRYMIN : ditto +C GRXMAX : trc of plotting window +C GRYMAX : ditto +C GRSTYL : line style (integer code) +C GRWIDT : line width (integer code) +C GRCCOL : current color index (integer code) +C GRMNCI : minimum color index on this device +C GRMXCI : maximum color index on this device +C GRCMRK : marker number +C GRXPRE : previous (current) pen position (x) +C GRYPRE : ditto (y) +C GRXORG : transformation variables (GRTRAN) +C GRYORG : ditto +C GRXSCL : ditto +C GRYSCL : ditto +C GRCSCL : character scaling factor +C GRCFAC : +C GRCFNT : character font +C GRFILE : file name (character) +C GRGCAP : device capabilities (character) +C GRPXPI : pixels per inch in x +C GRPYPI : pixels per inch in y +C GRADJU : TRUE if GRSETS (PGPAP) has been called +C + INTEGER GRCIDE, GRGTYP + LOGICAL GRPLTD(GRIMAX), GRDASH(GRIMAX), GRADJU(GRIMAX) + INTEGER GRSTAT(GRIMAX) + INTEGER GRUNIT(GRIMAX), GRFNLN(GRIMAX), GRTYPE(GRIMAX), + 1 GRXMXA(GRIMAX), GRYMXA(GRIMAX), + 2 GRSTYL(GRIMAX), GRWIDT(GRIMAX), GRCCOL(GRIMAX), + 3 GRCMRK(GRIMAX), GRIPAT(GRIMAX), GRCFNT(GRIMAX), + 4 GRMNCI(GRIMAX), GRMXCI(GRIMAX) + REAL GRXMIN(GRIMAX), GRYMIN(GRIMAX), + 1 GRXMAX(GRIMAX), GRYMAX(GRIMAX) + REAL GRXPRE(GRIMAX), GRYPRE(GRIMAX), GRXORG(GRIMAX), + 1 GRYORG(GRIMAX), GRXSCL(GRIMAX), GRYSCL(GRIMAX), + 2 GRCSCL(GRIMAX), GRCFAC(GRIMAX), GRPOFF(GRIMAX), + 3 GRPATN(GRIMAX,8),GRPXPI(GRIMAX),GRPYPI(GRIMAX) + COMMON /GRCM00/ GRCIDE, GRGTYP, GRSTAT, GRPLTD, GRUNIT, + 1 GRFNLN, GRTYPE, GRXMXA, GRYMXA, GRXMIN, GRYMIN, + 2 GRXMAX, GRYMAX, GRWIDT, GRCCOL, GRSTYL, + 3 GRXPRE, GRYPRE, GRXORG, GRYORG, GRXSCL, GRYSCL, + 4 GRCSCL, GRCFAC, GRDASH, GRPATN, GRPOFF, + 5 GRIPAT, GRCFNT, GRCMRK, GRPXPI, GRPYPI, GRADJU, + 6 GRMNCI, GRMXCI +C + CHARACTER*(GRFNMX) GRFILE(GRIMAX) + CHARACTER*11 GRGCAP(GRIMAX) + COMMON /GRCM01/ GRFILE, GRGCAP + SAVE /GRCM00/, /GRCM01/ +C----------------------------------------------------------------------- diff --git a/pgplot_rhel8/libpgplot.a b/pgplot_rhel8/libpgplot.a new file mode 100644 index 0000000..678bdd4 Binary files /dev/null and b/pgplot_rhel8/libpgplot.a differ diff --git a/pgplot_rhel8/libpgplot.so b/pgplot_rhel8/libpgplot.so new file mode 100755 index 0000000..782b001 Binary files /dev/null and b/pgplot_rhel8/libpgplot.so differ diff --git a/pgplot_rhel8/makefile b/pgplot_rhel8/makefile new file mode 100644 index 0000000..c765335 --- /dev/null +++ b/pgplot_rhel8/makefile @@ -0,0 +1,932 @@ +# Makefile for PGPLOT. +# /afs/psi.ch/project/sinq/common/src/pgplot5.2.2/makemake /afs/psi.ch/project/sinq/common/src/pgplot5.2.2 linux gfortran_gcc +# This file is automatically generated. Do not edit. +# +# This generates the PGPLOT binary files (libraries and demos) in the +# current default directory (which need not be the source directory). +#----------------------------------------------------------------------- +SHELL=/bin/sh +# PGPLOT subdirectories +SRC=/afs/psi.ch/project/sinq/common/src/pgplot5.2.2 +SRCDIR=/afs/psi.ch/project/sinq/common/src/pgplot5.2.2/src +OBSDIR=/afs/psi.ch/project/sinq/common/src/pgplot5.2.2/obssrc +DEMDIR=/afs/psi.ch/project/sinq/common/src/pgplot5.2.2/examples +FNTDIR=/afs/psi.ch/project/sinq/common/src/pgplot5.2.2/fonts +DRVDIR=/afs/psi.ch/project/sinq/common/src/pgplot5.2.2/drivers +SYSDIR=/afs/psi.ch/project/sinq/common/src/pgplot5.2.2/sys_linux +PGDDIR=/afs/psi.ch/project/sinq/common/src/pgplot5.2.2/pgdispd +GENDIR=/afs/psi.ch/project/sinq/common/src/pgplot5.2.2/sys +XMDIR=/afs/psi.ch/project/sinq/common/src/pgplot5.2.2/drivers/xmotif +XADIR=/afs/psi.ch/project/sinq/common/src/pgplot5.2.2/drivers/xathena +TKDIR=/afs/psi.ch/project/sinq/common/src/pgplot5.2.2/drivers/xtk +# +# Fortran compiler and compilation flags +# +FCOMPL=gfortran +FFLAGC=-g -ffixed-form -ffixed-line-length-none -u -Wall -fPIC -O +FFLAGD=-fno-backslash +# +# C compiler and compilation flags +# +XINCL=-I/usr/X11R6/include +MOTIF_INCL=-I/usr/X11R6/include +ATHENA_INCL=-I/usr/X11R6/include +TK_INCL=-I/usr/include -I/usr/X11R6/include +RV_INCL= +CCOMPL=gcc +CFLAGC=-Wall -fPIC -DPG_PPU -O -I. +CFLAGD=-Wall -O +MCOMPL= +MFLAGC= +# +# Pgbind flags. +# +PGBIND_FLAGS=bsd +# +# Loader library-flags +# +LIBS=-L/usr/X11R6/lib -lX11 +MOTIF_LIBS=-lXm -lXt -L/usr/X11R6/lib -lX11 +ATHENA_LIBS=-lXaw -lXt -lXmu -lXext -L/usr/X11R6/lib -lX11 +TK_LIBS=-L/usr/lib -ltk -ltcl -L/usr/X11R6/lib -lX11 -ldl +# +# Loader command for PGPLOT library +# +PGPLOT_LIB=-L`pwd` -lpgplot +CPGPLOT_LIB=-L`pwd` -lcpgplot -lpgplot +# +# Shared library creation. +# +SHARED_LIB=libpgplot.so +SHARED_LD=gcc -shared -o libpgplot.so +# +# The libraries that the shared PGPLOT library depends upon. +# This is for systems that allow one to specify what libraries +# undefined symbols of a shared library reside in. Such systems +# (eg. Solaris 2.x) use this information at run time so that users of +# the library don't have to list a slew of other implementation-specific +# libraries when they link their executables. +# +SHARED_LIB_LIBS= +# +# Ranlib command if required +# +RANLIB=ranlib +# +# Routine lists. +# +PG_ROUTINES= pgarro.o pgask.o pgaxis.o pgaxlg.o pgband.o pgbbuf.o pgbeg.o pgbin.o pgbox.o pgbox1.o pgcirc.o pgcl.o pgclos.o pgcn01.o pgcnsc.o pgconb.o pgconf.o pgconl.o pgcons.o pgcont.o pgconx.o pgcp.o pgctab.o pgcurs.o pgdraw.o pgebuf.o pgend.o pgenv.o pgeras.o pgerr1.o pgerrb.o pgerrx.o pgerry.o pgetxt.o pgfunt.o pgfunx.o pgfuny.o pggray.o pghi2d.o pghis1.o pghist.o pghtch.o pgiden.o pgimag.o pginit.o pglab.o pglcur.o pgldev.o pglen.o pgline.o pgmove.o pgmtxt.o pgncur.o pgnoto.o pgnpl.o pgnumb.o pgolin.o pgopen.o pgpage.o pgpanl.o pgpap.o pgpixl.o pgpnts.o pgpoly.o pgpt.o pgpt1.o pgptxt.o pgqah.o pgqcf.o pgqch.o pgqci.o pgqcir.o pgqclp.o pgqcol.o pgqcr.o pgqcs.o pgqdt.o pgqfs.o pgqhs.o pgqid.o pgqinf.o pgqitf.o pgqls.o pgqlw.o pgqndt.o pgqpos.o pgqtbg.o pgqtxt.o pgqvp.o pgqvsz.o pgqwin.o pgrect.o pgrnd.o pgrnge.o pgsah.o pgsave.o pgscf.o pgsch.o pgsci.o pgscir.o pgsclp.o pgscr.o pgscrl.o pgscrn.o pgsfs.o pgshls.o pgshs.o pgsitf.o pgslct.o pgsls.o pgslw.o pgstbg.o pgsubp.o pgsvp.o pgswin.o pgtbox.o pgtext.o pgtick.o pgtikl.o pgupdt.o pgvect.o pgvsiz.o pgvstd.o pgvw.o pgwedg.o pgwnad.o +PG_NON_STANDARD= pgadvance.o pgbegin.o pgcurse.o pglabel.o pgmtext.o pgncurse.o pgpaper.o pgpoint.o pgptext.o pgvport.o pgvsize.o pgvstand.o pgwindow.o +GR_ROUTINES= grarea.o grbpic.o grchsz.o grclip.o grclos.o grclpl.o grctoi.o grcurs.o grdot0.o grdot1.o grdtyp.o gresc.o grepic.o gretxt.o grfa.o grfao.o grgfil.o grgray.o grimg0.o grimg1.o grimg2.o grimg3.o grinit.o gritoc.o grlen.o grlin0.o grlin1.o grlin2.o grlin3.o grlina.o grmcur.o grmker.o grmova.o grmsg.o gropen.o grpage.o grpars.o grpixl.o grpocl.o grprom.o grpxpo.o grpxps.o grpxpx.o grpxre.o grqcap.o grqci.o grqcol.o grqcr.o grqdev.o grqdt.o grqfnt.o grqls.o grqlw.o grqpos.o grqtxt.o grqtyp.o grquit.o grrec0.o grrect.o grsci.o grscr.o grscrl.o grsetc.o grsets.o grsfnt.o grsize.o grskpb.o grslct.o grsls.o grslw.o grsyds.o grsymk.o grsyxd.o grterm.o grtext.o grtoup.o grtrim.o grtrn0.o grtxy0.o grvct0.o grwarn.o grxhls.o grxrgb.o +SYSTEM_ROUTINES= grdate.o grfileio.o grflun.o grgcom.o grgenv.o grgetc.o grglun.o grgmem.o grgmsg.o grlgtr.o groptx.o grsy00.o grtermio.o grtrml.o grtter.o gruser.o +OBSOLETE_ROUTINES= grchar.o grchr0.o grdat2.o grgtc0.o grinqfont.o grinqli.o grinqpen.o grlinr.o grmark.o grmovr.o grsetfont.o grsetli.o grsetpen.o grtran.o grvect.o pgsetc.o pgsize.o +DRIVERS=gidriv.o nudriv.o psdriv.o ttdriv.o xwdriv.o +PGDISP_ROUTINES= cleanup.o pgdisp.o figcurs.o getdata.o getvisuals.o handlexevent.o proccom.o resdb.o exposelgwin.o getcolors.o initlgluts.o initlgwin.o initlock.o initwmattr.o mainloop.o resizelgwin.o returnbuf.o waitevent.o updatelgtitle.o +DEMOS= pgdemo1 pgdemo2 pgdemo3 pgdemo4 pgdemo5 pgdemo6 pgdemo7 pgdemo8 pgdemo9 pgdemo10 pgdemo11 pgdemo12 pgdemo13 pgdemo14 pgdemo15 pgdemo16 pgdemo17 +# +#----------------------------------------------------------------------- +# Target "all" makes everything (except the library of obsolete routines) +#----------------------------------------------------------------------- +all: lib grfont.dat prog pgplot.doc pgxwin_server + @echo ' ';echo '*** Finished compilation of PGPLOT ***';echo ' ' + @echo 'Note that if you plan to install PGPLOT in a different' + @echo 'directory than the current one, the following files will be' + @echo 'needed.' + @echo ' ' + @echo ' libpgplot.a' + @echo ' libpgplot.so' + @echo ' grfont.dat' + @echo ' rgb.txt' + @echo ' pgxwin_server' + @echo ' ' + @echo 'Also note that subsequent usage of PGPLOT programs requires that' + @echo 'the full path of the chosen installation directory be named in' + @echo 'an environment variable named PGPLOT_DIR.' + @echo ' ' + +#----------------------------------------------------------------------- +# Rules for compiling the .o files +#----------------------------------------------------------------------- +pgarro.o: $(SRCDIR)/pgarro.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgarro.f +pgask.o: $(SRCDIR)/pgask.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgask.f +pgaxis.o: $(SRCDIR)/pgaxis.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgaxis.f +pgaxlg.o: $(SRCDIR)/pgaxlg.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgaxlg.f +pgband.o: $(SRCDIR)/pgband.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgband.f +pgbbuf.o: $(SRCDIR)/pgbbuf.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgbbuf.f +pgbeg.o: $(SRCDIR)/pgbeg.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgbeg.f +pgbin.o: $(SRCDIR)/pgbin.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgbin.f +pgbox.o: $(SRCDIR)/pgbox.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgbox.f +pgbox1.o: $(SRCDIR)/pgbox1.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgbox1.f +pgcirc.o: $(SRCDIR)/pgcirc.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgcirc.f +pgcl.o: $(SRCDIR)/pgcl.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgcl.f +pgclos.o: $(SRCDIR)/pgclos.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgclos.f +pgcn01.o: $(SRCDIR)/pgcn01.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgcn01.f +pgcnsc.o: $(SRCDIR)/pgcnsc.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgcnsc.f +pgconb.o: $(SRCDIR)/pgconb.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgconb.f +pgconf.o: $(SRCDIR)/pgconf.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgconf.f +pgconl.o: $(SRCDIR)/pgconl.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgconl.f +pgcons.o: $(SRCDIR)/pgcons.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgcons.f +pgcont.o: $(SRCDIR)/pgcont.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgcont.f +pgconx.o: $(SRCDIR)/pgconx.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgconx.f +pgcp.o: $(SRCDIR)/pgcp.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgcp.f +pgctab.o: $(SRCDIR)/pgctab.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgctab.f +pgcurs.o: $(SRCDIR)/pgcurs.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgcurs.f +pgdraw.o: $(SRCDIR)/pgdraw.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgdraw.f +pgebuf.o: $(SRCDIR)/pgebuf.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgebuf.f +pgend.o: $(SRCDIR)/pgend.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgend.f +pgenv.o: $(SRCDIR)/pgenv.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgenv.f +pgeras.o: $(SRCDIR)/pgeras.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgeras.f +pgerr1.o: $(SRCDIR)/pgerr1.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgerr1.f +pgerrb.o: $(SRCDIR)/pgerrb.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgerrb.f +pgerrx.o: $(SRCDIR)/pgerrx.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgerrx.f +pgerry.o: $(SRCDIR)/pgerry.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgerry.f +pgetxt.o: $(SRCDIR)/pgetxt.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgetxt.f +pgfunt.o: $(SRCDIR)/pgfunt.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgfunt.f +pgfunx.o: $(SRCDIR)/pgfunx.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgfunx.f +pgfuny.o: $(SRCDIR)/pgfuny.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgfuny.f +pggray.o: $(SRCDIR)/pggray.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pggray.f +pghi2d.o: $(SRCDIR)/pghi2d.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pghi2d.f +pghis1.o: $(SRCDIR)/pghis1.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pghis1.f +pghist.o: $(SRCDIR)/pghist.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pghist.f +pghtch.o: $(SRCDIR)/pghtch.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pghtch.f +pgiden.o: $(SRCDIR)/pgiden.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgiden.f +pgimag.o: $(SRCDIR)/pgimag.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgimag.f +pginit.o: $(SRCDIR)/pginit.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pginit.f +pglab.o: $(SRCDIR)/pglab.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pglab.f +pglcur.o: $(SRCDIR)/pglcur.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pglcur.f +pgldev.o: $(SRCDIR)/pgldev.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgldev.f +pglen.o: $(SRCDIR)/pglen.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pglen.f +pgline.o: $(SRCDIR)/pgline.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgline.f +pgmove.o: $(SRCDIR)/pgmove.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgmove.f +pgmtxt.o: $(SRCDIR)/pgmtxt.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgmtxt.f +pgncur.o: $(SRCDIR)/pgncur.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgncur.f +pgnoto.o: $(SRCDIR)/pgnoto.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgnoto.f +pgnpl.o: $(SRCDIR)/pgnpl.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgnpl.f +pgnumb.o: $(SRCDIR)/pgnumb.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgnumb.f +pgolin.o: $(SRCDIR)/pgolin.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgolin.f +pgopen.o: $(SRCDIR)/pgopen.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgopen.f +pgpage.o: $(SRCDIR)/pgpage.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgpage.f +pgpanl.o: $(SRCDIR)/pgpanl.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgpanl.f +pgpap.o: $(SRCDIR)/pgpap.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgpap.f +pgpixl.o: $(SRCDIR)/pgpixl.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgpixl.f +pgpnts.o: $(SRCDIR)/pgpnts.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgpnts.f +pgpoly.o: $(SRCDIR)/pgpoly.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgpoly.f +pgpt.o: $(SRCDIR)/pgpt.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgpt.f +pgpt1.o: $(SRCDIR)/pgpt1.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgpt1.f +pgptxt.o: $(SRCDIR)/pgptxt.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgptxt.f +pgqah.o: $(SRCDIR)/pgqah.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgqah.f +pgqcf.o: $(SRCDIR)/pgqcf.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgqcf.f +pgqch.o: $(SRCDIR)/pgqch.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgqch.f +pgqci.o: $(SRCDIR)/pgqci.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgqci.f +pgqcir.o: $(SRCDIR)/pgqcir.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgqcir.f +pgqclp.o: $(SRCDIR)/pgqclp.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgqclp.f +pgqcol.o: $(SRCDIR)/pgqcol.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgqcol.f +pgqcr.o: $(SRCDIR)/pgqcr.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgqcr.f +pgqcs.o: $(SRCDIR)/pgqcs.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgqcs.f +pgqdt.o: $(SRCDIR)/pgqdt.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgqdt.f +pgqfs.o: $(SRCDIR)/pgqfs.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgqfs.f +pgqhs.o: $(SRCDIR)/pgqhs.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgqhs.f +pgqid.o: $(SRCDIR)/pgqid.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgqid.f +pgqinf.o: $(SRCDIR)/pgqinf.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgqinf.f +pgqitf.o: $(SRCDIR)/pgqitf.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgqitf.f +pgqls.o: $(SRCDIR)/pgqls.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgqls.f +pgqlw.o: $(SRCDIR)/pgqlw.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgqlw.f +pgqndt.o: $(SRCDIR)/pgqndt.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgqndt.f +pgqpos.o: $(SRCDIR)/pgqpos.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgqpos.f +pgqtbg.o: $(SRCDIR)/pgqtbg.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgqtbg.f +pgqtxt.o: $(SRCDIR)/pgqtxt.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgqtxt.f +pgqvp.o: $(SRCDIR)/pgqvp.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgqvp.f +pgqvsz.o: $(SRCDIR)/pgqvsz.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgqvsz.f +pgqwin.o: $(SRCDIR)/pgqwin.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgqwin.f +pgrect.o: $(SRCDIR)/pgrect.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgrect.f +pgrnd.o: $(SRCDIR)/pgrnd.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgrnd.f +pgrnge.o: $(SRCDIR)/pgrnge.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgrnge.f +pgsah.o: $(SRCDIR)/pgsah.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgsah.f +pgsave.o: $(SRCDIR)/pgsave.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgsave.f +pgscf.o: $(SRCDIR)/pgscf.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgscf.f +pgsch.o: $(SRCDIR)/pgsch.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgsch.f +pgsci.o: $(SRCDIR)/pgsci.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgsci.f +pgscir.o: $(SRCDIR)/pgscir.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgscir.f +pgsclp.o: $(SRCDIR)/pgsclp.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgsclp.f +pgscr.o: $(SRCDIR)/pgscr.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgscr.f +pgscrl.o: $(SRCDIR)/pgscrl.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgscrl.f +pgscrn.o: $(SRCDIR)/pgscrn.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgscrn.f +pgsfs.o: $(SRCDIR)/pgsfs.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgsfs.f +pgshls.o: $(SRCDIR)/pgshls.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgshls.f +pgshs.o: $(SRCDIR)/pgshs.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgshs.f +pgsitf.o: $(SRCDIR)/pgsitf.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgsitf.f +pgslct.o: $(SRCDIR)/pgslct.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgslct.f +pgsls.o: $(SRCDIR)/pgsls.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgsls.f +pgslw.o: $(SRCDIR)/pgslw.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgslw.f +pgstbg.o: $(SRCDIR)/pgstbg.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgstbg.f +pgsubp.o: $(SRCDIR)/pgsubp.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgsubp.f +pgsvp.o: $(SRCDIR)/pgsvp.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgsvp.f +pgswin.o: $(SRCDIR)/pgswin.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgswin.f +pgtbox.o: $(SRCDIR)/pgtbox.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgtbox.f +pgtext.o: $(SRCDIR)/pgtext.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgtext.f +pgtick.o: $(SRCDIR)/pgtick.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgtick.f +pgtikl.o: $(SRCDIR)/pgtikl.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgtikl.f +pgupdt.o: $(SRCDIR)/pgupdt.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgupdt.f +pgvect.o: $(SRCDIR)/pgvect.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgvect.f +pgvsiz.o: $(SRCDIR)/pgvsiz.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgvsiz.f +pgvstd.o: $(SRCDIR)/pgvstd.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgvstd.f +pgvw.o: $(SRCDIR)/pgvw.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgvw.f +pgwedg.o: $(SRCDIR)/pgwedg.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgwedg.f +pgwnad.o: $(SRCDIR)/pgwnad.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgwnad.f +pgadvance.o: $(SRCDIR)/pgadvance.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgadvance.f +pgbegin.o: $(SRCDIR)/pgbegin.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgbegin.f +pgcurse.o: $(SRCDIR)/pgcurse.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgcurse.f +pglabel.o: $(SRCDIR)/pglabel.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pglabel.f +pgmtext.o: $(SRCDIR)/pgmtext.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgmtext.f +pgncurse.o: $(SRCDIR)/pgncurse.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgncurse.f +pgpaper.o: $(SRCDIR)/pgpaper.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgpaper.f +pgpoint.o: $(SRCDIR)/pgpoint.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgpoint.f +pgptext.o: $(SRCDIR)/pgptext.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgptext.f +pgvport.o: $(SRCDIR)/pgvport.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgvport.f +pgvsize.o: $(SRCDIR)/pgvsize.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgvsize.f +pgvstand.o: $(SRCDIR)/pgvstand.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgvstand.f +pgwindow.o: $(SRCDIR)/pgwindow.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/pgwindow.f +grarea.o: $(SRCDIR)/grarea.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grarea.f +grbpic.o: $(SRCDIR)/grbpic.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grbpic.f +grchsz.o: $(SRCDIR)/grchsz.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grchsz.f +grclip.o: $(SRCDIR)/grclip.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grclip.f +grclos.o: $(SRCDIR)/grclos.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grclos.f +grclpl.o: $(SRCDIR)/grclpl.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grclpl.f +grctoi.o: $(SRCDIR)/grctoi.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grctoi.f +grcurs.o: $(SRCDIR)/grcurs.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grcurs.f +grdot0.o: $(SRCDIR)/grdot0.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grdot0.f +grdot1.o: $(SRCDIR)/grdot1.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grdot1.f +grdtyp.o: $(SRCDIR)/grdtyp.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grdtyp.f +gresc.o: $(SRCDIR)/gresc.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/gresc.f +grepic.o: $(SRCDIR)/grepic.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grepic.f +gretxt.o: $(SRCDIR)/gretxt.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/gretxt.f +grfa.o: $(SRCDIR)/grfa.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grfa.f +grfao.o: $(SRCDIR)/grfao.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grfao.f +grgfil.o: $(SRCDIR)/grgfil.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grgfil.f +grgray.o: $(SRCDIR)/grgray.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grgray.f +grimg0.o: $(SRCDIR)/grimg0.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grimg0.f +grimg1.o: $(SRCDIR)/grimg1.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grimg1.f +grimg2.o: $(SRCDIR)/grimg2.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grimg2.f +grimg3.o: $(SRCDIR)/grimg3.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grimg3.f +grinit.o: $(SRCDIR)/grinit.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grinit.f +gritoc.o: $(SRCDIR)/gritoc.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/gritoc.f +grlen.o: $(SRCDIR)/grlen.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grlen.f +grlin0.o: $(SRCDIR)/grlin0.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grlin0.f +grlin1.o: $(SRCDIR)/grlin1.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grlin1.f +grlin2.o: $(SRCDIR)/grlin2.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grlin2.f +grlin3.o: $(SRCDIR)/grlin3.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grlin3.f +grlina.o: $(SRCDIR)/grlina.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grlina.f +grmcur.o: $(SRCDIR)/grmcur.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grmcur.f +grmker.o: $(SRCDIR)/grmker.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grmker.f +grmova.o: $(SRCDIR)/grmova.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grmova.f +grmsg.o: $(SRCDIR)/grmsg.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grmsg.f +gropen.o: $(SRCDIR)/gropen.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/gropen.f +grpage.o: $(SRCDIR)/grpage.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grpage.f +grpars.o: $(SRCDIR)/grpars.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grpars.f +grpixl.o: $(SRCDIR)/grpixl.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grpixl.f +grpocl.o: $(SRCDIR)/grpocl.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grpocl.f +grprom.o: $(SRCDIR)/grprom.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grprom.f +grpxpo.o: $(SRCDIR)/grpxpo.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grpxpo.f +grpxps.o: $(SRCDIR)/grpxps.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grpxps.f +grpxpx.o: $(SRCDIR)/grpxpx.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grpxpx.f +grpxre.o: $(SRCDIR)/grpxre.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grpxre.f +grqcap.o: $(SRCDIR)/grqcap.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grqcap.f +grqci.o: $(SRCDIR)/grqci.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grqci.f +grqcol.o: $(SRCDIR)/grqcol.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grqcol.f +grqcr.o: $(SRCDIR)/grqcr.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grqcr.f +grqdev.o: $(SRCDIR)/grqdev.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grqdev.f +grqdt.o: $(SRCDIR)/grqdt.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grqdt.f +grqfnt.o: $(SRCDIR)/grqfnt.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grqfnt.f +grqls.o: $(SRCDIR)/grqls.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grqls.f +grqlw.o: $(SRCDIR)/grqlw.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grqlw.f +grqpos.o: $(SRCDIR)/grqpos.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grqpos.f +grqtxt.o: $(SRCDIR)/grqtxt.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grqtxt.f +grqtyp.o: $(SRCDIR)/grqtyp.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grqtyp.f +grquit.o: $(SRCDIR)/grquit.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grquit.f +grrec0.o: $(SRCDIR)/grrec0.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grrec0.f +grrect.o: $(SRCDIR)/grrect.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grrect.f +grsci.o: $(SRCDIR)/grsci.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grsci.f +grscr.o: $(SRCDIR)/grscr.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grscr.f +grscrl.o: $(SRCDIR)/grscrl.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grscrl.f +grsetc.o: $(SRCDIR)/grsetc.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grsetc.f +grsets.o: $(SRCDIR)/grsets.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grsets.f +grsfnt.o: $(SRCDIR)/grsfnt.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grsfnt.f +grsize.o: $(SRCDIR)/grsize.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grsize.f +grskpb.o: $(SRCDIR)/grskpb.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grskpb.f +grslct.o: $(SRCDIR)/grslct.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grslct.f +grsls.o: $(SRCDIR)/grsls.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grsls.f +grslw.o: $(SRCDIR)/grslw.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grslw.f +grsyds.o: $(SRCDIR)/grsyds.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grsyds.f +grsymk.o: $(SRCDIR)/grsymk.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grsymk.f +grsyxd.o: $(SRCDIR)/grsyxd.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grsyxd.f +grterm.o: $(SRCDIR)/grterm.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grterm.f +grtext.o: $(SRCDIR)/grtext.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grtext.f +grtoup.o: $(SRCDIR)/grtoup.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grtoup.f +grtrim.o: $(SRCDIR)/grtrim.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grtrim.f +grtrn0.o: $(SRCDIR)/grtrn0.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grtrn0.f +grtxy0.o: $(SRCDIR)/grtxy0.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grtxy0.f +grvct0.o: $(SRCDIR)/grvct0.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grvct0.f +grwarn.o: $(SRCDIR)/grwarn.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grwarn.f +grxhls.o: $(SRCDIR)/grxhls.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grxhls.f +grxrgb.o: $(SRCDIR)/grxrgb.f + $(FCOMPL) -c $(FFLAGC) $(SRCDIR)/grxrgb.f +grdate.o: $(GENDIR)/grdate.c + $(CCOMPL) -c $(CFLAGC) $(GENDIR)/grdate.c +grfileio.o: $(GENDIR)/grfileio.c + $(CCOMPL) -c $(CFLAGC) $(GENDIR)/grfileio.c +grflun.o: $(GENDIR)/grflun.f + $(FCOMPL) -c $(FFLAGC) $(GENDIR)/grflun.f +grgcom.o: $(GENDIR)/grgcom.f + $(FCOMPL) -c $(FFLAGC) $(GENDIR)/grgcom.f +grgenv.o: $(GENDIR)/grgenv.f + $(FCOMPL) -c $(FFLAGC) $(GENDIR)/grgenv.f +grgetc.o: $(GENDIR)/grgetc.c + $(CCOMPL) -c $(CFLAGC) $(GENDIR)/grgetc.c +grglun.o: $(GENDIR)/grglun.f + $(FCOMPL) -c $(FFLAGC) $(GENDIR)/grglun.f +grgmem.o: $(GENDIR)/grgmem.c + $(CCOMPL) -c $(CFLAGC) $(GENDIR)/grgmem.c +grgmsg.o: $(GENDIR)/grgmsg.f + $(FCOMPL) -c $(FFLAGC) $(GENDIR)/grgmsg.f +grlgtr.o: $(GENDIR)/grlgtr.f + $(FCOMPL) -c $(FFLAGC) $(GENDIR)/grlgtr.f +groptx.o: $(GENDIR)/groptx.f + $(FCOMPL) -c $(FFLAGC) $(GENDIR)/groptx.f +grsy00.o: $(GENDIR)/grsy00.f + $(FCOMPL) -c $(FFLAGC) $(GENDIR)/grsy00.f +grtermio.o: $(GENDIR)/grtermio.c + $(CCOMPL) -c $(CFLAGC) $(GENDIR)/grtermio.c +grtrml.o: $(GENDIR)/grtrml.f + $(FCOMPL) -c $(FFLAGC) $(GENDIR)/grtrml.f +grtter.o: $(GENDIR)/grtter.f + $(FCOMPL) -c $(FFLAGC) $(GENDIR)/grtter.f +gruser.o: $(GENDIR)/gruser.c + $(CCOMPL) -c $(CFLAGC) $(GENDIR)/gruser.c +grchar.o: $(OBSDIR)/grchar.f + $(FCOMPL) -c $(FFLAGC) $(OBSDIR)/grchar.f +grchr0.o: $(OBSDIR)/grchr0.f + $(FCOMPL) -c $(FFLAGC) $(OBSDIR)/grchr0.f +grdat2.o: $(OBSDIR)/grdat2.f + $(FCOMPL) -c $(FFLAGC) $(OBSDIR)/grdat2.f +grgtc0.o: $(OBSDIR)/grgtc0.f + $(FCOMPL) -c $(FFLAGC) $(OBSDIR)/grgtc0.f +grinqfont.o: $(OBSDIR)/grinqfont.f + $(FCOMPL) -c $(FFLAGC) $(OBSDIR)/grinqfont.f +grinqli.o: $(OBSDIR)/grinqli.f + $(FCOMPL) -c $(FFLAGC) $(OBSDIR)/grinqli.f +grinqpen.o: $(OBSDIR)/grinqpen.f + $(FCOMPL) -c $(FFLAGC) $(OBSDIR)/grinqpen.f +grlinr.o: $(OBSDIR)/grlinr.f + $(FCOMPL) -c $(FFLAGC) $(OBSDIR)/grlinr.f +grmark.o: $(OBSDIR)/grmark.f + $(FCOMPL) -c $(FFLAGC) $(OBSDIR)/grmark.f +grmovr.o: $(OBSDIR)/grmovr.f + $(FCOMPL) -c $(FFLAGC) $(OBSDIR)/grmovr.f +grsetfont.o: $(OBSDIR)/grsetfont.f + $(FCOMPL) -c $(FFLAGC) $(OBSDIR)/grsetfont.f +grsetli.o: $(OBSDIR)/grsetli.f + $(FCOMPL) -c $(FFLAGC) $(OBSDIR)/grsetli.f +grsetpen.o: $(OBSDIR)/grsetpen.f + $(FCOMPL) -c $(FFLAGC) $(OBSDIR)/grsetpen.f +grtran.o: $(OBSDIR)/grtran.f + $(FCOMPL) -c $(FFLAGC) $(OBSDIR)/grtran.f +grvect.o: $(OBSDIR)/grvect.f + $(FCOMPL) -c $(FFLAGC) $(OBSDIR)/grvect.f +pgsetc.o: $(OBSDIR)/pgsetc.f + $(FCOMPL) -c $(FFLAGC) $(OBSDIR)/pgsetc.f +pgsize.o: $(OBSDIR)/pgsize.f + $(FCOMPL) -c $(FFLAGC) $(OBSDIR)/pgsize.f +cleanup.o: $(PGDDIR)/cleanup.c + $(CCOMPL) -c $(CFLAGC) $(XINCL) -DPGDISP $(PGDDIR)/cleanup.c +pgdisp.o: $(PGDDIR)/pgdisp.c + $(CCOMPL) -c $(CFLAGC) $(XINCL) -DPGDISP $(PGDDIR)/pgdisp.c +figcurs.o: $(PGDDIR)/figcurs.c + $(CCOMPL) -c $(CFLAGC) $(XINCL) -DPGDISP $(PGDDIR)/figcurs.c +getdata.o: $(PGDDIR)/getdata.c + $(CCOMPL) -c $(CFLAGC) $(XINCL) -DPGDISP $(PGDDIR)/getdata.c +getvisuals.o: $(PGDDIR)/getvisuals.c + $(CCOMPL) -c $(CFLAGC) $(XINCL) -DPGDISP $(PGDDIR)/getvisuals.c +handlexevent.o: $(PGDDIR)/handlexevent.c + $(CCOMPL) -c $(CFLAGC) $(XINCL) -DPGDISP $(PGDDIR)/handlexevent.c +proccom.o: $(PGDDIR)/proccom.c + $(CCOMPL) -c $(CFLAGC) $(XINCL) -DPGDISP $(PGDDIR)/proccom.c +resdb.o: $(PGDDIR)/resdb.c + $(CCOMPL) -c $(CFLAGC) $(XINCL) -DPGDISP $(PGDDIR)/resdb.c +exposelgwin.o: $(PGDDIR)/exposelgwin.c + $(CCOMPL) -c $(CFLAGC) $(XINCL) -DPGDISP $(PGDDIR)/exposelgwin.c +getcolors.o: $(PGDDIR)/getcolors.c + $(CCOMPL) -c $(CFLAGC) $(XINCL) -DPGDISP $(PGDDIR)/getcolors.c +initlgluts.o: $(PGDDIR)/initlgluts.c + $(CCOMPL) -c $(CFLAGC) $(XINCL) -DPGDISP $(PGDDIR)/initlgluts.c +initlgwin.o: $(PGDDIR)/initlgwin.c + $(CCOMPL) -c $(CFLAGC) $(XINCL) -DPGDISP $(PGDDIR)/initlgwin.c +initlock.o: $(PGDDIR)/initlock.c + $(CCOMPL) -c $(CFLAGC) $(XINCL) -DPGDISP $(PGDDIR)/initlock.c +initwmattr.o: $(PGDDIR)/initwmattr.c + $(CCOMPL) -c $(CFLAGC) $(XINCL) -DPGDISP $(PGDDIR)/initwmattr.c +mainloop.o: $(PGDDIR)/mainloop.c + $(CCOMPL) -c $(CFLAGC) $(XINCL) -DPGDISP $(PGDDIR)/mainloop.c +resizelgwin.o: $(PGDDIR)/resizelgwin.c + $(CCOMPL) -c $(CFLAGC) $(XINCL) -DPGDISP $(PGDDIR)/resizelgwin.c +returnbuf.o: $(PGDDIR)/returnbuf.c + $(CCOMPL) -c $(CFLAGC) $(XINCL) -DPGDISP $(PGDDIR)/returnbuf.c +waitevent.o: $(PGDDIR)/waitevent.c + $(CCOMPL) -c $(CFLAGC) $(XINCL) -DPGDISP $(PGDDIR)/waitevent.c +updatelgtitle.o: $(PGDDIR)/updatelgtitle.c + $(CCOMPL) -c $(CFLAGC) $(XINCL) -DPGDISP $(PGDDIR)/updatelgtitle.c +gidriv.o: $(DRVDIR)/gidriv.f + $(FCOMPL) -c $(FFLAGC) $(DRVDIR)/gidriv.f +nudriv.o: $(DRVDIR)/nudriv.f + $(FCOMPL) -c $(FFLAGC) $(DRVDIR)/nudriv.f +psdriv.o: $(DRVDIR)/psdriv.f + $(FCOMPL) -c $(FFLAGC) $(DRVDIR)/psdriv.f +ttdriv.o: $(DRVDIR)/ttdriv.f + $(FCOMPL) -c $(FFLAGC) $(DRVDIR)/ttdriv.f +xwdriv.o: $(DRVDIR)/xwdriv.c + $(CCOMPL) -c $(CFLAGC) $(XINCL) $(DRVDIR)/xwdriv.c + +#----------------------------------------------------------------------- +# The device-driver dispatch routine is generated automatically by +# reading the "drivers.list" file. +#----------------------------------------------------------------------- + +DISPATCH_ROUTINE=grexec.o + +grexec.o: grexec.f + $(FCOMPL) -c $(FFLAGC) grexec.f + +#----------------------------------------------------------------------- +# Target "lib" is used to built the PGPLOT subroutine library. +# libpgplot.a is the primary PGPLOT object library. +# "shared" is an optional target for operating systems that allow shared +# libraries. +#----------------------------------------------------------------------- + +lib : libpgplot.a $(SHARED_LIB) + +libpgplot.a : $(PG_ROUTINES) $(PG_NON_STANDARD) $(GR_ROUTINES) \ + $(DISPATCH_ROUTINE) $(DRIVERS) $(SYSTEM_ROUTINES) + ar ru libpgplot.a \ + `ls $(PG_ROUTINES) \ + $(PG_NON_STANDARD) $(GR_ROUTINES) $(DISPATCH_ROUTINE) \ + $(DRIVERS) $(SYSTEM_ROUTINES) | sort | uniq` + $(RANLIB) libpgplot.a + +$(SHARED_LIB): $(PG_ROUTINES) $(PG_NON_STANDARD) \ + $(GR_ROUTINES) $(DISPATCH_ROUTINE) $(DRIVERS) $(SYSTEM_ROUTINES) + $(SHARED_LD) `ls $(PG_ROUTINES) \ + $(PG_NON_STANDARD) $(GR_ROUTINES) $(DISPATCH_ROUTINE) \ + $(DRIVERS) $(SYSTEM_ROUTINES) | sort | uniq` $(SHARED_LIB_LIBS) + +#----------------------------------------------------------------------- +# libpgobs.a contains obsolete routines used by some programs +#----------------------------------------------------------------------- +libpgobs.a : $(OBSOLETE_ROUTINES) + ar ru libpgobs.a $(OBSOLETE_ROUTINES) + $(RANLIB) libpgobs.a + +#----------------------------------------------------------------------- +# Target "prog" is used to make the demo programs. They can also be made +# individually. +#----------------------------------------------------------------------- +prog: $(DEMOS) + +pgdemo1: $(DEMDIR)/pgdemo1.f + $(FCOMPL) $(FFLAGD) -o pgdemo1 $(DEMDIR)/pgdemo1.f $(PGPLOT_LIB) $(LIBS) +pgdemo2: $(DEMDIR)/pgdemo2.f + $(FCOMPL) $(FFLAGD) -o pgdemo2 $(DEMDIR)/pgdemo2.f $(PGPLOT_LIB) $(LIBS) +pgdemo3: $(DEMDIR)/pgdemo3.f + $(FCOMPL) $(FFLAGD) -o pgdemo3 $(DEMDIR)/pgdemo3.f $(PGPLOT_LIB) $(LIBS) +pgdemo4: $(DEMDIR)/pgdemo4.f + $(FCOMPL) $(FFLAGD) -o pgdemo4 $(DEMDIR)/pgdemo4.f $(PGPLOT_LIB) $(LIBS) +pgdemo5: $(DEMDIR)/pgdemo5.f + $(FCOMPL) $(FFLAGD) -o pgdemo5 $(DEMDIR)/pgdemo5.f $(PGPLOT_LIB) $(LIBS) +pgdemo6: $(DEMDIR)/pgdemo6.f + $(FCOMPL) $(FFLAGD) -o pgdemo6 $(DEMDIR)/pgdemo6.f $(PGPLOT_LIB) $(LIBS) +pgdemo7: $(DEMDIR)/pgdemo7.f + $(FCOMPL) $(FFLAGD) -o pgdemo7 $(DEMDIR)/pgdemo7.f $(PGPLOT_LIB) $(LIBS) +pgdemo8: $(DEMDIR)/pgdemo8.f + $(FCOMPL) $(FFLAGD) -o pgdemo8 $(DEMDIR)/pgdemo8.f $(PGPLOT_LIB) $(LIBS) +pgdemo9: $(DEMDIR)/pgdemo9.f + $(FCOMPL) $(FFLAGD) -o pgdemo9 $(DEMDIR)/pgdemo9.f $(PGPLOT_LIB) $(LIBS) +pgdemo10: $(DEMDIR)/pgdemo10.f + $(FCOMPL) $(FFLAGD) -o pgdemo10 $(DEMDIR)/pgdemo10.f $(PGPLOT_LIB) $(LIBS) +pgdemo11: $(DEMDIR)/pgdemo11.f + $(FCOMPL) $(FFLAGD) -o pgdemo11 $(DEMDIR)/pgdemo11.f $(PGPLOT_LIB) $(LIBS) +pgdemo12: $(DEMDIR)/pgdemo12.f + $(FCOMPL) $(FFLAGD) -o pgdemo12 $(DEMDIR)/pgdemo12.f $(PGPLOT_LIB) $(LIBS) +pgdemo13: $(DEMDIR)/pgdemo13.f + $(FCOMPL) $(FFLAGD) -o pgdemo13 $(DEMDIR)/pgdemo13.f $(PGPLOT_LIB) $(LIBS) +pgdemo14: $(DEMDIR)/pgdemo14.f + $(FCOMPL) $(FFLAGD) -o pgdemo14 $(DEMDIR)/pgdemo14.f $(PGPLOT_LIB) $(LIBS) +pgdemo15: $(DEMDIR)/pgdemo15.f + $(FCOMPL) $(FFLAGD) -o pgdemo15 $(DEMDIR)/pgdemo15.f $(PGPLOT_LIB) $(LIBS) +pgdemo16: $(DEMDIR)/pgdemo16.f + $(FCOMPL) $(FFLAGD) -o pgdemo16 $(DEMDIR)/pgdemo16.f $(PGPLOT_LIB) $(LIBS) +pgdemo17: $(DEMDIR)/pgdemo17.f + $(FCOMPL) $(FFLAGD) -o pgdemo17 $(DEMDIR)/pgdemo17.f $(PGPLOT_LIB) $(LIBS) + +#----------------------------------------------------------------------- +# Target "grfont.dat" is the binary font file. +# This is created from grfont.txt with the "pgpack" program. +# (a) compile the `pgpack' program; then +# (b) run `pgpack' to convert the ASCII version of the font file +# (grfont.txt) into the binary version (grfont.dat). When executed, +# `pgpack' should report: +# Characters defined: 996 +# Array cells used: 26732 +#----------------------------------------------------------------------- + +grfont.dat: $(FNTDIR)/grfont.txt $(FNTDIR)/pgpack.f + $(FCOMPL) $(FFLAGC) -o pgpack $(FNTDIR)/pgpack.f + rm -f grfont.dat + ./pgpack <$(FNTDIR)/grfont.txt + rm -f pgpack + +#----------------------------------------------------------------------- +# Documentation files +#----------------------------------------------------------------------- + +PG_SOURCE= $(SRCDIR)/pgarro.f $(SRCDIR)/pgask.f $(SRCDIR)/pgaxis.f $(SRCDIR)/pgaxlg.f $(SRCDIR)/pgband.f $(SRCDIR)/pgbbuf.f $(SRCDIR)/pgbeg.f $(SRCDIR)/pgbin.f $(SRCDIR)/pgbox.f $(SRCDIR)/pgbox1.f $(SRCDIR)/pgcirc.f $(SRCDIR)/pgcl.f $(SRCDIR)/pgclos.f $(SRCDIR)/pgcn01.f $(SRCDIR)/pgcnsc.f $(SRCDIR)/pgconb.f $(SRCDIR)/pgconf.f $(SRCDIR)/pgconl.f $(SRCDIR)/pgcons.f $(SRCDIR)/pgcont.f $(SRCDIR)/pgconx.f $(SRCDIR)/pgcp.f $(SRCDIR)/pgctab.f $(SRCDIR)/pgcurs.f $(SRCDIR)/pgdraw.f $(SRCDIR)/pgebuf.f $(SRCDIR)/pgend.f $(SRCDIR)/pgenv.f $(SRCDIR)/pgeras.f $(SRCDIR)/pgerr1.f $(SRCDIR)/pgerrb.f $(SRCDIR)/pgerrx.f $(SRCDIR)/pgerry.f $(SRCDIR)/pgetxt.f $(SRCDIR)/pgfunt.f $(SRCDIR)/pgfunx.f $(SRCDIR)/pgfuny.f $(SRCDIR)/pggray.f $(SRCDIR)/pghi2d.f $(SRCDIR)/pghis1.f $(SRCDIR)/pghist.f $(SRCDIR)/pghtch.f $(SRCDIR)/pgiden.f $(SRCDIR)/pgimag.f $(SRCDIR)/pginit.f $(SRCDIR)/pglab.f $(SRCDIR)/pglcur.f $(SRCDIR)/pgldev.f $(SRCDIR)/pglen.f $(SRCDIR)/pgline.f $(SRCDIR)/pgmove.f $(SRCDIR)/pgmtxt.f $(SRCDIR)/pgncur.f $(SRCDIR)/pgnoto.f $(SRCDIR)/pgnpl.f $(SRCDIR)/pgnumb.f $(SRCDIR)/pgolin.f $(SRCDIR)/pgopen.f $(SRCDIR)/pgpage.f $(SRCDIR)/pgpanl.f $(SRCDIR)/pgpap.f $(SRCDIR)/pgpixl.f $(SRCDIR)/pgpnts.f $(SRCDIR)/pgpoly.f $(SRCDIR)/pgpt.f $(SRCDIR)/pgpt1.f $(SRCDIR)/pgptxt.f $(SRCDIR)/pgqah.f $(SRCDIR)/pgqcf.f $(SRCDIR)/pgqch.f $(SRCDIR)/pgqci.f $(SRCDIR)/pgqcir.f $(SRCDIR)/pgqclp.f $(SRCDIR)/pgqcol.f $(SRCDIR)/pgqcr.f $(SRCDIR)/pgqcs.f $(SRCDIR)/pgqdt.f $(SRCDIR)/pgqfs.f $(SRCDIR)/pgqhs.f $(SRCDIR)/pgqid.f $(SRCDIR)/pgqinf.f $(SRCDIR)/pgqitf.f $(SRCDIR)/pgqls.f $(SRCDIR)/pgqlw.f $(SRCDIR)/pgqndt.f $(SRCDIR)/pgqpos.f $(SRCDIR)/pgqtbg.f $(SRCDIR)/pgqtxt.f $(SRCDIR)/pgqvp.f $(SRCDIR)/pgqvsz.f $(SRCDIR)/pgqwin.f $(SRCDIR)/pgrect.f $(SRCDIR)/pgrnd.f $(SRCDIR)/pgrnge.f $(SRCDIR)/pgsah.f $(SRCDIR)/pgsave.f $(SRCDIR)/pgscf.f $(SRCDIR)/pgsch.f $(SRCDIR)/pgsci.f $(SRCDIR)/pgscir.f $(SRCDIR)/pgsclp.f $(SRCDIR)/pgscr.f $(SRCDIR)/pgscrl.f $(SRCDIR)/pgscrn.f $(SRCDIR)/pgsfs.f $(SRCDIR)/pgshls.f $(SRCDIR)/pgshs.f $(SRCDIR)/pgsitf.f $(SRCDIR)/pgslct.f $(SRCDIR)/pgsls.f $(SRCDIR)/pgslw.f $(SRCDIR)/pgstbg.f $(SRCDIR)/pgsubp.f $(SRCDIR)/pgsvp.f $(SRCDIR)/pgswin.f $(SRCDIR)/pgtbox.f $(SRCDIR)/pgtext.f $(SRCDIR)/pgtick.f $(SRCDIR)/pgtikl.f $(SRCDIR)/pgupdt.f $(SRCDIR)/pgvect.f $(SRCDIR)/pgvsiz.f $(SRCDIR)/pgvstd.f $(SRCDIR)/pgvw.f $(SRCDIR)/pgwedg.f $(SRCDIR)/pgwnad.f $(SRCDIR)/pgadvance.f $(SRCDIR)/pgbegin.f $(SRCDIR)/pgcurse.f $(SRCDIR)/pglabel.f $(SRCDIR)/pgmtext.f $(SRCDIR)/pgncurse.f $(SRCDIR)/pgpaper.f $(SRCDIR)/pgpoint.f $(SRCDIR)/pgptext.f $(SRCDIR)/pgvport.f $(SRCDIR)/pgvsize.f $(SRCDIR)/pgvstand.f $(SRCDIR)/pgwindow.f +pgplot.doc: $(PG_SOURCE) + /afs/psi.ch/project/sinq/common/src/pgplot5.2.2/makedoc $(PG_SOURCE) > pgplot.doc +pgplot.html: $(PG_SOURCE) + /afs/psi.ch/project/sinq/common/src/pgplot5.2.2/makehtml $(PG_SOURCE) > pgplot.html +pgplot.hlp: $(PG_SOURCE) + /afs/psi.ch/project/sinq/common/src/pgplot5.2.2/makehelp $(PG_SOURCE) > pgplot.hlp +pgplot-routines.tex: $(PG_SOURCE) + /afs/psi.ch/project/sinq/common/src/pgplot5.2.2/maketex $(PG_SOURCE) > pgplot-routines.tex + +#----------------------------------------------------------------------- +# Target "pgxwin_server" is the server program for the XW driver +#----------------------------------------------------------------------- +pgxwin_server: $(DRVDIR)/pgxwin_server.c + $(CCOMPL) $(CFLAGC) $(XINCL) -o pgxwin_server $(DRVDIR)/pgxwin_server.c $(LIBS) + +#----------------------------------------------------------------------- +# Target "pgdisp" is the pgdisp server program for /XDISP driver +#----------------------------------------------------------------------- +pgdisp: $(PGDISP_ROUTINES) + $(CCOMPL) $(CFLAGC) -o pgdisp $(PGDISP_ROUTINES) $(LIBS) + +#----------------------------------------------------------------------- +# Target "libxmpgplot.a" contains the Motif widget driver. +#----------------------------------------------------------------------- + +libXmPgplot.a: XmPgplot.o + ar ru libXmPgplot.a XmPgplot.o + $(RANLIB) libXmPgplot.a + +XmPgplot.h: $(XMDIR)/XmPgplot.h + cp $(XMDIR)/XmPgplot.h XmPgplot.h + +XmPgplot.o: $(DRVDIR)/pgxwin.h XmPgplot.h $(XMDIR)/XmPgplotP.h $(XMDIR)/XmPgplot.c + $(CCOMPL) -c $(CFLAGC) -I$(DRVDIR) -I$(XMDIR) $(MOTIF_INCL) $(XMDIR)/XmPgplot.c + +#----------------------------------------------------------------------- +# Target "libxapgplot.a" contains the Motif widget driver. +#----------------------------------------------------------------------- + +libXaPgplot.a: XaPgplot.o + ar ru libXaPgplot.a XaPgplot.o + $(RANLIB) libXaPgplot.a + +XaPgplot.h: $(XADIR)/XaPgplot.h + cp $(XADIR)/XaPgplot.h XaPgplot.h + +XaPgplot.o: $(DRVDIR)/pgxwin.h XaPgplot.h $(XADIR)/XaPgplotP.h $(XADIR)/XaPgplot.c + $(CCOMPL) -c $(CFLAGC) -I$(DRVDIR) -I$(XADIR) $(MOTIF_INCL) $(XADIR)/XaPgplot.c + +#----------------------------------------------------------------------- +# Target "libtkpgplot.a" contains the Tk widget driver. +#----------------------------------------------------------------------- + +libtkpgplot.a: tkpgplot.o + ar ru libtkpgplot.a tkpgplot.o + $(RANLIB) libtkpgplot.a + +tkpgplot.h: $(TKDIR)/tkpgplot.h + cp $(TKDIR)/tkpgplot.h tkpgplot.h + +tkpgplot.o: $(DRVDIR)/pgxwin.h tkpgplot.h $(TKDIR)/tkpgplot.c + $(CCOMPL) -c $(CFLAGC) -I$(DRVDIR) -I$(TKDIR) $(TK_INCL) $(TKDIR)/tkpgplot.c + +#----------------------------------------------------------------------- +# Target "librvpgplot.a" contains the Rivet-Tk widget driver. +#----------------------------------------------------------------------- + +librvpgplot.a: rvpgplot.o + ar ru librvpgplot.a rvpgplot.o + $(RANLIB) librvpgplot.a + +rvpgplot.h: $(TKDIR)/rvpgplot.h + cp $(TKDIR)/rvpgplot.h rvpgplot.h + +rvpgplot.o: $(DRVDIR)/pgxwin.h rvpgplot.h $(TKDIR)/tkpgplot.c + $(CCOMPL) -o $@ -c -DUSE_RIVET $(CFLAGC) -I$(DRVDIR) -I$(TKDIR) $(RV_INCL) $(TKDIR)/tkpgplot.c + +#----------------------------------------------------------------------- +# Target "install" is required for Figaro. +#----------------------------------------------------------------------- +install: + +#----------------------------------------------------------------------- +# Target "clean" is used to remove all the intermediate files. +#----------------------------------------------------------------------- +clean : + -@rm -f $(PG_ROUTINES) $(PG_NON_STANDARD) $(GR_ROUTINES)\ + $(DISPATCH_ROUTINE) $(DRIVERS) $(SYSTEM_ROUTINES)\ + $(OBSOLETE_ROUTINES) $(PGDISP_ROUTINES) pgmdemo.o\ + XmPgplot.o pgbind tkpgplot.o pgtkdemo.o rvpgplot.o\ + pgbind.o pgdemo*.o pgawdemo.o + +#----------------------------------------------------------------------- +# Include file dependencies +#----------------------------------------------------------------------- +# The following routines reference pgplot.inc + +pgask.o pgband.o pgbbuf.o pgbox.o pgcirc.o pgcl.o pgclos.o pgconl.o pgcont.o pgcp.o pgebuf.o pgend.o pggray.o pghi2d.o pgiden.o pgimag.o pginit.o pglen.o pgmtxt.o pgncur.o pgnoto.o pgopen.o pgpage.o pgpanl.o pgpap.o pgpoly.o pgptxt.o pgqah.o pgqch.o pgqcir.o pgqclp.o pgqcs.o pgqfs.o pgqhs.o pgqid.o pgqinf.o pgqitf.o pgqtbg.o pgqtxt.o pgqvp.o pgqvsz.o pgqwin.o pgrect.o pgsah.o pgsch.o pgscir.o pgsclp.o pgscrl.o pgsfs.o pgshs.o pgsitf.o pgslct.o pgstbg.o pgsubp.o pgsvp.o pgswin.o pgtikl.o pgvsiz.o pgvstd.o pgvw.o pgwnad.o : $(SRCDIR)/pgplot.inc + +# The following routines reference grpckg1.inc + +grarea.o grbpic.o grchr0.o grchsz.o grclos.o grclpl.o grcurs.o grdot0.o grdot1.o grdtyp.o grepic.o gresc.o gretxt.o grfa.o grgray.o grimg0.o grimg1.o grimg2.o grimg3.o grinit.o grldev.o grlen.o grlin0.o grlin1.o grlin2.o grlin3.o grlina.o grlinr.o grmker.o grmova.o grmovr.o gropen.o grpage.o grpixl.o grpxpo.o grpxps.o grpxpx.o grqcap.o grqci.o grqcol.o grqcr.o grqdev.o grqdt.o grqfnt.o grqls.o grqlw.o grqpos.o grqtxt.o grqtyp.o grrec0.o grrect.o grsci.o grscr.o grscrl.o grsetc.o grsetli.o grsets.o grsfnt.o grsize.o grslct.o grsls.o grslw.o grterm.o grtext.o grtrn0.o grtxy0.o grvct0.o : $(SRCDIR)/grpckg1.inc + + +# Miscellaneous include files required by drivers + +griv00.o : $(DRVDIR)/gadef.h $(DRVDIR)/gmdef.h $(DRVDIR)/gphdef.h +grivas.o : $(DRVDIR)/gadef.h +grtv00.o : $(DRVDIR)/imdef.h +pgxwin.o : $(DRVDIR)/pgxwin.h +pndriv.o : ./png.h ./pngconf.h ./zlib.h ./zconf.h + +x2driv.o figdisp_comm.o: $(DRVDIR)/commands.h + + +cpg: libcpgplot.a cpgplot.h cpgdemo + @echo ' ' + @echo '*** Finished compilation of the C PGPLOT wrapper library ***' + @echo ' ' + @echo 'Note that if you plan to install the library in a different' + @echo 'directory than the current one, both libcpgplot.a and cpgplot.h' + @echo 'will be needed.' + @echo ' ' + +pgbind: $(SRC)/cpg/pgbind.c + $(CCOMPL) $(CFLAGC) $(SRC)/cpg/pgbind.c -o pgbind + +libcpgplot.a cpgplot.h: $(PG_SOURCE) pgbind + ./pgbind $(PGBIND_FLAGS) -h -w $(PG_SOURCE) + $(CCOMPL) -c $(CFLAGC) cpg*.c + rm -f cpg*.c + ar ru libcpgplot.a cpg*.o + $(RANLIB) libcpgplot.a + rm -f cpg*.o + +cpgdemo: cpgplot.h $(SRC)/cpg/cpgdemo.c libcpgplot.a + $(CCOMPL) $(CFLAGD) -c -I. $(SRC)/cpg/cpgdemo.c + $(FCOMPL) -o cpgdemo cpgdemo.o $(CPGPLOT_LIB) $(LIBS) + rm -f cpgdemo.o + +pgmdemo: pgmdemo.o libXmPgplot.a + $(FCOMPL) -o pgmdemo pgmdemo.o -L`pwd` -lXmPgplot $(CPGPLOT_LIB) $(MOTIF_LIBS) + +pgmdemo.o: $(XMDIR)/pgmdemo.c XmPgplot.h libcpgplot.a cpgplot.h + $(CCOMPL) $(CFLAGD) -c -I`pwd` $(MOTIF_INCL) $(XMDIR)/pgmdemo.c + +pgawdemo: pgawdemo.o libXaPgplot.a + $(FCOMPL) -o pgawdemo pgawdemo.o -L`pwd` -lXaPgplot $(CPGPLOT_LIB) $(ATHENA_LIBS) + +pgawdemo.o: $(XADIR)/pgawdemo.c XaPgplot.h libcpgplot.a cpgplot.h + $(CCOMPL) $(CFLAGD) -c -I`pwd` $(ATHENA_INCL) $(XADIR)/pgawdemo.c + +pgtkdemo: pgtkdemo.o libtkpgplot.a + $(FCOMPL) -o pgtkdemo pgtkdemo.o -L`pwd` -ltkpgplot $(CPGPLOT_LIB) $(TK_LIBS) + +pgtkdemo.tcl: $(TKDIR)/pgtkdemo.tcl + cp $(TKDIR)/pgtkdemo.tcl pgtkdemo.tcl + chmod a+x pgtkdemo.tcl + +pgtkdemo.o: $(TKDIR)/pgtkdemo.c tkpgplot.h libcpgplot.a cpgplot.h + $(CCOMPL) $(CFLAGD) -c -I`pwd` $(TK_INCL) $(TKDIR)/pgtkdemo.c diff --git a/pgplot_rhel8/pgdemo1 b/pgplot_rhel8/pgdemo1 new file mode 100755 index 0000000..852bc79 Binary files /dev/null and b/pgplot_rhel8/pgdemo1 differ diff --git a/pgplot_rhel8/pgdemo10 b/pgplot_rhel8/pgdemo10 new file mode 100755 index 0000000..608d3f8 Binary files /dev/null and b/pgplot_rhel8/pgdemo10 differ diff --git a/pgplot_rhel8/pgdemo11 b/pgplot_rhel8/pgdemo11 new file mode 100755 index 0000000..977e874 Binary files /dev/null and b/pgplot_rhel8/pgdemo11 differ diff --git a/pgplot_rhel8/pgdemo12 b/pgplot_rhel8/pgdemo12 new file mode 100755 index 0000000..a302c22 Binary files /dev/null and b/pgplot_rhel8/pgdemo12 differ diff --git a/pgplot_rhel8/pgdemo13 b/pgplot_rhel8/pgdemo13 new file mode 100755 index 0000000..691952c Binary files /dev/null and b/pgplot_rhel8/pgdemo13 differ diff --git a/pgplot_rhel8/pgdemo14 b/pgplot_rhel8/pgdemo14 new file mode 100755 index 0000000..651f0c5 Binary files /dev/null and b/pgplot_rhel8/pgdemo14 differ diff --git a/pgplot_rhel8/pgdemo15 b/pgplot_rhel8/pgdemo15 new file mode 100755 index 0000000..6b71e18 Binary files /dev/null and b/pgplot_rhel8/pgdemo15 differ diff --git a/pgplot_rhel8/pgdemo16 b/pgplot_rhel8/pgdemo16 new file mode 100755 index 0000000..3958daf Binary files /dev/null and b/pgplot_rhel8/pgdemo16 differ diff --git a/pgplot_rhel8/pgdemo17 b/pgplot_rhel8/pgdemo17 new file mode 100755 index 0000000..f14690a Binary files /dev/null and b/pgplot_rhel8/pgdemo17 differ diff --git a/pgplot_rhel8/pgdemo2 b/pgplot_rhel8/pgdemo2 new file mode 100755 index 0000000..aea8750 Binary files /dev/null and b/pgplot_rhel8/pgdemo2 differ diff --git a/pgplot_rhel8/pgdemo3 b/pgplot_rhel8/pgdemo3 new file mode 100755 index 0000000..b9be27a Binary files /dev/null and b/pgplot_rhel8/pgdemo3 differ diff --git a/pgplot_rhel8/pgdemo4 b/pgplot_rhel8/pgdemo4 new file mode 100755 index 0000000..e5dc6f7 Binary files /dev/null and b/pgplot_rhel8/pgdemo4 differ diff --git a/pgplot_rhel8/pgdemo5 b/pgplot_rhel8/pgdemo5 new file mode 100755 index 0000000..af3d61d Binary files /dev/null and b/pgplot_rhel8/pgdemo5 differ diff --git a/pgplot_rhel8/pgdemo6 b/pgplot_rhel8/pgdemo6 new file mode 100755 index 0000000..4b707d2 Binary files /dev/null and b/pgplot_rhel8/pgdemo6 differ diff --git a/pgplot_rhel8/pgdemo7 b/pgplot_rhel8/pgdemo7 new file mode 100755 index 0000000..520ba9c Binary files /dev/null and b/pgplot_rhel8/pgdemo7 differ diff --git a/pgplot_rhel8/pgdemo8 b/pgplot_rhel8/pgdemo8 new file mode 100755 index 0000000..e7197ab Binary files /dev/null and b/pgplot_rhel8/pgdemo8 differ diff --git a/pgplot_rhel8/pgdemo9 b/pgplot_rhel8/pgdemo9 new file mode 100755 index 0000000..a21c3c7 Binary files /dev/null and b/pgplot_rhel8/pgdemo9 differ diff --git a/pgplot_rhel8/pgplot.doc b/pgplot_rhel8/pgplot.doc new file mode 100644 index 0000000..cc7b5de --- /dev/null +++ b/pgplot_rhel8/pgplot.doc @@ -0,0 +1,3846 @@ +PGPLOT GRAPHICS SUBROUTINE LIBRARY Version 5.1 + +PGPLOT is a Fortran subroutine package for drawing graphs on a variety +of display devices. For more details, see the manual ``PGPLOT Graphics +Subroutine Library'' available from T. J. Pearson +(tjp@astro.caltech.edu). + +INDEX OF ROUTINES + +PGARRO -- draw an arrow +PGASK -- control new page prompting +PGAXIS -- draw an axis +PGBAND -- read cursor position, with anchor +PGBBUF -- begin batch of output (buffer) +PGBEG -- open a graphics device +PGBIN -- histogram of binned data +PGBOX -- draw labeled frame around viewport +PGCIRC -- draw a circle, using fill-area attributes +PGCLOS -- close the selected graphics device +PGCONB -- contour map of a 2D data array, with blanking +PGCONF -- fill between two contours +PGCONL -- label contour map of a 2D data array +PGCONS -- contour map of a 2D data array (fast algorithm) +PGCONT -- contour map of a 2D data array (contour-following) +PGCONX -- contour map of a 2D data array (non rectangular) +PGCTAB -- install the color table to be used by PGIMAG +PGCURS -- read cursor position +PGDRAW -- draw a line from the current pen position to a point +PGEBUF -- end batch of output (buffer) +PGEND -- close all open graphics devices +PGENV -- set window and viewport and draw labeled frame +PGERAS -- erase all graphics from current page +PGERR1 -- horizontal or vertical error bar +PGERRB -- horizontal or vertical error bar +PGERRX -- horizontal error bar +PGERRY -- vertical error bar +PGETXT -- erase text from graphics display +PGFUNT -- function defined by X = F(T), Y = G(T) +PGFUNX -- function defined by Y = F(X) +PGFUNY -- function defined by X = F(Y) +PGGRAY -- gray-scale map of a 2D data array +PGHI2D -- cross-sections through a 2D data array +PGHIST -- histogram of unbinned data +PGIDEN -- write username, date, and time at bottom of plot +PGIMAG -- color image from a 2D data array +PGLAB -- write labels for x-axis, y-axis, and top of plot +PGLCUR -- draw a line using the cursor +PGLDEV -- list available device types on standard output +PGLEN -- find length of a string in a variety of units +PGLINE -- draw a polyline (curve defined by line-segments) +PGMOVE -- move pen (change current pen position) +PGMTXT -- write text at position relative to viewport +PGNCUR -- mark a set of points using the cursor +PGNUMB -- convert a number into a plottable character string +PGOLIN -- mark a set of points using the cursor +PGOPEN -- open a graphics device +PGPAGE -- advance to new page +PGPANL -- switch to a different panel on the view surface +PGPAP -- change the size of the view surface +PGPIXL -- draw pixels +PGPNTS -- draw several graph markers, not all the same +PGPOLY -- draw a polygon, using fill-area attributes +PGPT -- draw several graph markers +PGPT1 -- draw one graph marker +PGPTXT -- write text at arbitrary position and angle +PGQAH -- inquire arrow-head style +PGQCF -- inquire character font +PGQCH -- inquire character height +PGQCI -- inquire color index +PGQCIR -- inquire color index range +PGQCLP -- inquire clipping status +PGQCOL -- inquire color capability +PGQCR -- inquire color representation +PGQCS -- inquire character height in a variety of units +PGQDT -- inquire name of nth available device type +PGQFS -- inquire fill-area style +PGQHS -- inquire hatching style +PGQID -- inquire current device identifier +PGQINF -- inquire PGPLOT general information +PGQITF -- inquire image transfer function +PGQLS -- inquire line style +PGQLW -- inquire line width +PGQNDT -- inquire number of available device types +PGQPOS -- inquire current pen position +PGQTBG -- inquire text background color index +PGQTXT -- find bounding box of text string +PGQVP -- inquire viewport size and position +PGQVSZ -- inquire size of view surface +PGQWIN -- inquire window boundary coordinates +PGRECT -- draw a rectangle, using fill-area attributes +PGRND -- find the smallest `round' number greater than x +PGRNGE -- choose axis limits +PGSAH -- set arrow-head style +PGSAVE -- save PGPLOT attributes +PGUNSA -- restore PGPLOT attributes +PGSCF -- set character font +PGSCH -- set character height +PGSCI -- set color index +PGSCIR -- set color index range +PGSCLP -- enable or disable clipping at edge of viewport +PGSCR -- set color representation +PGSCRL -- scroll window +PGSCRN -- set color representation by name +PGSFS -- set fill-area style +PGSHLS -- set color representation using HLS system +PGSHS -- set hatching style +PGSITF -- set image transfer function +PGSLCT -- select an open graphics device +PGSLS -- set line style +PGSLW -- set line width +PGSTBG -- set text background color index +PGSUBP -- subdivide view surface into panels +PGSVP -- set viewport (normalized device coordinates) +PGSWIN -- set window +PGTBOX -- draw frame and write (DD) HH MM SS.S labelling +PGTEXT -- write text (horizontal, left-justified) +PGTICK -- draw a single tick mark on an axis +PGUPDT -- update display +PGVECT -- vector map of a 2D data array, with blanking +PGVSIZ -- set viewport (inches) +PGVSTD -- set standard (default) viewport +PGWEDG -- annotate an image plot with a wedge +PGWNAD -- set window and adjust viewport to same aspect ratio +PGADVANCE -- non-standard alias for PGPAGE +PGBEGIN -- non-standard alias for PGBEG +PGCURSE -- non-standard alias for PGCURS +PGLABEL -- non-standard alias for PGLAB +PGMTEXT -- non-standard alias for PGMTXT +PGNCURSE -- non-standard alias for PGNCUR +PGPAPER -- non-standard alias for PGPAP +PGPOINT -- non-standard alias for PGPT +PGPTEXT -- non-standard alias for PGPTXT +PGVPORT -- non-standard alias for PGSVP +PGVSIZE -- non-standard alias for PGVSIZ +PGVSTAND -- non-standard alias for PGVSTD +PGWINDOW -- non-standard alias for PGSWIN + + +------------------------------------------------------------------------ +Module: PGARRO -- draw an arrow +------------------------------------------------------------------------ + + SUBROUTINE PGARRO (X1, Y1, X2, Y2) + REAL X1, Y1, X2, Y2 + +Draw an arrow from the point with world-coordinates (X1,Y1) to +(X2,Y2). The size of the arrowhead at (X2,Y2) is determined by +the current character size set by routine PGSCH. The default size +is 1/40th of the smaller of the width or height of the view surface. +The appearance of the arrowhead (shape and solid or open) is +controlled by routine PGSAH. + +Arguments: + X1, Y1 (input) : world coordinates of the tail of the arrow. + X2, Y2 (input) : world coordinates of the head of the arrow. + + +------------------------------------------------------------------------ +Module: PGASK -- control new page prompting +------------------------------------------------------------------------ + + SUBROUTINE PGASK (FLAG) + LOGICAL FLAG + +Change the ``prompt state'' of PGPLOT. If the prompt state is +ON, PGPAGE will type ``Type RETURN for next page:'' and will wait +for the user to type a carriage-return before starting a new page. +The initial prompt state (after the device has been opened) is ON +for interactive devices. Prompt state is always OFF for +non-interactive devices. + +Arguments: + FLAG (input) : if .TRUE., and if the device is an interactive + device, the prompt state will be set to ON. If + .FALSE., the prompt state will be set to OFF. + + +------------------------------------------------------------------------ +Module: PGAXIS -- draw an axis +------------------------------------------------------------------------ + + SUBROUTINE PGAXIS (OPT, X1, Y1, X2, Y2, V1, V2, STEP, NSUB, + : DMAJL, DMAJR, FMIN, DISP, ORIENT) + CHARACTER*(*) OPT + REAL X1, Y1, X2, Y2, V1, V2, STEP, DMAJL, DMAJR, FMIN, DISP + REAL ORIENT + INTEGER NSUB + +Draw a labelled graph axis from world-coordinate position (X1,Y1) to +(X2,Y2). + +Normally, this routine draws a standard LINEAR axis with equal +subdivisions. The quantity described by the axis runs from V1 to V2; +this may be, but need not be, the same as X or Y. + +If the 'L' option is specified, the routine draws a LOGARITHMIC axis. +In this case, the quantity described by the axis runs from 10**V1 to +10**V2. A logarithmic axis always has major, labeled, tick marks +spaced by one or more decades. If the major tick marks are spaced +by one decade (as specified by the STEP argument), then minor +tick marks are placed at 2, 3, .., 9 times each power of 10; +otherwise minor tick marks are spaced by one decade. If the axis +spans less than two decades, numeric labels are placed at 1, 2, and +5 times each power of ten. + +If the axis spans less than one decade, or if it spans many decades, +it is preferable to use a linear axis labeled with the logarithm of +the quantity of interest. + +Arguments: + OPT (input) : a string containing single-letter codes for + various options. The options currently + recognized are: + L : draw a logarithmic axis + N : write numeric labels + 1 : force decimal labelling, instead of automatic + choice (see PGNUMB). + 2 : force exponential labelling, instead of + automatic. + X1, Y1 (input) : world coordinates of one endpoint of the axis. + X2, Y2 (input) : world coordinates of the other endpoint of the axis. + V1 (input) : axis value at first endpoint. + V2 (input) : axis value at second endpoint. + STEP (input) : major tick marks are drawn at axis value 0.0 plus + or minus integer multiples of STEP. If STEP=0.0, + a value is chosen automatically. + NSUB (input) : minor tick marks are drawn to divide the major + divisions into NSUB equal subdivisions (ignored if + STEP=0.0). If NSUB <= 1, no minor tick marks are + drawn. NSUB is ignored for a logarithmic axis. + DMAJL (input) : length of major tick marks drawn to left of axis + (as seen looking from first endpoint to second), in + units of the character height. + DMAJR (input) : length of major tick marks drawn to right of axis, + in units of the character height. + FMIN (input) : length of minor tick marks, as fraction of major. + DISP (input) : displacement of baseline of tick labels to + right of axis, in units of the character height. + ORIENT (input) : orientation of label text, in degrees; angle between + baseline of text and direction of axis (0-360°). + + +------------------------------------------------------------------------ +Module: PGBAND -- read cursor position, with anchor +------------------------------------------------------------------------ + + INTEGER FUNCTION PGBAND (MODE, POSN, XREF, YREF, X, Y, CH) + INTEGER MODE, POSN + REAL XREF, YREF, X, Y + CHARACTER*(*) CH + +Read the cursor position and a character typed by the user. +The position is returned in world coordinates. PGBAND positions +the cursor at the position specified (if POSN=1), allows the user to +move the cursor using the mouse or arrow keys or whatever is available +on the device. When he has positioned the cursor, the user types a +single character on the keyboard; PGBAND then returns this +character and the new cursor position (in world coordinates). + +Some interactive devices offer a selection of cursor types, +implemented as thin lines that move with the cursor, but without +erasing underlying graphics. Of these types, some extend between +a stationary anchor-point at XREF,YREF, and the position of the +cursor, while others simply follow the cursor without changing shape +or size. The cursor type is specified with one of the following MODE +values. Cursor types that are not supported by a given device, are +treated as MODE=0. + +-- If MODE=0, the anchor point is ignored and the routine behaves +like PGCURS. +-- If MODE=1, a straight line is drawn joining the anchor point +and the cursor position. +-- If MODE=2, a hollow rectangle is extended as the cursor is moved, +with one vertex at the anchor point and the opposite vertex at the +current cursor position; the edges of the rectangle are horizontal +and vertical. +-- If MODE=3, two horizontal lines are extended across the width of +the display, one drawn through the anchor point and the other +through the moving cursor position. This could be used to select +a Y-axis range when one end of the range is known. +-- If MODE=4, two vertical lines are extended over the height of +the display, one drawn through the anchor point and the other +through the moving cursor position. This could be used to select an +X-axis range when one end of the range is known. +-- If MODE=5, a horizontal line is extended through the cursor +position over the width of the display. This could be used to select +an X-axis value such as the start of an X-axis range. The anchor point +is ignored. +-- If MODE=6, a vertical line is extended through the cursor +position over the height of the display. This could be used to select +a Y-axis value such as the start of a Y-axis range. The anchor point +is ignored. +-- If MODE=7, a cross-hair, centered on the cursor, is extended over +the width and height of the display. The anchor point is ignored. + +Returns: + PGBAND : 1 if the call was successful; 0 if the device + has no cursor or some other error occurs. +Arguments: + MODE (input) : display mode (0, 1, ..7: see above). + POSN (input) : if POSN=1, PGBAND attempts to place the cursor + at point (X,Y); if POSN=0, it leaves the cursor + at its current position. (On some devices this + request may be ignored.) + XREF (input) : the world x-coordinate of the anchor point. + YREF (input) : the world y-coordinate of the anchor point. + X (in/out) : the world x-coordinate of the cursor. + Y (in/out) : the world y-coordinate of the cursor. + CH (output) : the character typed by the user; if the device has + no cursor or if some other error occurs, the value + CHAR(0) [ASCII NUL character] is returned. + +Note: The cursor coordinates (X,Y) may be changed by PGBAND even if +the device has no cursor or if the user does not move the cursor. +Under these circumstances, the position returned in (X,Y) is that of +the pixel nearest to the requested position. + + +------------------------------------------------------------------------ +Module: PGBBUF -- begin batch of output (buffer) +------------------------------------------------------------------------ + + SUBROUTINE PGBBUF + +Begin saving graphical output commands in an internal buffer; the +commands are held until a matching PGEBUF call (or until the buffer +is emptied by PGUPDT). This can greatly improve the efficiency of +PGPLOT. PGBBUF increments an internal counter, while PGEBUF +decrements this counter and flushes the buffer to the output +device when the counter drops to zero. PGBBUF and PGEBUF calls +should always be paired. + +Arguments: none + + +------------------------------------------------------------------------ +Module: PGBEG -- open a graphics device +------------------------------------------------------------------------ + + INTEGER FUNCTION PGBEG (UNIT, FILE, NXSUB, NYSUB) + INTEGER UNIT + CHARACTER*(*) FILE + INTEGER NXSUB, NYSUB + +Note: new programs should use PGOPEN rather than PGBEG. PGOPEN +is retained for compatibility with existing programs. Unlike PGOPEN, +PGBEG closes any graphics devices that are already open, so it +cannot be used to open devices to be used in parallel. + +PGBEG opens a graphical device or file and prepares it for +subsequent plotting. A device must be opened with PGBEG or PGOPEN +before any other calls to PGPLOT subroutines for the device. + +If any device is already open for PGPLOT output, it is closed before +the new device is opened. + +Returns: + PGBEG : a status return value. A value of 1 indicates + successful completion, any other value indicates + an error. In the event of error a message is + written on the standard error unit. + To test the return value, call + PGBEG as a function, eg IER=PGBEG(...); note + that PGBEG must be declared INTEGER in the + calling program. Some Fortran compilers allow + you to use CALL PGBEG(...) and discard the + return value, but this is not standard Fortran. +Arguments: + UNIT (input) : this argument is ignored by PGBEG (use zero). + FILE (input) : the "device specification" for the plot device. + (For explanation, see description of PGOPEN.) + NXSUB (input) : the number of subdivisions of the view surface in + X (>0 or <0). + NYSUB (input) : the number of subdivisions of the view surface in + Y (>0). + PGPLOT puts NXSUB x NYSUB graphs on each plot + page or screen; when the view surface is sub- + divided in this way, PGPAGE moves to the next + panel, not the next physical page. If + NXSUB > 0, PGPLOT uses the panels in row + order; if <0, PGPLOT uses them in column order. + + +------------------------------------------------------------------------ +Module: PGBIN -- histogram of binned data +------------------------------------------------------------------------ + + SUBROUTINE PGBIN (NBIN, X, DATA, CENTER) + INTEGER NBIN + REAL X(*), DATA(*) + LOGICAL CENTER + +Plot a histogram of NBIN values with X(1..NBIN) values along +the ordinate, and DATA(1...NBIN) along the abscissa. Bin width is +spacing between X values. + +Arguments: + NBIN (input) : number of values. + X (input) : abscissae of bins. + DATA (input) : data values of bins. + CENTER (input) : if .TRUE., the X values denote the center of the + bin; if .FALSE., the X values denote the lower + edge (in X) of the bin. + + +------------------------------------------------------------------------ +Module: PGBOX -- draw labeled frame around viewport +------------------------------------------------------------------------ + + SUBROUTINE PGBOX (XOPT, XTICK, NXSUB, YOPT, YTICK, NYSUB) + CHARACTER*(*) XOPT, YOPT + REAL XTICK, YTICK + INTEGER NXSUB, NYSUB + +Annotate the viewport with frame, axes, numeric labels, etc. +PGBOX is called by on the user's behalf by PGENV, but may also be +called explicitly. + +Arguments: + XOPT (input) : string of options for X (horizontal) axis of + plot. Options are single letters, and may be in + any order (see below). + XTICK (input) : world coordinate interval between major tick marks + on X axis. If XTICK=0.0, the interval is chosen by + PGBOX, so that there will be at least 3 major tick + marks along the axis. + NXSUB (input) : the number of subintervals to divide the major + coordinate interval into. If XTICK=0.0 or NXSUB=0, + the number is chosen by PGBOX. + YOPT (input) : string of options for Y (vertical) axis of plot. + Coding is the same as for XOPT. + YTICK (input) : like XTICK for the Y axis. + NYSUB (input) : like NXSUB for the Y axis. + +Options (for parameters XOPT and YOPT): + A : draw Axis (X axis is horizontal line Y=0, Y axis is vertical + line X=0). + B : draw bottom (X) or left (Y) edge of frame. + C : draw top (X) or right (Y) edge of frame. + G : draw Grid of vertical (X) or horizontal (Y) lines. + I : Invert the tick marks; ie draw them outside the viewport + instead of inside. + L : label axis Logarithmically (see below). + N : write Numeric labels in the conventional location below the + viewport (X) or to the left of the viewport (Y). + P : extend ("Project") major tick marks outside the box (ignored if + option I is specified). + M : write numeric labels in the unconventional location above the + viewport (X) or to the right of the viewport (Y). + T : draw major Tick marks at the major coordinate interval. + S : draw minor tick marks (Subticks). + V : orient numeric labels Vertically. This is only applicable to Y. + The default is to write Y-labels parallel to the axis. + 1 : force decimal labelling, instead of automatic choice (see PGNUMB). + 2 : force exponential labelling, instead of automatic. + +To get a complete frame, specify BC in both XOPT and YOPT. +Tick marks, if requested, are drawn on the axes or frame +or both, depending which are requested. If none of ABC is specified, +tick marks will not be drawn. When PGENV calls PGBOX, it sets both +XOPT and YOPT according to the value of its parameter AXIS: +-1: 'BC', 0: 'BCNST', 1: 'ABCNST', 2: 'ABCGNST'. + +For a logarithmic axis, the major tick interval is always 1.0. The +numeric label is 10**(x) where x is the world coordinate at the +tick mark. If subticks are requested, 8 subticks are drawn between +each major tick at equal logarithmic intervals. + +To label an axis with time (days, hours, minutes, seconds) or +angle (degrees, arcmin, arcsec), use routine PGTBOX. + + +------------------------------------------------------------------------ +Module: PGCIRC -- draw a circle, using fill-area attributes +------------------------------------------------------------------------ + + SUBROUTINE PGCIRC (XCENT, YCENT, RADIUS) + REAL XCENT, YCENT, RADIUS + +Draw a circle. The action of this routine depends +on the setting of the Fill-Area Style attribute. If Fill-Area Style +is SOLID (the default), the interior of the circle is solid-filled +using the current Color Index. If Fill-Area Style is HOLLOW, the +outline of the circle is drawn using the current line attributes +(color index, line-style, and line-width). + +Arguments: + XCENT (input) : world x-coordinate of the center of the circle. + YCENT (input) : world y-coordinate of the center of the circle. + RADIUS (input) : radius of circle (world coordinates). + + +------------------------------------------------------------------------ +Module: PGCLOS -- close the selected graphics device +------------------------------------------------------------------------ + + SUBROUTINE PGCLOS + +Close the currently selected graphics device. After the device has +been closed, either another open device must be selected with PGSLCT +or another device must be opened with PGOPEN before any further +plotting can be done. If the call to PGCLOS is omitted, some or all +of the plot may be lost. + +[This routine was added to PGPLOT in Version 5.1.0. Older programs +use PGEND instead.] + +Arguments: none + + +------------------------------------------------------------------------ +Module: PGCONB -- contour map of a 2D data array, with blanking +------------------------------------------------------------------------ + + SUBROUTINE PGCONB (A, IDIM, JDIM, I1, I2, J1, J2, C, NC, TR, + 1 BLANK) + INTEGER IDIM, JDIM, I1, I2, J1, J2, NC + REAL A(IDIM,JDIM), C(*), TR(6), BLANK + +Draw a contour map of an array. This routine is the same as PGCONS, +except that array elements that have the "magic value" defined by +argument BLANK are ignored, making gaps in the contour map. The +routine may be useful for data measured on most but not all of the +points of a grid. + +Arguments: + A (input) : data array. + IDIM (input) : first dimension of A. + JDIM (input) : second dimension of A. + I1,I2 (input) : range of first index to be contoured (inclusive). + J1,J2 (input) : range of second index to be contoured (inclusive). + C (input) : array of contour levels (in the same units as the + data in array A); dimension at least NC. + NC (input) : number of contour levels (less than or equal to + dimension of C). The absolute value of this + argument is used (for compatibility with PGCONT, + where the sign of NC is significant). + TR (input) : array defining a transformation between the I,J + grid of the array and the world coordinates. The + world coordinates of the array point A(I,J) are + given by: + X = TR(1) + TR(2)*I + TR(3)*J + Y = TR(4) + TR(5)*I + TR(6)*J + Usually TR(3) and TR(5) are zero - unless the + coordinate transformation involves a rotation + or shear. + BLANK (input) : elements of array A that are exactly equal to + this value are ignored (blanked). + + +------------------------------------------------------------------------ +Module: PGCONF -- fill between two contours +------------------------------------------------------------------------ + + SUBROUTINE PGCONF (A, IDIM, JDIM, I1, I2, J1, J2, C1, C2, TR) + INTEGER IDIM, JDIM, I1, I2, J1, J2 + REAL A(IDIM,JDIM), C1, C2, TR(6) + +Shade the region between two contour levels of a function defined on +the nodes of a rectangular grid. The routine uses the current fill +attributes, hatching style (if appropriate), and color index. + +If you want to both shade between contours and draw the contour +lines, call this routine first (once for each pair of levels) and +then CALL PGCONT (or PGCONS) to draw the contour lines on top of the +shading. + +Note 1: This routine is not very efficient: it generates a polygon +fill command for each cell of the mesh that intersects the desired +area, rather than consolidating adjacent cells into a single polygon. + +Note 2: If both contours intersect all four edges of a particular +mesh cell, the program behaves badly and may consider some parts +of the cell to lie in more than one contour range. + +Note 3: If a contour crosses all four edges of a cell, this +routine may not generate the same contours as PGCONT or PGCONS +(these two routines may not agree either). Such cases are always +ambiguous and the routines use different approaches to resolving +the ambiguity. + +Arguments: + A (input) : data array. + IDIM (input) : first dimension of A. + JDIM (input) : second dimension of A. + I1,I2 (input) : range of first index to be contoured (inclusive). + J1,J2 (input) : range of second index to be contoured (inclusive). + C1, C2 (input) : contour levels; note that C1 must be less than C2. + TR (input) : array defining a transformation between the I,J + grid of the array and the world coordinates. The + world coordinates of the array point A(I,J) are + given by: + X = TR(1) + TR(2)*I + TR(3)*J + Y = TR(4) + TR(5)*I + TR(6)*J + Usually TR(3) and TR(5) are zero - unless the + coordinate transformation involves a rotation + or shear. + + +------------------------------------------------------------------------ +Module: PGCONL -- label contour map of a 2D data array +------------------------------------------------------------------------ + + SUBROUTINE PGCONL (A, IDIM, JDIM, I1, I2, J1, J2, C, TR, + 1 LABEL, INTVAL, MININT) + INTEGER IDIM, JDIM, I1, J1, I2, J2, INTVAL, MININT + REAL A(IDIM,JDIM), C, TR(6) + CHARACTER*(*) LABEL + +Label a contour map drawn with routine PGCONT. Routine PGCONT should +be called first to draw the contour lines, then this routine should be +called to add the labels. Labels are written at intervals along the +contour lines, centered on the contour lines with lettering aligned +in the up-hill direction. Labels are opaque, so a part of the under- +lying contour line is obscured by the label. Labels use the current +attributes (character height, line width, color index, character +font). + +The first 9 arguments are the same as those supplied to PGCONT, and +should normally be identical to those used with PGCONT. Note that +only one contour level can be specified; tolabel more contours, call +PGCONL for each level. + +The Label is supplied as a character string in argument LABEL. + +The spacing of labels along the contour is specified by parameters +INTVAL and MININT. The routine follows the contour through the +array, counting the number of cells that the contour crosses. The +first label will be written in the MININT'th cell, and additional +labels will be written every INTVAL cells thereafter. A contour +that crosses less than MININT cells will not be labelled. Some +experimentation may be needed to get satisfactory results; a good +place to start is INTVAL=20, MININT=10. + +Arguments: + A (input) : data array. + IDIM (input) : first dimension of A. + JDIM (input) : second dimension of A. + I1, I2 (input) : range of first index to be contoured (inclusive). + J1, J2 (input) : range of second index to be contoured (inclusive). + C (input) : the level of the contour to be labelled (one of the + values given to PGCONT). + TR (input) : array defining a transformation between the I,J + grid of the array and the world coordinates. + The world coordinates of the array point A(I,J) + are given by: + X = TR(1) + TR(2)*I + TR(3)*J + Y = TR(4) + TR(5)*I + TR(6)*J + Usually TR(3) and TR(5) are zero - unless the + coordinate transformation involves a rotation or + shear. + LABEL (input) : character strings to be used to label the specified + contour. Leading and trailing blank spaces are + ignored. + INTVAL (input) : spacing along the contour between labels, in + grid cells. + MININT (input) : contours that cross less than MININT cells + will not be labelled. + + +------------------------------------------------------------------------ +Module: PGCONS -- contour map of a 2D data array (fast algorithm) +------------------------------------------------------------------------ + + SUBROUTINE PGCONS (A, IDIM, JDIM, I1, I2, J1, J2, C, NC, TR) + INTEGER IDIM, JDIM, I1, I2, J1, J2, NC + REAL A(IDIM,JDIM), C(*), TR(6) + +Draw a contour map of an array. The map is truncated if +necessary at the boundaries of the viewport. Each contour line is +drawn with the current line attributes (color index, style, and +width). This routine, unlike PGCONT, does not draw each contour as a +continuous line, but draws the straight line segments composing each +contour in a random order. It is thus not suitable for use on pen +plotters, and it usually gives unsatisfactory results with dashed or +dotted lines. It is, however, faster than PGCONT, especially if +several contour levels are drawn with one call of PGCONS. + +Arguments: + A (input) : data array. + IDIM (input) : first dimension of A. + JDIM (input) : second dimension of A. + I1,I2 (input) : range of first index to be contoured (inclusive). + J1,J2 (input) : range of second index to be contoured (inclusive). + C (input) : array of contour levels (in the same units as the + data in array A); dimension at least NC. + NC (input) : number of contour levels (less than or equal to + dimension of C). The absolute value of this + argument is used (for compatibility with PGCONT, + where the sign of NC is significant). + TR (input) : array defining a transformation between the I,J + grid of the array and the world coordinates. The + world coordinates of the array point A(I,J) are + given by: + X = TR(1) + TR(2)*I + TR(3)*J + Y = TR(4) + TR(5)*I + TR(6)*J + Usually TR(3) and TR(5) are zero - unless the + coordinate transformation involves a rotation + or shear. + + +------------------------------------------------------------------------ +Module: PGCONT -- contour map of a 2D data array (contour-following) +------------------------------------------------------------------------ + + SUBROUTINE PGCONT (A, IDIM, JDIM, I1, I2, J1, J2, C, NC, TR) + INTEGER IDIM, JDIM, I1, J1, I2, J2, NC + REAL A(IDIM,JDIM), C(*), TR(6) + +Draw a contour map of an array. The map is truncated if +necessary at the boundaries of the viewport. Each contour line +is drawn with the current line attributes (color index, style, and +width); except that if argument NC is positive (see below), the line +style is set by PGCONT to 1 (solid) for positive contours or 2 +(dashed) for negative contours. + +Arguments: + A (input) : data array. + IDIM (input) : first dimension of A. + JDIM (input) : second dimension of A. + I1, I2 (input) : range of first index to be contoured (inclusive). + J1, J2 (input) : range of second index to be contoured (inclusive). + C (input) : array of NC contour levels; dimension at least NC. + NC (input) : +/- number of contour levels (less than or equal + to dimension of C). If NC is positive, it is the + number of contour levels, and the line-style is + chosen automatically as described above. If NC is + negative, it is minus the number of contour + levels, and the current setting of line-style is + used for all the contours. + TR (input) : array defining a transformation between the I,J + grid of the array and the world coordinates. + The world coordinates of the array point A(I,J) + are given by: + X = TR(1) + TR(2)*I + TR(3)*J + Y = TR(4) + TR(5)*I + TR(6)*J + Usually TR(3) and TR(5) are zero - unless the + coordinate transformation involves a rotation or + shear. + + +------------------------------------------------------------------------ +Module: PGCONX -- contour map of a 2D data array (non rectangular) +------------------------------------------------------------------------ + + SUBROUTINE PGCONX (A, IDIM, JDIM, I1, I2, J1, J2, C, NC, PLOT) + INTEGER IDIM, JDIM, I1, J1, I2, J2, NC + REAL A(IDIM,JDIM), C(*) + EXTERNAL PLOT + +Draw a contour map of an array using a user-supplied plotting +routine. This routine should be used instead of PGCONT when the +data are defined on a non-rectangular grid. PGCONT permits only +a linear transformation between the (I,J) grid of the array +and the world coordinate system (x,y), but PGCONX permits any +transformation to be used, the transformation being defined by a +user-supplied subroutine. The nature of the contouring algorithm, +however, dictates that the transformation should maintain the +rectangular topology of the grid, although grid-points may be +allowed to coalesce. As an example of a deformed rectangular +grid, consider data given on the polar grid theta=0.1n(pi/2), +for n=0,1,...,10, and r=0.25m, for m=0,1,..,4. This grid +contains 55 points, of which 11 are coincident at the origin. +The input array for PGCONX should be dimensioned (11,5), and +data values should be provided for all 55 elements. PGCONX can +also be used for special applications in which the height of the +contour affects its appearance, e.g., stereoscopic views. + +The map is truncated if necessary at the boundaries of the viewport. +Each contour line is drawn with the current line attributes (color +index, style, and width); except that if argument NC is positive +(see below), the line style is set by PGCONX to 1 (solid) for +positive contours or 2 (dashed) for negative contours. Attributes +for the contour lines can also be set in the user-supplied +subroutine, if desired. + +Arguments: + A (input) : data array. + IDIM (input) : first dimension of A. + JDIM (input) : second dimension of A. + I1, I2 (input) : range of first index to be contoured (inclusive). + J1, J2 (input) : range of second index to be contoured (inclusive). + C (input) : array of NC contour levels; dimension at least NC. + NC (input) : +/- number of contour levels (less than or equal + to dimension of C). If NC is positive, it is the + number of contour levels, and the line-style is + chosen automatically as described above. If NC is + negative, it is minus the number of contour + levels, and the current setting of line-style is + used for all the contours. + PLOT (input) : the address (name) of a subroutine supplied by + the user, which will be called by PGCONX to do + the actual plotting. This must be declared + EXTERNAL in the program unit calling PGCONX. + +The subroutine PLOT will be called with four arguments: + CALL PLOT(VISBLE,X,Y,Z) +where X,Y (input) are real variables corresponding to +I,J indices of the array A. If VISBLE (input, integer) is 1, +PLOT should draw a visible line from the current pen +position to the world coordinate point corresponding to (X,Y); +if it is 0, it should move the pen to (X,Y). Z is the value +of the current contour level, and may be used by PLOT if desired. +Example: + SUBROUTINE PLOT (VISBLE,X,Y,Z) + REAL X, Y, Z, XWORLD, YWORLD + INTEGER VISBLE + XWORLD = X*COS(Y) ! this is the user-defined + YWORLD = X*SIN(Y) ! transformation + IF (VISBLE.EQ.0) THEN + CALL PGMOVE (XWORLD, YWORLD) + ELSE + CALL PGDRAW (XWORLD, YWORLD) + END IF + END + + +------------------------------------------------------------------------ +Module: PGCTAB -- install the color table to be used by PGIMAG +------------------------------------------------------------------------ + + SUBROUTINE PGCTAB(L, R, G, B, NC, CONTRA, BRIGHT) + INTEGER NC + REAL L(NC), R(NC), G(NC), B(NC), CONTRA, BRIGHT + +Use the given color table to change the color representations of +all color indexes marked for use by PGIMAG. To change which +color indexes are thus marked, call PGSCIR before calling PGCTAB +or PGIMAG. On devices that can change the color representations +of previously plotted graphics, PGCTAB will also change the colors +of existing graphics that were plotted with the marked color +indexes. This feature can then be combined with PGBAND to +interactively manipulate the displayed colors of data previously +plotted with PGIMAG. + +Limitations: + 1. Some devices do not propagate color representation changes + to previously drawn graphics. + 2. Some devices ignore requests to change color representations. + 3. The appearance of specific color representations on grey-scale + devices is device-dependent. + +Notes: + To reverse the sense of a color table, change the chosen contrast + and brightness to -CONTRA and 1-BRIGHT. + + In the following, the term 'color table' refers to the input + L,R,G,B arrays, whereas 'color ramp' refers to the resulting + ramp of colors that would be seen with PGWEDG. + +Arguments: + L (input) : An array of NC normalized ramp-intensity levels + corresponding to the RGB primary color intensities + in R(),G(),B(). Colors on the ramp are linearly + interpolated from neighbouring levels. + Levels must be sorted in increasing order. + 0.0 places a color at the beginning of the ramp. + 1.0 places a color at the end of the ramp. + Colors outside these limits are legal, but will + not be visible if CONTRA=1.0 and BRIGHT=0.5. + R (input) : An array of NC normalized red intensities. + G (input) : An array of NC normalized green intensities. + B (input) : An array of NC normalized blue intensities. + NC (input) : The number of color table entries. + CONTRA (input) : The contrast of the color ramp (normally 1.0). + Negative values reverse the direction of the ramp. + BRIGHT (input) : The brightness of the color ramp. This is normally + 0.5, but can sensibly hold any value between 0.0 + and 1.0. Values at or beyond the latter two + extremes, saturate the color ramp with the colors + of the respective end of the color table. + + +------------------------------------------------------------------------ +Module: PGCURS -- read cursor position +------------------------------------------------------------------------ + + INTEGER FUNCTION PGCURS (X, Y, CH) + REAL X, Y + CHARACTER*(*) CH + +Read the cursor position and a character typed by the user. +The position is returned in world coordinates. PGCURS positions +the cursor at the position specified, allows the user to move the +cursor using the joystick or arrow keys or whatever is available on +the device. When he has positioned the cursor, the user types a +single character on the keyboard; PGCURS then returns this +character and the new cursor position (in world coordinates). + +Returns: + PGCURS : 1 if the call was successful; 0 if the device + has no cursor or some other error occurs. +Arguments: + X (in/out) : the world x-coordinate of the cursor. + Y (in/out) : the world y-coordinate of the cursor. + CH (output) : the character typed by the user; if the device has + no cursor or if some other error occurs, the value + CHAR(0) [ASCII NUL character] is returned. + +Note: The cursor coordinates (X,Y) may be changed by PGCURS even if +the device has no cursor or if the user does not move the cursor. +Under these circumstances, the position returned in (X,Y) is that of +the pixel nearest to the requested position. + + +------------------------------------------------------------------------ +Module: PGDRAW -- draw a line from the current pen position to a point +------------------------------------------------------------------------ + + SUBROUTINE PGDRAW (X, Y) + REAL X, Y + +Draw a line from the current pen position to the point +with world-coordinates (X,Y). The line is clipped at the edge of the +current window. The new pen position is (X,Y) in world coordinates. + +Arguments: + X (input) : world x-coordinate of the end point of the line. + Y (input) : world y-coordinate of the end point of the line. + + +------------------------------------------------------------------------ +Module: PGEBUF -- end batch of output (buffer) +------------------------------------------------------------------------ + + SUBROUTINE PGEBUF + +A call to PGEBUF marks the end of a batch of graphical output begun +with the last call of PGBBUF. PGBBUF and PGEBUF calls should always +be paired. Each call to PGBBUF increments a counter, while each call +to PGEBUF decrements the counter. When the counter reaches 0, the +batch of output is written on the output device. + +Arguments: none + + +------------------------------------------------------------------------ +Module: PGEND -- close all open graphics devices +------------------------------------------------------------------------ + + SUBROUTINE PGEND + +Close and release any open graphics devices. All devices must be +closed by calling either PGCLOS (for each device) or PGEND before +the program terminates. If a device is not closed properly, some +or all of the graphical output may be lost. + +Arguments: none + + +------------------------------------------------------------------------ +Module: PGENV -- set window and viewport and draw labeled frame +------------------------------------------------------------------------ + + SUBROUTINE PGENV (XMIN, XMAX, YMIN, YMAX, JUST, AXIS) + REAL XMIN, XMAX, YMIN, YMAX + INTEGER JUST, AXIS + +Set PGPLOT "Plotter Environment". PGENV establishes the scaling +for subsequent calls to PGPT, PGLINE, etc. The plotter is +advanced to a new page or panel, clearing the screen if necessary. +If the "prompt state" is ON (see PGASK), confirmation +is requested from the user before clearing the screen. +If requested, a box, axes, labels, etc. are drawn according to +the setting of argument AXIS. + +Arguments: + XMIN (input) : the world x-coordinate at the bottom left corner + of the viewport. + XMAX (input) : the world x-coordinate at the top right corner + of the viewport (note XMAX may be less than XMIN). + YMIN (input) : the world y-coordinate at the bottom left corner + of the viewport. + YMAX (input) : the world y-coordinate at the top right corner + of the viewport (note YMAX may be less than YMIN). + JUST (input) : if JUST=1, the scales of the x and y axes (in + world coordinates per inch) will be equal, + otherwise they will be scaled independently. + AXIS (input) : controls the plotting of axes, tick marks, etc: + AXIS = -2 : draw no box, axes or labels; + AXIS = -1 : draw box only; + AXIS = 0 : draw box and label it with coordinates; + AXIS = 1 : same as AXIS=0, but also draw the + coordinate axes (X=0, Y=0); + AXIS = 2 : same as AXIS=1, but also draw grid lines + at major increments of the coordinates; + AXIS = 10 : draw box and label X-axis logarithmically; + AXIS = 20 : draw box and label Y-axis logarithmically; + AXIS = 30 : draw box and label both axes logarithmically. + +For other axis options, use routine PGBOX. PGENV can be persuaded to +call PGBOX with additional axis options by defining an environment +parameter PGPLOT_ENVOPT containing the required option codes. +Examples: + PGPLOT_ENVOPT=P ! draw Projecting tick marks + PGPLOT_ENVOPT=I ! Invert the tick marks + PGPLOT_ENVOPT=IV ! Invert tick marks and label y Vertically + + +------------------------------------------------------------------------ +Module: PGERAS -- erase all graphics from current page +------------------------------------------------------------------------ + + SUBROUTINE PGERAS + +Erase all graphics from the current page (or current panel, if +the view surface has been divided into panels with PGSUBP). + +Arguments: none + + +------------------------------------------------------------------------ +Module: PGERR1 -- horizontal or vertical error bar +------------------------------------------------------------------------ + + SUBROUTINE PGERR1 (DIR, X, Y, E, T) + INTEGER DIR + REAL X, Y, E + REAL T + +Plot a single error bar in the direction specified by DIR. +This routine draws an error bar only; to mark the data point at +the start of the error bar, an additional call to PGPT is required. +To plot many error bars, use PGERRB. + +Arguments: + DIR (input) : direction to plot the error bar relative to + the data point. + One-sided error bar: + DIR is 1 for +X (X to X+E); + 2 for +Y (Y to Y+E); + 3 for -X (X to X-E); + 4 for -Y (Y to Y-E). + Two-sided error bar: + DIR is 5 for +/-X (X-E to X+E); + 6 for +/-Y (Y-E to Y+E). + X (input) : world x-coordinate of the data. + Y (input) : world y-coordinate of the data. + E (input) : value of error bar distance to be added to the + data position in world coordinates. + T (input) : length of terminals to be drawn at the ends + of the error bar, as a multiple of the default + length; if T = 0.0, no terminals will be drawn. + + +------------------------------------------------------------------------ +Module: PGERRB -- horizontal or vertical error bar +------------------------------------------------------------------------ + + SUBROUTINE PGERRB (DIR, N, X, Y, E, T) + INTEGER DIR, N + REAL X(*), Y(*), E(*) + REAL T + +Plot error bars in the direction specified by DIR. +This routine draws an error bar only; to mark the data point at +the start of the error bar, an additional call to PGPT is required. + +Arguments: + DIR (input) : direction to plot the error bar relative to + the data point. + One-sided error bar: + DIR is 1 for +X (X to X+E); + 2 for +Y (Y to Y+E); + 3 for -X (X to X-E); + 4 for -Y (Y to Y-E). + Two-sided error bar: + DIR is 5 for +/-X (X-E to X+E); + 6 for +/-Y (Y-E to Y+E). + N (input) : number of error bars to plot. + X (input) : world x-coordinates of the data. + Y (input) : world y-coordinates of the data. + E (input) : value of error bar distance to be added to the + data position in world coordinates. + T (input) : length of terminals to be drawn at the ends + of the error bar, as a multiple of the default + length; if T = 0.0, no terminals will be drawn. + +Note: the dimension of arrays X, Y, and E must be greater +than or equal to N. If N is 1, X, Y, and E may be scalar +variables, or expressions. + + +------------------------------------------------------------------------ +Module: PGERRX -- horizontal error bar +------------------------------------------------------------------------ + + SUBROUTINE PGERRX (N, X1, X2, Y, T) + INTEGER N + REAL X1(*), X2(*), Y(*) + REAL T + +Plot horizontal error bars. +This routine draws an error bar only; to mark the data point in +the middle of the error bar, an additional call to PGPT or +PGERRY is required. + +Arguments: + N (input) : number of error bars to plot. + X1 (input) : world x-coordinates of lower end of the + error bars. + X2 (input) : world x-coordinates of upper end of the + error bars. + Y (input) : world y-coordinates of the data. + T (input) : length of terminals to be drawn at the ends + of the error bar, as a multiple of the default + length; if T = 0.0, no terminals will be drawn. + +Note: the dimension of arrays X1, X2, and Y must be greater +than or equal to N. If N is 1, X1, X2, and Y may be scalar +variables, or expressions, eg: + CALL PGERRX(1,X-SIGMA,X+SIGMA,Y) + + +------------------------------------------------------------------------ +Module: PGERRY -- vertical error bar +------------------------------------------------------------------------ + + SUBROUTINE PGERRY (N, X, Y1, Y2, T) + INTEGER N + REAL X(*), Y1(*), Y2(*) + REAL T + +Plot vertical error bars. +This routine draws an error bar only; to mark the data point in +the middle of the error bar, an additional call to PGPT or +PGERRX is required. + +Arguments: + N (input) : number of error bars to plot. + X (input) : world x-coordinates of the data. + Y1 (input) : world y-coordinates of top end of the + error bars. + Y2 (input) : world y-coordinates of bottom end of the + error bars. + T (input) : length of terminals to be drawn at the ends + of the error bar, as a multiple of the default + length; if T = 0.0, no terminals will be drawn. + +Note: the dimension of arrays X, Y1, and Y2 must be greater +than or equal to N. If N is 1, X, Y1, and Y2 may be scalar +variables or expressions, eg: + CALL PGERRY(1,X,Y+SIGMA,Y-SIGMA) + + +------------------------------------------------------------------------ +Module: PGETXT -- erase text from graphics display +------------------------------------------------------------------------ + + SUBROUTINE PGETXT + +Some graphics terminals display text (the normal interactive dialog) +on the same screen as graphics. This routine erases the text from the +view surface without affecting the graphics. It does nothing on +devices which do not display text on the graphics screen, and on +devices which do not have this capability. + +Arguments: + None + + +------------------------------------------------------------------------ +Module: PGFUNT -- function defined by X = F(T), Y = G(T) +------------------------------------------------------------------------ + + SUBROUTINE PGFUNT (FX, FY, N, TMIN, TMAX, PGFLAG) + REAL FX, FY + EXTERNAL FX, FY + INTEGER N + REAL TMIN, TMAX + INTEGER PGFLAG + +Draw a curve defined by parametric equations X = FX(T), Y = FY(T). + +Arguments: + FX (external real function): supplied by the user, evaluates + X-coordinate. + FY (external real function): supplied by the user, evaluates + Y-coordinate. + N (input) : the number of points required to define the + curve. The functions FX and FY will each be + called N+1 times. + TMIN (input) : the minimum value for the parameter T. + TMAX (input) : the maximum value for the parameter T. + PGFLAG (input) : if PGFLAG = 1, the curve is plotted in the + current window and viewport; if PGFLAG = 0, + PGENV is called automatically by PGFUNT to + start a new plot with automatic scaling. + +Note: The functions FX and FY must be declared EXTERNAL in the +Fortran program unit that calls PGFUNT. + + +------------------------------------------------------------------------ +Module: PGFUNX -- function defined by Y = F(X) +------------------------------------------------------------------------ + + SUBROUTINE PGFUNX (FY, N, XMIN, XMAX, PGFLAG) + REAL FY + EXTERNAL FY + INTEGER N + REAL XMIN, XMAX + INTEGER PGFLAG + +Draw a curve defined by the equation Y = FY(X), where FY is a +user-supplied subroutine. + +Arguments: + FY (external real function): supplied by the user, evaluates + Y value at a given X-coordinate. + N (input) : the number of points required to define the + curve. The function FY will be called N+1 times. + If PGFLAG=0 and N is greater than 1000, 1000 + will be used instead. If N is less than 1, + nothing will be drawn. + XMIN (input) : the minimum value of X. + XMAX (input) : the maximum value of X. + PGFLAG (input) : if PGFLAG = 1, the curve is plotted in the + current window and viewport; if PGFLAG = 0, + PGENV is called automatically by PGFUNX to + start a new plot with X limits (XMIN, XMAX) + and automatic scaling in Y. + +Note: The function FY must be declared EXTERNAL in the Fortran +program unit that calls PGFUNX. It has one argument, the +x-coordinate at which the y value is required, e.g. + REAL FUNCTION FY(X) + REAL X + FY = ..... + END + + +------------------------------------------------------------------------ +Module: PGFUNY -- function defined by X = F(Y) +------------------------------------------------------------------------ + + SUBROUTINE PGFUNY (FX, N, YMIN, YMAX, PGFLAG) + REAL FX + EXTERNAL FX + INTEGER N + REAL YMIN, YMAX + INTEGER PGFLAG + +Draw a curve defined by the equation X = FX(Y), where FY is a +user-supplied subroutine. + +Arguments: + FX (external real function): supplied by the user, evaluates + X value at a given Y-coordinate. + N (input) : the number of points required to define the + curve. The function FX will be called N+1 times. + If PGFLAG=0 and N is greater than 1000, 1000 + will be used instead. If N is less than 1, + nothing will be drawn. + YMIN (input) : the minimum value of Y. + YMAX (input) : the maximum value of Y. + PGFLAG (input) : if PGFLAG = 1, the curve is plotted in the + current window and viewport; if PGFLAG = 0, + PGENV is called automatically by PGFUNY to + start a new plot with Y limits (YMIN, YMAX) + and automatic scaling in X. + +Note: The function FX must be declared EXTERNAL in the Fortran +program unit that calls PGFUNY. It has one argument, the +y-coordinate at which the x value is required, e.g. + REAL FUNCTION FX(Y) + REAL Y + FX = ..... + END + + +------------------------------------------------------------------------ +Module: PGGRAY -- gray-scale map of a 2D data array +------------------------------------------------------------------------ + + SUBROUTINE PGGRAY (A, IDIM, JDIM, I1, I2, J1, J2, + 1 FG, BG, TR) + INTEGER IDIM, JDIM, I1, I2, J1, J2 + REAL A(IDIM,JDIM), FG, BG, TR(6) + +Draw gray-scale map of an array in current window. The subsection +of the array A defined by indices (I1:I2, J1:J2) is mapped onto +the view surface world-coordinate system by the transformation +matrix TR. The resulting quadrilateral region is clipped at the edge +of the window and shaded with the shade at each point determined +by the corresponding array value. The shade is a number in the +range 0 to 1 obtained by linear interpolation between the background +level (BG) and the foreground level (FG), i.e., + + shade = [A(i,j) - BG] / [FG - BG] + +The background level BG can be either less than or greater than the +foreground level FG. Points in the array that are outside the range +BG to FG are assigned shade 0 or 1 as appropriate. + +PGGRAY uses two different algorithms, depending how many color +indices are available in the color index range specified for images. +(This range is set with routine PGSCIR, and the current or default +range can be queried by calling routine PGQCIR). + +If 16 or more color indices are available, PGGRAY first assigns +color representations to these color indices to give a linear ramp +between the background color (color index 0) and the foreground color +(color index 1), and then calls PGIMAG to draw the image using these +color indices. In this mode, the shaded region is "opaque": every +pixel is assigned a color. + +If less than 16 color indices are available, PGGRAY uses only +color index 1, and uses a "dithering" algorithm to fill in pixels, +with the shade (computed as above) determining the faction of pixels +that are filled. In this mode the shaded region is "transparent" and +allows previously-drawn graphics to show through. + +The transformation matrix TR is used to calculate the world +coordinates of the center of the "cell" that represents each +array element. The world coordinates of the center of the cell +corresponding to array element A(I,J) are given by: + + X = TR(1) + TR(2)*I + TR(3)*J + Y = TR(4) + TR(5)*I + TR(6)*J + +Usually TR(3) and TR(5) are zero -- unless the coordinate +transformation involves a rotation or shear. The corners of the +quadrilateral region that is shaded by PGGRAY are given by +applying this transformation to (I1-0.5,J1-0.5), (I2+0.5, J2+0.5). + +Arguments: + A (input) : the array to be plotted. + IDIM (input) : the first dimension of array A. + JDIM (input) : the second dimension of array A. + I1, I2 (input) : the inclusive range of the first index + (I) to be plotted. + J1, J2 (input) : the inclusive range of the second + index (J) to be plotted. + FG (input) : the array value which is to appear with the + foreground color (corresponding to color index 1). + BG (input) : the array value which is to appear with the + background color (corresponding to color index 0). + TR (input) : transformation matrix between array grid and + world coordinates. + + +------------------------------------------------------------------------ +Module: PGHI2D -- cross-sections through a 2D data array +------------------------------------------------------------------------ + + SUBROUTINE PGHI2D (DATA, NXV, NYV, IX1, IX2, IY1, IY2, X, IOFF, + 1 BIAS, CENTER, YLIMS) + INTEGER NXV, NYV, IX1, IX2, IY1, IY2 + REAL DATA(NXV,NYV) + REAL X(IX2-IX1+1), YLIMS(IX2-IX1+1) + INTEGER IOFF + REAL BIAS + LOGICAL CENTER + +Plot a series of cross-sections through a 2D data array. +Each cross-section is plotted as a hidden line histogram. The plot +can be slanted to give a pseudo-3D effect - if this is done, the +call to PGENV may have to be changed to allow for the increased X +range that will be needed. + +Arguments: + DATA (input) : the data array to be plotted. + NXV (input) : the first dimension of DATA. + NYV (input) : the second dimension of DATA. + IX1 (input) + IX2 (input) + IY1 (input) + IY2 (input) : PGHI2D plots a subset of the input array DATA. + This subset is delimited in the first (x) + dimension by IX1 and IX2 and the 2nd (y) by IY1 + and IY2, inclusively. Note: IY2 < IY1 is + permitted, resulting in a plot with the + cross-sections plotted in reverse Y order. + However, IX2 must be => IX1. + X (input) : the abscissae of the bins to be plotted. That is, + X(1) should be the X value for DATA(IX1,IY1), and + X should have (IX2-IX1+1) elements. The program + has to assume that the X value for DATA(x,y) is + the same for all y. + IOFF (input) : an offset in array elements applied to successive + cross-sections to produce a slanted effect. A + plot with IOFF > 0 slants to the right, one with + IOFF < 0 slants left. + BIAS (input) : a bias value applied to each successive cross- + section in order to raise it above the previous + cross-section. This is in the same units as the + data. + CENTER (input) : if .true., the X values denote the center of the + bins; if .false. the X values denote the lower + edges (in X) of the bins. + YLIMS (input) : workspace. Should be an array of at least + (IX2-IX1+1) elements. + + +------------------------------------------------------------------------ +Module: PGHIST -- histogram of unbinned data +------------------------------------------------------------------------ + + SUBROUTINE PGHIST(N, DATA, DATMIN, DATMAX, NBIN, PGFLAG) + INTEGER N + REAL DATA(*) + REAL DATMIN, DATMAX + INTEGER NBIN, PGFLAG + +Draw a histogram of N values of a variable in array +DATA(1...N) in the range DATMIN to DATMAX using NBIN bins. Note +that array elements which fall exactly on the boundary between +two bins will be counted in the higher bin rather than the +lower one; and array elements whose value is less than DATMIN or +greater than or equal to DATMAX will not be counted at all. + +Arguments: + N (input) : the number of data values. + DATA (input) : the data values. Note: the dimension of array + DATA must be greater than or equal to N. The + first N elements of the array are used. + DATMIN (input) : the minimum data value for the histogram. + DATMAX (input) : the maximum data value for the histogram. + NBIN (input) : the number of bins to use: the range DATMIN to + DATMAX is divided into NBIN equal bins and + the number of DATA values in each bin is + determined by PGHIST. NBIN may not exceed 200. + PGFLAG (input) : if PGFLAG = 1, the histogram is plotted in the + current window and viewport; if PGFLAG = 0, + PGENV is called automatically by PGHIST to start + a new plot (the x-limits of the window will be + DATMIN and DATMAX; the y-limits will be chosen + automatically. + IF PGFLAG = 2,3 the histogram will be in the same + window and viewport but with a filled area style. + If pgflag=4,5 as for pgflag = 0,1, but simple + line drawn as for PGBIN + + + +------------------------------------------------------------------------ +Module: PGIDEN -- write username, date, and time at bottom of plot +------------------------------------------------------------------------ + + SUBROUTINE PGIDEN + +Write username, date, and time at bottom of plot. + +Arguments: none. + + +------------------------------------------------------------------------ +Module: PGIMAG -- color image from a 2D data array +------------------------------------------------------------------------ + + SUBROUTINE PGIMAG (A, IDIM, JDIM, I1, I2, J1, J2, + 1 A1, A2, TR) + INTEGER IDIM, JDIM, I1, I2, J1, J2 + REAL A(IDIM,JDIM), A1, A2, TR(6) + +Draw a color image of an array in current window. The subsection +of the array A defined by indices (I1:I2, J1:J2) is mapped onto +the view surface world-coordinate system by the transformation +matrix TR. The resulting quadrilateral region is clipped at the edge +of the window. Each element of the array is represented in the image +by a small quadrilateral, which is filled with a color specified by +the corresponding array value. + +The subroutine uses color indices in the range C1 to C2, which can +be specified by calling PGSCIR before PGIMAG. The default values +for C1 and C2 are device-dependent; these values can be determined by +calling PGQCIR. Note that color representations should be assigned to +color indices C1 to C2 by calling PGSCR before calling PGIMAG. On some +devices (but not all), the color representation can be changed after +the call to PGIMAG by calling PGSCR again. + +Array values in the range A1 to A2 are mapped on to the range of +color indices C1 to C2, with array values <= A1 being given color +index C1 and values >= A2 being given color index C2. The mapping +function for intermediate array values can be specified by +calling routine PGSITF before PGIMAG; the default is linear. + +On devices which have no available color indices (C1 > C2), +PGIMAG will return without doing anything. On devices with only +one color index (C1=C2), all array values map to the same color +which is rather uninteresting. An image is always "opaque", +i.e., it obscures all graphical elements previously drawn in +the region. + +The transformation matrix TR is used to calculate the world +coordinates of the center of the "cell" that represents each +array element. The world coordinates of the center of the cell +corresponding to array element A(I,J) are given by: + + X = TR(1) + TR(2)*I + TR(3)*J + Y = TR(4) + TR(5)*I + TR(6)*J + +Usually TR(3) and TR(5) are zero -- unless the coordinate +transformation involves a rotation or shear. The corners of the +quadrilateral region that is shaded by PGIMAG are given by +applying this transformation to (I1-0.5,J1-0.5), (I2+0.5, J2+0.5). + +Arguments: + A (input) : the array to be plotted. + IDIM (input) : the first dimension of array A. + JDIM (input) : the second dimension of array A. + I1, I2 (input) : the inclusive range of the first index + (I) to be plotted. + J1, J2 (input) : the inclusive range of the second + index (J) to be plotted. + A1 (input) : the array value which is to appear with shade C1. + A2 (input) : the array value which is to appear with shade C2. + TR (input) : transformation matrix between array grid and + world coordinates. + + +------------------------------------------------------------------------ +Module: PGLAB -- write labels for x-axis, y-axis, and top of plot +------------------------------------------------------------------------ + + SUBROUTINE PGLAB (XLBL, YLBL, TOPLBL) + CHARACTER*(*) XLBL, YLBL, TOPLBL + +Write labels outside the viewport. This routine is a simple +interface to PGMTXT, which should be used if PGLAB is inadequate. + +Arguments: + XLBL (input) : a label for the x-axis (centered below the + viewport). + YLBL (input) : a label for the y-axis (centered to the left + of the viewport, drawn vertically). + TOPLBL (input) : a label for the entire plot (centered above the + viewport). + + +------------------------------------------------------------------------ +Module: PGLCUR -- draw a line using the cursor +------------------------------------------------------------------------ + + SUBROUTINE PGLCUR (MAXPT, NPT, X, Y) + INTEGER MAXPT, NPT + REAL X(*), Y(*) + +Interactive routine for user to enter a polyline by use of +the cursor. Routine allows user to Add and Delete vertices; +vertices are joined by straight-line segments. + +Arguments: + MAXPT (input) : maximum number of points that may be accepted. + NPT (in/out) : number of points entered; should be zero on + first call. + X (in/out) : array of x-coordinates (dimension at least MAXPT). + Y (in/out) : array of y-coordinates (dimension at least MAXPT). + +Notes: + +(1) On return from the program, cursor points are returned in +the order they were entered. Routine may be (re-)called with points +already defined in X,Y (# in NPT), and they will be plotted +first, before editing. + +(2) User commands: the user types single-character commands +after positioning the cursor: the following are accepted: + A (Add) - add point at current cursor location. + D (Delete) - delete last-entered point. + X (eXit) - leave subroutine. + + +------------------------------------------------------------------------ +Module: PGLDEV -- list available device types on standard output +------------------------------------------------------------------------ + + SUBROUTINE PGLDEV + +Writes (to standard output) a list of all device types available in +the current PGPLOT installation. + +Arguments: none. + + +------------------------------------------------------------------------ +Module: PGLEN -- find length of a string in a variety of units +------------------------------------------------------------------------ + + SUBROUTINE PGLEN (UNITS, STRING, XL, YL) + REAL XL, YL + INTEGER UNITS + CHARACTER*(*) STRING + +Work out length of a string in x and y directions + +Input + UNITS : 0 => answer in normalized device coordinates + 1 => answer in inches + 2 => answer in mm + 3 => answer in absolute device coordinates (dots) + 4 => answer in world coordinates + 5 => answer as a fraction of the current viewport size + + STRING : String of interest +Output + XL : Length of string in x direction + YL : Length of string in y direction + + + +------------------------------------------------------------------------ +Module: PGLINE -- draw a polyline (curve defined by line-segments) +------------------------------------------------------------------------ + + SUBROUTINE PGLINE (N, XPTS, YPTS) + INTEGER N + REAL XPTS(*), YPTS(*) + +Primitive routine to draw a Polyline. A polyline is one or more +connected straight-line segments. The polyline is drawn using +the current setting of attributes color-index, line-style, and +line-width. The polyline is clipped at the edge of the window. + +Arguments: + N (input) : number of points defining the line; the line + consists of (N-1) straight-line segments. + N should be greater than 1 (if it is 1 or less, + nothing will be drawn). + XPTS (input) : world x-coordinates of the points. + YPTS (input) : world y-coordinates of the points. + +The dimension of arrays X and Y must be greater than or equal to N. +The "pen position" is changed to (X(N),Y(N)) in world coordinates +(if N > 1). + + +------------------------------------------------------------------------ +Module: PGMOVE -- move pen (change current pen position) +------------------------------------------------------------------------ + + SUBROUTINE PGMOVE (X, Y) + REAL X, Y + +Primitive routine to move the "pen" to the point with world +coordinates (X,Y). No line is drawn. + +Arguments: + X (input) : world x-coordinate of the new pen position. + Y (input) : world y-coordinate of the new pen position. + + +------------------------------------------------------------------------ +Module: PGMTXT -- write text at position relative to viewport +------------------------------------------------------------------------ + + SUBROUTINE PGMTXT (SIDE, DISP, COORD, FJUST, TEXT) + CHARACTER*(*) SIDE, TEXT + REAL DISP, COORD, FJUST + +Write text at a position specified relative to the viewport (outside +or inside). This routine is useful for annotating graphs. It is used +by routine PGLAB. The text is written using the current values of +attributes color-index, line-width, character-height, and +character-font. + +Arguments: + SIDE (input) : must include one of the characters 'B', 'L', 'T', + or 'R' signifying the Bottom, Left, Top, or Right + margin of the viewport. If it includes 'LV' or + 'RV', the string is written perpendicular to the + frame rather than parallel to it. + DISP (input) : the displacement of the character string from the + specified edge of the viewport, measured outwards + from the viewport in units of the character + height. Use a negative value to write inside the + viewport, a positive value to write outside. + COORD (input) : the location of the character string along the + specified edge of the viewport, as a fraction of + the length of the edge. + FJUST (input) : controls justification of the string parallel to + the specified edge of the viewport. If + FJUST = 0.0, the left-hand end of the string will + be placed at COORD; if JUST = 0.5, the center of + the string will be placed at COORD; if JUST = 1.0, + the right-hand end of the string will be placed at + at COORD. Other values between 0 and 1 give inter- + mediate placing, but they are not very useful. + TEXT (input) : the text string to be plotted. Trailing spaces are + ignored when justifying the string, but leading + spaces are significant. + + + +------------------------------------------------------------------------ +Module: PGNCUR -- mark a set of points using the cursor +------------------------------------------------------------------------ + + SUBROUTINE PGNCUR (MAXPT, NPT, X, Y, SYMBOL) + INTEGER MAXPT, NPT + REAL X(*), Y(*) + INTEGER SYMBOL + +Interactive routine for user to enter data points by use of +the cursor. Routine allows user to Add and Delete points. The +points are returned in order of increasing x-coordinate, not in the +order they were entered. + +Arguments: + MAXPT (input) : maximum number of points that may be accepted. + NPT (in/out) : number of points entered; should be zero on + first call. + X (in/out) : array of x-coordinates. + Y (in/out) : array of y-coordinates. + SYMBOL (input) : code number of symbol to use for marking + entered points (see PGPT). + +Note (1): The dimension of arrays X and Y must be greater than or +equal to MAXPT. + +Note (2): On return from the program, cursor points are returned in +increasing order of X. Routine may be (re-)called with points +already defined in X,Y (number in NPT), and they will be plotted +first, before editing. + +Note (3): User commands: the user types single-character commands +after positioning the cursor: the following are accepted: +A (Add) - add point at current cursor location. +D (Delete) - delete nearest point to cursor. +X (eXit) - leave subroutine. + + +------------------------------------------------------------------------ +Module: PGNUMB -- convert a number into a plottable character string +------------------------------------------------------------------------ + + SUBROUTINE PGNUMB (MM, PP, FORM, STRING, NC) + INTEGER MM, PP, FORM + CHARACTER*(*) STRING + INTEGER NC + +This routine converts a number into a decimal character +representation. To avoid problems of floating-point roundoff, the +number must be provided as an integer (MM) multiplied by a power of 10 +(10**PP). The output string retains only significant digits of MM, +and will be in either integer format (123), decimal format (0.0123), +or exponential format (1.23x10**5). Standard escape sequences \u, \d +raise the exponent and \x is used for the multiplication sign. +This routine is used by PGBOX to create numeric labels for a plot. + +Formatting rules: + (a) Decimal notation (FORM=1): + - Trailing zeros to the right of the decimal sign are + omitted + - The decimal sign is omitted if there are no digits + to the right of it + - When the decimal sign is placed before the first digit + of the number, a zero is placed before the decimal sign + - The decimal sign is a period (.) + - No spaces are placed between digits (ie digits are not + grouped in threes as they should be) + - A leading minus (-) is added if the number is negative + (b) Exponential notation (FORM=2): + - The exponent is adjusted to put just one (non-zero) + digit before the decimal sign + - The mantissa is formatted as in (a), unless its value is + 1 in which case it and the multiplication sign are omitted + - If the power of 10 is not zero and the mantissa is not + zero, an exponent of the form \x10\u[-]nnn is appended, + where \x is a multiplication sign (cross), \u is an escape + sequence to raise the exponent, and as many digits nnn + are used as needed + (c) Automatic choice (FORM=0): + Decimal notation is used if the absolute value of the + number is less than 10000 or greater than or equal to + 0.01. Otherwise exponential notation is used. + +Arguments: + MM (input) + PP (input) : the value to be formatted is MM*10**PP. + FORM (input) : controls how the number is formatted: + FORM = 0 -- use either decimal or exponential + FORM = 1 -- use decimal notation + FORM = 2 -- use exponential notation + STRING (output) : the formatted character string, left justified. + If the length of STRING is insufficient, a single + asterisk is returned, and NC=1. + NC (output) : the number of characters used in STRING: + the string to be printed is STRING(1:NC). + + +------------------------------------------------------------------------ +Module: PGOLIN -- mark a set of points using the cursor +------------------------------------------------------------------------ + + SUBROUTINE PGOLIN (MAXPT, NPT, X, Y, SYMBOL) + INTEGER MAXPT, NPT + REAL X(*), Y(*) + INTEGER SYMBOL + +Interactive routine for user to enter data points by use of +the cursor. Routine allows user to Add and Delete points. The +points are returned in the order that they were entered (unlike +PGNCUR). + +Arguments: + MAXPT (input) : maximum number of points that may be accepted. + NPT (in/out) : number of points entered; should be zero on + first call. + X (in/out) : array of x-coordinates. + Y (in/out) : array of y-coordinates. + SYMBOL (input) : code number of symbol to use for marking + entered points (see PGPT). + +Note (1): The dimension of arrays X and Y must be greater than or +equal to MAXPT. + +Note (2): On return from the program, cursor points are returned in +the order they were entered. Routine may be (re-)called with points +already defined in X,Y (number in NPT), and they will be plotted +first, before editing. + +Note (3): User commands: the user types single-character commands +after positioning the cursor: the following are accepted: +A (Add) - add point at current cursor location. +D (Delete) - delete the last point entered. +X (eXit) - leave subroutine. + + +------------------------------------------------------------------------ +Module: PGOPEN -- open a graphics device +------------------------------------------------------------------------ + + INTEGER FUNCTION PGOPEN (DEVICE) + CHARACTER*(*) DEVICE + +Open a graphics device for PGPLOT output. If the device is +opened successfully, it becomes the selected device to which +graphics output is directed until another device is selected +with PGSLCT or the device is closed with PGCLOS. + +The value returned by PGOPEN should be tested to ensure that +the device was opened successfully, e.g., + + ISTAT = PGOPEN('plot.ps/PS') + IF (ISTAT .LE. 0 ) STOP + +Note that PGOPEN must be declared INTEGER in the calling program. + +The DEVICE argument is a character constant or variable; its value +should be one of the following: + +(1) A complete device specification of the form 'device/type' or + 'file/type', where 'type' is one of the allowed PGPLOT device + types (installation-dependent) and 'device' or 'file' is the + name of a graphics device or disk file appropriate for this type. + The 'device' or 'file' may contain '/' characters; the final + '/' delimits the 'type'. If necessary to avoid ambiguity, + the 'device' part of the string may be enclosed in double + quotation marks. +(2) A device specification of the form '/type', where 'type' is one + of the allowed PGPLOT device types. PGPLOT supplies a default + file or device name appropriate for this device type. +(3) A device specification with '/type' omitted; in this case + the type is taken from the environment variable PGPLOT_TYPE, + if defined (e.g., setenv PGPLOT_TYPE PS). Because of possible + confusion with '/' in file-names, omitting the device type + in this way is not recommended. +(4) A blank string (' '); in this case, PGOPEN will use the value + of environment variable PGPLOT_DEV as the device specification, + or '/NULL' if the environment variable is undefined. +(5) A single question mark, with optional trailing spaces ('?'); in + this case, PGPLOT will prompt the user to supply the device + specification, with a prompt string of the form + 'Graphics device/type (? to see list, default XXX):' + where 'XXX' is the default (value of environment variable + PGPLOT_DEV). +(6) A non-blank string in which the first character is a question + mark (e.g., '?Device: '); in this case, PGPLOT will prompt the + user to supply the device specification, using the supplied + string as the prompt (without the leading question mark but + including any trailing spaces). + +In cases (5) and (6), the device specification is read from the +standard input. The user should respond to the prompt with a device +specification of the form (1), (2), or (3). If the user types a +question-mark in response to the prompt, a list of available device +types is displayed and the prompt is re-issued. If the user supplies +an invalid device specification, the prompt is re-issued. If the user +responds with an end-of-file character, e.g., ctrl-D in UNIX, program +execution is aborted; this avoids the possibility of an infinite +prompting loop. A programmer should avoid use of PGPLOT-prompting +if this behavior is not desirable. + +The device type is case-insensitive (e.g., '/ps' and '/PS' are +equivalent). The device or file name may be case-sensitive in some +operating systems. + +Examples of valid DEVICE arguments: + +(1) 'plot.ps/ps', 'dir/plot.ps/ps', '"dir/plot.ps"/ps', + 'user:[tjp.plots]plot.ps/PS' +(2) '/ps' (PGPLOT interprets this as 'pgplot.ps/ps') +(3) 'plot.ps' (if PGPLOT_TYPE is defined as 'ps', PGPLOT + interprets this as 'plot.ps/ps') +(4) ' ' (if PGPLOT_DEV is defined) +(5) '? ' +(6) '?Device specification for PGPLOT: ' + +[This routine was added to PGPLOT in Version 5.1.0. Older programs +use PGBEG instead.] + +Returns: + PGOPEN : returns either a positive value, the + identifier of the graphics device for use with + PGSLCT, or a 0 or negative value indicating an + error. In the event of error a message is + written on the standard error unit. +Arguments: + DEVICE (input) : the 'device specification' for the plot device + (see above). + + +------------------------------------------------------------------------ +Module: PGPAGE -- advance to new page +------------------------------------------------------------------------ + + SUBROUTINE PGPAGE + +Advance plotter to a new page or panel, clearing the screen if +necessary. If the "prompt state" is ON (see PGASK), confirmation is +requested from the user before clearing the screen. If the view +surface has been subdivided into panels with PGBEG or PGSUBP, then +PGPAGE advances to the next panel, and if the current panel is the +last on the page, PGPAGE clears the screen or starts a new sheet of +paper. PGPAGE does not change the PGPLOT window or the viewport +(in normalized device coordinates); but note that if the size of the +view-surface is changed externally (e.g., by a workstation window +manager) the size of the viewport is changed in proportion. + +Arguments: none + + +------------------------------------------------------------------------ +Module: PGPANL -- switch to a different panel on the view surface +------------------------------------------------------------------------ + + SUBROUTINE PGPANL(IX, IY) + INTEGER IX, IY + +Start plotting in a different panel. If the view surface has been +divided into panels by PGBEG or PGSUBP, this routine can be used to +move to a different panel. Note that PGPLOT does not remember what +viewport and window were in use in each panel; these should be reset +if necessary after calling PGPANL. Nor does PGPLOT clear the panel: +call PGERAS after calling PGPANL to do this. + +Arguments: + IX (input) : the horizontal index of the panel (in the range + 1 <= IX <= number of panels in horizontal + direction). + IY (input) : the vertical index of the panel (in the range + 1 <= IY <= number of panels in horizontal + direction). + + +------------------------------------------------------------------------ +Module: PGPAP -- change the size of the view surface +------------------------------------------------------------------------ + + SUBROUTINE PGPAP (WIDTH, ASPECT) + REAL WIDTH, ASPECT + +This routine changes the size of the view surface ("paper size") to a +specified width and aspect ratio (height/width), in so far as this is +possible on the specific device. It is always possible to obtain a +view surface smaller than the default size; on some devices (e.g., +printers that print on roll or fan-feed paper) it is possible to +obtain a view surface larger than the default. + +This routine should be called either immediately after PGBEG or +immediately before PGPAGE. The new size applies to all subsequent +images until the next call to PGPAP. + +Arguments: + WIDTH (input) : the requested width of the view surface in inches; + if WIDTH=0.0, PGPAP will obtain the largest view + surface available consistent with argument ASPECT. + (1 inch = 25.4 mm.) + ASPECT (input) : the aspect ratio (height/width) of the view + surface; e.g., ASPECT=1.0 gives a square view + surface, ASPECT=0.618 gives a horizontal + rectangle, ASPECT=1.618 gives a vertical rectangle. + + +------------------------------------------------------------------------ +Module: PGPIXL -- draw pixels +------------------------------------------------------------------------ + + SUBROUTINE PGPIXL (IA, IDIM, JDIM, I1, I2, J1, J2, + 1 X1, X2, Y1, Y2) + INTEGER IDIM, JDIM, I1, I2, J1, J2 + INTEGER IA(IDIM,JDIM) + REAL X1, X2, Y1, Y2 + +Draw lots of solid-filled (tiny) rectangles aligned with the +coordinate axes. Best performance is achieved when output is +directed to a pixel-oriented device and the rectangles coincide +with the pixels on the device. In other cases, pixel output is +emulated. + +The subsection of the array IA defined by indices (I1:I2, J1:J2) +is mapped onto world-coordinate rectangle defined by X1, X2, Y1 +and Y2. This rectangle is divided into (I2 - I1 + 1) * (J2 - J1 + 1) +small rectangles. Each of these small rectangles is solid-filled +with the color index specified by the corresponding element of +IA. + +On most devices, the output region is "opaque", i.e., it obscures +all graphical elements previously drawn in the region. But on +devices that do not have erase capability, the background shade +is "transparent" and allows previously-drawn graphics to show +through. + +Arguments: + IA (input) : the array to be plotted. + IDIM (input) : the first dimension of array A. + JDIM (input) : the second dimension of array A. + I1, I2 (input) : the inclusive range of the first index + (I) to be plotted. + J1, J2 (input) : the inclusive range of the second + index (J) to be plotted. + X1, Y1 (input) : world coordinates of one corner of the output + region + X2, Y2 (input) : world coordinates of the opposite corner of the + output region + + +------------------------------------------------------------------------ +Module: PGPNTS -- draw several graph markers, not all the same +------------------------------------------------------------------------ + + SUBROUTINE PGPNTS (N, X, Y, SYMBOL, NS) + INTEGER N, NS + REAL X(*), Y(*) + INTEGER SYMBOL(*) + +Draw Graph Markers. Unlike PGPT, this routine can draw a different +symbol at each point. The markers are drawn using the current values +of attributes color-index, line-width, and character-height +(character-font applies if the symbol number is >31). If the point +to be marked lies outside the window, no marker is drawn. The "pen +position" is changed to (XPTS(N),YPTS(N)) in world coordinates +(if N > 0). + +Arguments: + N (input) : number of points to mark. + X (input) : world x-coordinate of the points. + Y (input) : world y-coordinate of the points. + SYMBOL (input) : code number of the symbol to be plotted at each + point (see PGPT). + NS (input) : number of values in the SYMBOL array. If NS <= N, + then the first NS points are drawn using the value + of SYMBOL(I) at (X(I), Y(I)) and SYMBOL(1) for all + the values of (X(I), Y(I)) where I > NS. + +Note: the dimension of arrays X and Y must be greater than or equal +to N and the dimension of the array SYMBOL must be greater than or +equal to NS. If N is 1, X and Y may be scalars (constants or +variables). If NS is 1, then SYMBOL may be a scalar. If N is +less than 1, nothing is drawn. + + +------------------------------------------------------------------------ +Module: PGPOLY -- draw a polygon, using fill-area attributes +------------------------------------------------------------------------ + + SUBROUTINE PGPOLY (N, XPTS, YPTS) + INTEGER N + REAL XPTS(*), YPTS(*) + +Fill-area primitive routine: shade the interior of a closed +polygon in the current window. The action of this routine depends +on the setting of the Fill-Area Style attribute (see PGSFS). +The polygon is clipped at the edge of the +window. The pen position is changed to (XPTS(1),YPTS(1)) in world +coordinates (if N > 1). If the polygon is not convex, a point is +assumed to lie inside the polygon if a straight line drawn to +infinity intersects and odd number of the polygon's edges. + +Arguments: + N (input) : number of points defining the polygon; the + line consists of N straight-line segments, + joining points 1 to 2, 2 to 3,... N-1 to N, N to 1. + N should be greater than 2 (if it is 2 or less, + nothing will be drawn). + XPTS (input) : world x-coordinates of the vertices. + YPTS (input) : world y-coordinates of the vertices. + Note: the dimension of arrays XPTS and YPTS must be + greater than or equal to N. + + +------------------------------------------------------------------------ +Module: PGPT -- draw several graph markers +------------------------------------------------------------------------ + + SUBROUTINE PGPT (N, XPTS, YPTS, SYMBOL) + INTEGER N + REAL XPTS(*), YPTS(*) + INTEGER SYMBOL + +Primitive routine to draw Graph Markers (polymarker). The markers +are drawn using the current values of attributes color-index, +line-width, and character-height (character-font applies if the symbol +number is >31). If the point to be marked lies outside the window, +no marker is drawn. The "pen position" is changed to +(XPTS(N),YPTS(N)) in world coordinates (if N > 0). + +Arguments: + N (input) : number of points to mark. + XPTS (input) : world x-coordinates of the points. + YPTS (input) : world y-coordinates of the points. + SYMBOL (input) : code number of the symbol to be drawn at each + point: + -1, -2 : a single dot (diameter = current + line width). + -3..-31 : a regular polygon with ABS(SYMBOL) + edges (style set by current fill style). + 0..31 : standard marker symbols. + 32..127 : ASCII characters (in current font). + e.g. to use letter F as a marker, let + SYMBOL = ICHAR('F'). + > 127 : a Hershey symbol number. + +Note: the dimension of arrays X and Y must be greater than or equal +to N. If N is 1, X and Y may be scalars (constants or variables). If +N is less than 1, nothing is drawn. + + +------------------------------------------------------------------------ +Module: PGPT1 -- draw one graph marker +------------------------------------------------------------------------ + + SUBROUTINE PGPT1 (XPT, YPT, SYMBOL) + REAL XPT, YPT + INTEGER SYMBOL + +Primitive routine to draw a single Graph Marker at a specified point. +The marker is drawn using the current values of attributes +color-index, line-width, and character-height (character-font applies +if the symbol number is >31). If the point to be marked lies outside +the window, no marker is drawn. The "pen position" is changed to +(XPT,YPT) in world coordinates. + +To draw several markers with coordinates specified by X and Y +arrays, use routine PGPT. + +Arguments: + XPT (input) : world x-coordinate of the point. + YPT (input) : world y-coordinate of the point. + SYMBOL (input) : code number of the symbol to be drawn: + -1, -2 : a single dot (diameter = current + line width). + -3..-31 : a regular polygon with ABS(SYMBOL) + edges (style set by current fill style). + 0..31 : standard marker symbols. + 32..127 : ASCII characters (in current font). + e.g. to use letter F as a marker, let + SYMBOL = ICHAR('F'). + > 127 : a Hershey symbol number. + + +------------------------------------------------------------------------ +Module: PGPTXT -- write text at arbitrary position and angle +------------------------------------------------------------------------ + + SUBROUTINE PGPTXT (X, Y, ANGLE, FJUST, TEXT) + REAL X, Y, ANGLE, FJUST + CHARACTER*(*) TEXT + +Primitive routine for drawing text. The text may be drawn at any +angle with the horizontal, and may be centered or left- or right- +justified at a specified position. Routine PGTEXT provides a +simple interface to PGPTXT for horizontal strings. Text is drawn +using the current values of attributes color-index, line-width, +character-height, and character-font. Text is NOT subject to +clipping at the edge of the window. + +Arguments: + X (input) : world x-coordinate. + Y (input) : world y-coordinate. The string is drawn with the + baseline of all the characters passing through + point (X,Y); the positioning of the string along + this line is controlled by argument FJUST. + ANGLE (input) : angle, in degrees, that the baseline is to make + with the horizontal, increasing counter-clockwise + (0.0 is horizontal). + FJUST (input) : controls horizontal justification of the string. + If FJUST = 0.0, the string will be left-justified + at the point (X,Y); if FJUST = 0.5, it will be + centered, and if FJUST = 1.0, it will be right + justified. [Other values of FJUST give other + justifications.] + TEXT (input) : the character string to be plotted. + + +------------------------------------------------------------------------ +Module: PGQAH -- inquire arrow-head style +------------------------------------------------------------------------ + + SUBROUTINE PGQAH (FS, ANGLE, BARB) + INTEGER FS + REAL ANGLE, BARB + +Query the style to be used for arrowheads drawn with routine PGARRO. + +Argument: + FS (output) : FS = 1 => filled; FS = 2 => outline. + ANGLE (output) : the acute angle of the arrow point, in degrees. + BARB (output) : the fraction of the triangular arrow-head that + is cut away from the back. + + +------------------------------------------------------------------------ +Module: PGQCF -- inquire character font +------------------------------------------------------------------------ + + SUBROUTINE PGQCF (FONT) + INTEGER FONT + +Query the current Character Font (set by routine PGSCF). + +Argument: + FONT (output) : the current font number (in range 1-4). + + +------------------------------------------------------------------------ +Module: PGQCH -- inquire character height +------------------------------------------------------------------------ + + SUBROUTINE PGQCH (SIZE) + REAL SIZE + +Query the Character Size attribute (set by routine PGSCH). + +Argument: + SIZE (output) : current character size (dimensionless multiple of + the default size). + + +------------------------------------------------------------------------ +Module: PGQCI -- inquire color index +------------------------------------------------------------------------ + + SUBROUTINE PGQCI (CI) + INTEGER CI + +Query the Color Index attribute (set by routine PGSCI). + +Argument: + CI (output) : the current color index (in range 0-max). This is + the color index actually in use, and may differ + from the color index last requested by PGSCI if + that index is not available on the output device. + + +------------------------------------------------------------------------ +Module: PGQCIR -- inquire color index range +------------------------------------------------------------------------ + + SUBROUTINE PGQCIR(ICILO, ICIHI) + INTEGER ICILO, ICIHI + +Query the color index range to be used for producing images with +PGGRAY or PGIMAG, as set by routine PGSCIR or by device default. + +Arguments: + ICILO (output) : the lowest color index to use for images + ICIHI (output) : the highest color index to use for images + + +------------------------------------------------------------------------ +Module: PGQCLP -- inquire clipping status +------------------------------------------------------------------------ + + SUBROUTINE PGQCLP(STATE) + INTEGER STATE + +Query the current clipping status (set by routine PGSCLP). + +Argument: + STATE (output) : receives the clipping status (0 => disabled, + 1 => enabled). + + +------------------------------------------------------------------------ +Module: PGQCOL -- inquire color capability +------------------------------------------------------------------------ + + SUBROUTINE PGQCOL (CI1, CI2) + INTEGER CI1, CI2 + +Query the range of color indices available on the current device. + +Argument: + CI1 (output) : the minimum available color index. This will be + either 0 if the device can write in the + background color, or 1 if not. + CI2 (output) : the maximum available color index. This will be + 1 if the device has no color capability, or a + larger number (e.g., 3, 7, 15, 255). + + +------------------------------------------------------------------------ +Module: PGQCR -- inquire color representation +------------------------------------------------------------------------ + + SUBROUTINE PGQCR (CI, CR, CG, CB) + INTEGER CI + REAL CR, CG, CB + +Query the RGB colors associated with a color index. + +Arguments: + CI (input) : color index + CR (output) : red, green and blue intensities + CG (output) in the range 0.0 to 1.0 + CB (output) + + +------------------------------------------------------------------------ +Module: PGQCS -- inquire character height in a variety of units +------------------------------------------------------------------------ + + SUBROUTINE PGQCS(UNITS, XCH, YCH) + INTEGER UNITS + REAL XCH, YCH + +Return the current PGPLOT character height in a variety of units. +This routine provides facilities that are not available via PGQCH. +Use PGQCS if the character height is required in units other than +those used in PGSCH. + +The PGPLOT "character height" is a dimension that scales with the +size of the view surface and with the scale-factor specified with +routine PGSCH. The default value is 1/40th of the height or width +of the view surface (whichever is less); this value is then +multiplied by the scale-factor supplied with PGSCH. Note that it +is a nominal height only; the actual character size depends on the +font and is usually somewhat smaller. + +Arguments: + UNITS (input) : Used to specify the units of the output value: + UNITS = 0 : normalized device coordinates + UNITS = 1 : inches + UNITS = 2 : millimeters + UNITS = 3 : pixels + UNITS = 4 : world coordinates + Other values give an error message, and are + treated as 0. + XCH (output) : The character height for text written with a + vertical baseline. + YCH (output) : The character height for text written with + a horizontal baseline (the usual case). + +The character height is returned in both XCH and YCH. + +If UNITS=1 or UNITS=2, XCH and YCH both receive the same value. + +If UNITS=3, XCH receives the height in horizontal pixel units, and YCH +receives the height in vertical pixel units; on devices for which the +pixels are not square, XCH and YCH will be different. + +If UNITS=4, XCH receives the height in horizontal world coordinates +(as used for the x-axis), and YCH receives the height in vertical +world coordinates (as used for the y-axis). Unless special care has +been taken to achive equal world-coordinate scales on both axes, the +values of XCH and YCH will be different. + +If UNITS=0, XCH receives the character height as a fraction of the +horizontal dimension of the view surface, and YCH receives the +character height as a fraction of the vertical dimension of the view +surface. + + +------------------------------------------------------------------------ +Module: PGQDT -- inquire name of nth available device type +------------------------------------------------------------------------ + + SUBROUTINE PGQDT(N, TYPE, TLEN, DESCR, DLEN, INTER) + INTEGER N + CHARACTER*(*) TYPE, DESCR + INTEGER TLEN, DLEN, INTER + +Return the name of the Nth available device type as a character +string. The number of available types can be determined by calling +PGQNDT. If the value of N supplied is outside the range from 1 to +the number of available types, the routine returns DLEN=TLEN=0. + +Arguments: + N (input) : the number of the device type (1..maximum). + TYPE (output) : receives the character device-type code of the + Nth device type. The argument supplied should be + large enough for at least 8 characters. The first + character in the string is a '/' character. + TLEN (output) : receives the number of characters in TYPE, + excluding trailing blanks. + DESCR (output) : receives a description of the device type. The + argument supplied should be large enough for at + least 64 characters. + DLEN (output) : receives the number of characters in DESCR, + excluding trailing blanks. + INTER (output) : receives 1 if the device type is an interactive + one, 0 otherwise. + + +------------------------------------------------------------------------ +Module: PGQFS -- inquire fill-area style +------------------------------------------------------------------------ + + SUBROUTINE PGQFS (FS) + INTEGER FS + +Query the current Fill-Area Style attribute (set by routine +PGSFS). + +Argument: + FS (output) : the current fill-area style: + FS = 1 => solid (default) + FS = 2 => outline + FS = 3 => hatched + FS = 4 => cross-hatched + + +------------------------------------------------------------------------ +Module: PGQHS -- inquire hatching style +------------------------------------------------------------------------ + + SUBROUTINE PGQHS (ANGLE, SEPN, PHASE) + REAL ANGLE, SEPN, PHASE + +Query the style to be used hatching (fill area with fill-style 3). + +Arguments: + ANGLE (output) : the angle the hatch lines make with the + horizontal, in degrees, increasing + counterclockwise (this is an angle on the + view surface, not in world-coordinate space). + SEPN (output) : the spacing of the hatch lines. The unit spacing + is 1 percent of the smaller of the height or + width of the view surface. + PHASE (output) : a real number between 0 and 1; the hatch lines + are displaced by this fraction of SEPN from a + fixed reference. Adjacent regions hatched with the + same PHASE have contiguous hatch lines. + + +------------------------------------------------------------------------ +Module: PGQID -- inquire current device identifier +------------------------------------------------------------------------ + + SUBROUTINE PGQID (ID) + INTEGER ID + +This subroutine returns the identifier of the currently +selected device, or 0 if no device is selected. The identifier is +assigned when PGOPEN is called to open the device, and may be used +as an argument to PGSLCT. Each open device has a different +identifier. + +[This routine was added to PGPLOT in Version 5.1.0.] + +Argument: + ID (output) : the identifier of the current device, or 0 if + no device is currently selected. + + +------------------------------------------------------------------------ +Module: PGQINF -- inquire PGPLOT general information +------------------------------------------------------------------------ + + SUBROUTINE PGQINF (ITEM, VALUE, LENGTH) + CHARACTER*(*) ITEM, VALUE + INTEGER LENGTH + +This routine can be used to obtain miscellaneous information about +the PGPLOT environment. Input is a character string defining the +information required, and output is a character string containing the +requested information. + +The following item codes are accepted (note that the strings must +match exactly, except for case, but only the first 8 characters are +significant). For items marked *, PGPLOT must be in the OPEN state +for the inquiry to succeed. If the inquiry is unsuccessful, either +because the item code is not recognized or because the information +is not available, a question mark ('?') is returned. + + 'VERSION' - version of PGPLOT software in use. + 'STATE' - status of PGPLOT ('OPEN' if a graphics device + is open for output, 'CLOSED' otherwise). + 'USER' - the username associated with the calling program. + 'NOW' - current date and time (e.g., '17-FEB-1986 10:04'). + 'DEVICE' * - current PGPLOT device or file. + 'FILE' * - current PGPLOT device or file. + 'TYPE' * - device-type of the current PGPLOT device. + 'DEV/TYPE' * - current PGPLOT device and type, in a form which + is acceptable as an argument for PGBEG. + 'HARDCOPY' * - is the current device a hardcopy device? ('YES' or + 'NO'). + 'TERMINAL' * - is the current device the user's interactive + terminal? ('YES' or 'NO'). + 'CURSOR' * - does the current device have a graphics cursor? + ('YES' or 'NO'). + 'SCROLL' * - does current device have rectangle-scroll + capability ('YES' or 'NO'); see PGSCRL. + +Arguments: + ITEM (input) : character string defining the information to + be returned; see above for a list of possible + values. + VALUE (output) : returns a character-string containing the + requested information, truncated to the length + of the supplied string or padded on the right with + spaces if necessary. + LENGTH (output): the number of characters returned in VALUE + (excluding trailing blanks). + + +------------------------------------------------------------------------ +Module: PGQITF -- inquire image transfer function +------------------------------------------------------------------------ + + SUBROUTINE PGQITF (ITF) + INTEGER ITF + +Return the Image Transfer Function as set by default or by a previous +call to PGSITF. The Image Transfer Function is used by routines +PGIMAG, PGGRAY, and PGWEDG. + +Argument: + ITF (output) : type of transfer function (see PGSITF) + + +------------------------------------------------------------------------ +Module: PGQLS -- inquire line style +------------------------------------------------------------------------ + + SUBROUTINE PGQLS (LS) + INTEGER LS + +Query the current Line Style attribute (set by routine PGSLS). + +Argument: + LS (output) : the current line-style attribute (in range 1-5). + + +------------------------------------------------------------------------ +Module: PGQLW -- inquire line width +------------------------------------------------------------------------ + + SUBROUTINE PGQLW (LW) + INTEGER LW + +Query the current Line-Width attribute (set by routine PGSLW). + +Argument: + LW (output) : the line-width (in range 1-201). + + +------------------------------------------------------------------------ +Module: PGQNDT -- inquire number of available device types +------------------------------------------------------------------------ + + SUBROUTINE PGQNDT(N) + INTEGER N + +Return the number of available device types. This routine is +usually used in conjunction with PGQDT to get a list of the +available device types. + +Arguments: + N (output) : the number of available device types. + + +------------------------------------------------------------------------ +Module: PGQPOS -- inquire current pen position +------------------------------------------------------------------------ + + SUBROUTINE PGQPOS (X, Y) + REAL X, Y + +Query the current "pen" position in world C coordinates (X,Y). + +Arguments: + X (output) : world x-coordinate of the pen position. + Y (output) : world y-coordinate of the pen position. + + +------------------------------------------------------------------------ +Module: PGQTBG -- inquire text background color index +------------------------------------------------------------------------ + + SUBROUTINE PGQTBG (TBCI) + INTEGER TBCI + +Query the current Text Background Color Index (set by routine +PGSTBG). + +Argument: + TBCI (output) : receives the current text background color index. + + +------------------------------------------------------------------------ +Module: PGQTXT -- find bounding box of text string +------------------------------------------------------------------------ + + SUBROUTINE PGQTXT (X, Y, ANGLE, FJUST, TEXT, XBOX, YBOX) + REAL X, Y, ANGLE, FJUST + CHARACTER*(*) TEXT + REAL XBOX(4), YBOX(4) + +This routine returns a bounding box for a text string. Instead +of drawing the string as routine PGPTXT does, it returns in XBOX +and YBOX the coordinates of the corners of a rectangle parallel +to the string baseline that just encloses the string. The four +corners are in the order: lower left, upper left, upper right, +lower right (where left and right refer to the first and last +characters in the string). + +If the string is blank or contains no drawable characters, all +four elements of XBOX and YBOX are assigned the starting point +of the string, (X,Y). + +Arguments: + X, Y, ANGLE, FJUST, TEXT (input) : these arguments are the same as + the corrresponding arguments in PGPTXT. + XBOX, YBOX (output) : arrays of dimension 4; on output, they + contain the world coordinates of the bounding + box in (XBOX(1), YBOX(1)), ..., (XBOX(4), YBOX(4)). + + +------------------------------------------------------------------------ +Module: PGQVP -- inquire viewport size and position +------------------------------------------------------------------------ + + SUBROUTINE PGQVP (UNITS, X1, X2, Y1, Y2) + INTEGER UNITS + REAL X1, X2, Y1, Y2 + +Inquiry routine to determine the current viewport setting. +The values returned may be normalized device coordinates, inches, mm, +or pixels, depending on the value of the input parameter CFLAG. + +Arguments: + UNITS (input) : used to specify the units of the output parameters: + UNITS = 0 : normalized device coordinates + UNITS = 1 : inches + UNITS = 2 : millimeters + UNITS = 3 : pixels + Other values give an error message, and are + treated as 0. + X1 (output) : the x-coordinate of the bottom left corner of the + viewport. + X2 (output) : the x-coordinate of the top right corner of the + viewport. + Y1 (output) : the y-coordinate of the bottom left corner of the + viewport. + Y2 (output) : the y-coordinate of the top right corner of the + viewport. + + +------------------------------------------------------------------------ +Module: PGQVSZ -- inquire size of view surface +------------------------------------------------------------------------ + + SUBROUTINE PGQVSZ (UNITS, X1, X2, Y1, Y2) + INTEGER UNITS + REAL X1, X2, Y1, Y2 + +This routine returns the dimensions of the view surface (the maximum +plottable area) of the currently selected graphics device, in +a variety of units. The size of the view surface is device-dependent +and is established when the graphics device is opened. On some +devices, it can be changed by calling PGPAP before starting a new +page with PGPAGE. On some devices, the size can be changed (e.g., +by a workstation window manager) outside PGPLOT, and PGPLOT detects +the change when PGPAGE is used. Call this routine after PGPAGE to +find the current size. + +Note 1: the width and the height of the view surface in normalized +device coordinates are both always equal to 1.0. + +Note 2: when the device is divided into panels (see PGSUBP), the +view surface is a single panel. + +Arguments: + UNITS (input) : 0,1,2,3 for output in normalized device coords, + inches, mm, or device units (pixels) + X1 (output) : always returns 0.0 + X2 (output) : width of view surface + Y1 (output) : always returns 0.0 + Y2 (output) : height of view surface + + +------------------------------------------------------------------------ +Module: PGQWIN -- inquire window boundary coordinates +------------------------------------------------------------------------ + + SUBROUTINE PGQWIN (X1, X2, Y1, Y2) + REAL X1, X2, Y1, Y2 + +Inquiry routine to determine the current window setting. +The values returned are world coordinates. + +Arguments: + X1 (output) : the x-coordinate of the bottom left corner + of the window. + X2 (output) : the x-coordinate of the top right corner + of the window. + Y1 (output) : the y-coordinate of the bottom left corner + of the window. + Y2 (output) : the y-coordinate of the top right corner + of the window. + + +------------------------------------------------------------------------ +Module: PGRECT -- draw a rectangle, using fill-area attributes +------------------------------------------------------------------------ + + SUBROUTINE PGRECT (X1, X2, Y1, Y2) + REAL X1, X2, Y1, Y2 + +This routine can be used instead of PGPOLY for the special case of +drawing a rectangle aligned with the coordinate axes; only two +vertices need be specified instead of four. On most devices, it is +faster to use PGRECT than PGPOLY for drawing rectangles. The +rectangle has vertices at (X1,Y1), (X1,Y2), (X2,Y2), and (X2,Y1). + +Arguments: + X1, X2 (input) : the horizontal range of the rectangle. + Y1, Y2 (input) : the vertical range of the rectangle. + + +------------------------------------------------------------------------ +Module: PGRND -- find the smallest `round' number greater than x +------------------------------------------------------------------------ + + REAL FUNCTION PGRND (X, NSUB) + REAL X + INTEGER NSUB + +Routine to find the smallest "round" number larger than x, a +"round" number being 1, 2 or 5 times a power of 10. If X is negative, +PGRND(X) = -PGRND(ABS(X)). eg PGRND(8.7) = 10.0, +PGRND(-0.4) = -0.5. If X is zero, the value returned is zero. +This routine is used by PGBOX for choosing tick intervals. + +Returns: + PGRND : the "round" number. +Arguments: + X (input) : the number to be rounded. + NSUB (output) : a suitable number of subdivisions for + subdividing the "nice" number: 2 or 5. + + +------------------------------------------------------------------------ +Module: PGRNGE -- choose axis limits +------------------------------------------------------------------------ + + SUBROUTINE PGRNGE (X1, X2, XLO, XHI) + REAL X1, X2, XLO, XHI + +Choose plotting limits XLO and XHI which encompass the data +range X1 to X2. + +Arguments: + X1, X2 (input) : the data range (X1= X2). + + +------------------------------------------------------------------------ +Module: PGSAH -- set arrow-head style +------------------------------------------------------------------------ + + SUBROUTINE PGSAH (FS, ANGLE, BARB) + INTEGER FS + REAL ANGLE, BARB + +Set the style to be used for arrowheads drawn with routine PGARRO. + +Argument: + FS (input) : FS = 1 => filled; FS = 2 => outline. + Other values are treated as 2. Default 1. + ANGLE (input) : the acute angle of the arrow point, in degrees; + angles in the range 20.0 to 90.0 give reasonable + results. Default 45.0. + BARB (input) : the fraction of the triangular arrow-head that + is cut away from the back. 0.0 gives a triangular + wedge arrow-head; 1.0 gives an open >. Values 0.3 + to 0.7 give reasonable results. Default 0.3. + + +------------------------------------------------------------------------ +Module: PGSAVE -- save PGPLOT attributes +------------------------------------------------------------------------ + + SUBROUTINE PGSAVE + +This routine saves the current PGPLOT attributes in a private storage +area. They can be restored by calling PGUNSA (unsave). Attributes +saved are: character font, character height, color index, fill-area +style, line style, line width, pen position, arrow-head style, +hatching style, and clipping state. Color representation is not saved. + +Calls to PGSAVE and PGUNSA should always be paired. Up to 20 copies +of the attributes may be saved. PGUNSA always retrieves the last-saved +values (last-in first-out stack). + +Note that when multiple devices are in use, PGUNSA retrieves the +values saved by the last PGSAVE call, even if they were for a +different device. + +Arguments: none + + +------------------------------------------------------------------------ +Module: PGUNSA -- restore PGPLOT attributes +------------------------------------------------------------------------ + + ENTRY PGUNSA + +This routine restores the PGPLOT attributes saved in the last call to +PGSAVE. Usage: CALL PGUNSA (no arguments). See PGSAVE. + +Arguments: none + + +------------------------------------------------------------------------ +Module: PGSCF -- set character font +------------------------------------------------------------------------ + + SUBROUTINE PGSCF (FONT) + INTEGER FONT + +Set the Character Font for subsequent text plotting. Four different +fonts are available: + 1: (default) a simple single-stroke font ("normal" font) + 2: roman font + 3: italic font + 4: script font +This call determines which font is in effect at the beginning of +each text string. The font can be changed (temporarily) within a text +string by using the escape sequences \fn, \fr, \fi, and \fs for fonts +1, 2, 3, and 4, respectively. + +Argument: + FONT (input) : the font number to be used for subsequent text + plotting (in range 1-4). + + +------------------------------------------------------------------------ +Module: PGSCH -- set character height +------------------------------------------------------------------------ + + SUBROUTINE PGSCH (SIZE) + REAL SIZE + +Set the character size attribute. The size affects all text and graph +markers drawn later in the program. The default character size is +1.0, corresponding to a character height about 1/40 the height of +the view surface. Changing the character size also scales the length +of tick marks drawn by PGBOX and terminals drawn by PGERRX and PGERRY. + +Argument: + SIZE (input) : new character size (dimensionless multiple of + the default size). + + +------------------------------------------------------------------------ +Module: PGSCI -- set color index +------------------------------------------------------------------------ + + SUBROUTINE PGSCI (CI) + INTEGER CI + +Set the Color Index for subsequent plotting, if the output device +permits this. The default color index is 1, usually white on a black +background for video displays or black on a white background for +printer plots. The color index is an integer in the range 0 to a +device-dependent maximum. Color index 0 corresponds to the background +color; lines may be "erased" by overwriting them with color index 0 +(if the device permits this). + +If the requested color index is not available on the selected device, +color index 1 will be substituted. + +The assignment of colors to color indices can be changed with +subroutine PGSCR (set color representation). Color indices 0-15 +have predefined color representations (see the PGPLOT manual), but +these may be changed with PGSCR. Color indices above 15 have no +predefined representations: if these indices are used, PGSCR must +be called to define the representation. + +Argument: + CI (input) : the color index to be used for subsequent plotting + on the current device (in range 0-max). If the + index exceeds the device-dependent maximum, the + default color index (1) is used. + + +------------------------------------------------------------------------ +Module: PGSCIR -- set color index range +------------------------------------------------------------------------ + + SUBROUTINE PGSCIR(ICILO, ICIHI) + INTEGER ICILO, ICIHI + +Set the color index range to be used for producing images with +PGGRAY or PGIMAG. If the range is not all within the range supported +by the device, a smaller range will be used. The number of +different colors available for images is ICIHI-ICILO+1. + +Arguments: + ICILO (input) : the lowest color index to use for images + ICIHI (input) : the highest color index to use for images + + +------------------------------------------------------------------------ +Module: PGSCLP -- enable or disable clipping at edge of viewport +------------------------------------------------------------------------ + + SUBROUTINE PGSCLP(STATE) + INTEGER STATE + +Normally all PGPLOT primitives except text are ``clipped'' at the +edge of the viewport: parts of the primitives that lie outside +the viewport are not drawn. If clipping is disabled by calling this +routine, primitives are visible wherever they lie on the view +surface. The default (clipping enabled) is appropriate for almost +all applications. + +Argument: + STATE (input) : 0 to disable clipping, or 1 to enable clipping. + +25-Feb-1997 [TJP] - new routine. + + +------------------------------------------------------------------------ +Module: PGSCR -- set color representation +------------------------------------------------------------------------ + + SUBROUTINE PGSCR (CI, CR, CG, CB) + INTEGER CI + REAL CR, CG, CB + +Set color representation: i.e., define the color to be +associated with a color index. Ignored for devices which do not +support variable color or intensity. Color indices 0-15 +have predefined color representations (see the PGPLOT manual), but +these may be changed with PGSCR. Color indices 16-maximum have no +predefined representations: if these indices are used, PGSCR must +be called to define the representation. On monochrome output +devices (e.g. VT125 terminals with monochrome monitors), the +monochrome intensity is computed from the specified Red, Green, Blue +intensities as 0.30*R + 0.59*G + 0.11*B, as in US color television +systems, NTSC encoding. Note that most devices do not have an +infinite range of colors or monochrome intensities available; +the nearest available color is used. Examples: for black, +set CR=CG=CB=0.0; for white, set CR=CG=CB=1.0; for medium gray, +set CR=CG=CB=0.5; for medium yellow, set CR=CG=0.5, CB=0.0. + +Argument: + CI (input) : the color index to be defined, in the range 0-max. + If the color index greater than the device + maximum is specified, the call is ignored. Color + index 0 applies to the background color. + CR (input) : red, green, and blue intensities, + CG (input) in range 0.0 to 1.0. + CB (input) + + +------------------------------------------------------------------------ +Module: PGSCRL -- scroll window +------------------------------------------------------------------------ + + SUBROUTINE PGSCRL (DX, DY) + REAL DX, DY + +This routine moves the window in world-coordinate space while +leaving the viewport unchanged. On devices that have the +capability, the pixels within the viewport are scrolled +horizontally, vertically or both in such a way that graphics +previously drawn in the window are shifted so that their world +coordinates are unchanged. + +If the old window coordinate range was (X1, X2, Y1, Y2), the new +coordinate range will be approximately (X1+DX, X2+DX, Y1+DY, Y2+DY). +The size and scale of the window are unchanged. + +Thee window can only be shifted by a whole number of pixels +(device coordinates). If DX and DY do not correspond to integral +numbers of pixels, the shift will be slightly different from that +requested. The new window-coordinate range, and hence the exact +amount of the shift, can be determined by calling PGQWIN after this +routine. + +Pixels that are moved out of the viewport by this operation are +lost completely; they cannot be recovered by scrolling back. +Pixels that are ``scrolled into'' the viewport are filled with +the background color (color index 0). + +If the absolute value of DX is bigger than the width of the window, +or the aboslute value of DY is bigger than the height of the window, +the effect will be the same as zeroing all the pixels in the +viewport. + +Not all devices have the capability to support this routine. +It is only available on some interactive devices that have discrete +pixels. To determine whether the current device has scroll capability, +call PGQINF. + +Arguments: + DX (input) : distance (in world coordinates) to shift the + window horizontally (positive shifts window to the + right and scrolls to the left). + DY (input) : distance (in world coordinates) to shift the + window vertically (positive shifts window up and + scrolls down). + + +------------------------------------------------------------------------ +Module: PGSCRN -- set color representation by name +------------------------------------------------------------------------ + + SUBROUTINE PGSCRN(CI, NAME, IER) + INTEGER CI + CHARACTER*(*) NAME + INTEGER IER + +Set color representation: i.e., define the color to be +associated with a color index. Ignored for devices which do not +support variable color or intensity. This is an alternative to +routine PGSCR. The color representation is defined by name instead +of (R,G,B) components. + +Color names are defined in an external file which is read the first +time that PGSCRN is called. The name of the external file is +found as follows: +1. if environment variable (logical name) PGPLOT_RGB is defined, + its value is used as the file name; +2. otherwise, if environment variable PGPLOT_DIR is defined, a + file "rgb.txt" in the directory named by this environment + variable is used; +3. otherwise, file "rgb.txt" in the current directory is used. +If all of these fail to find a file, an error is reported and +the routine does nothing. + +Each line of the file +defines one color, with four blank- or tab-separated fields per +line. The first three fields are the R, G, B components, which +are integers in the range 0 (zero intensity) to 255 (maximum +intensity). The fourth field is the color name. The color name +may include embedded blanks. Example: + +255 0 0 red +255 105 180 hot pink +255 255 255 white + 0 0 0 black + +Arguments: + CI (input) : the color index to be defined, in the range 0-max. + If the color index greater than the device + maximum is specified, the call is ignored. Color + index 0 applies to the background color. + NAME (input) : the name of the color to be associated with + this color index. This name must be in the + external file. The names are not case-sensitive. + If the color is not listed in the file, the + color representation is not changed. + IER (output) : returns 0 if the routine was successful, 1 + if an error occurred (either the external file + could not be read, or the requested color was + not defined in the file). + + +------------------------------------------------------------------------ +Module: PGSFS -- set fill-area style +------------------------------------------------------------------------ + + SUBROUTINE PGSFS (FS) + INTEGER FS + +Set the Fill-Area Style attribute for subsequent area-fill by +PGPOLY, PGRECT, or PGCIRC. Four different styles are available: +solid (fill polygon with solid color of the current color-index), +outline (draw outline of polygon only, using current line attributes), +hatched (shade interior of polygon with parallel lines, using +current line attributes), or cross-hatched. The orientation and +spacing of hatch lines can be specified with routine PGSHS (set +hatch style). + +Argument: + FS (input) : the fill-area style to be used for subsequent + plotting: + FS = 1 => solid (default) + FS = 2 => outline + FS = 3 => hatched + FS = 4 => cross-hatched + Other values give an error message and are + treated as 2. + + +------------------------------------------------------------------------ +Module: PGSHLS -- set color representation using HLS system +------------------------------------------------------------------------ + + SUBROUTINE PGSHLS (CI, CH, CL, CS) + INTEGER CI + REAL CH, CL, CS + +Set color representation: i.e., define the color to be +associated with a color index. This routine is equivalent to +PGSCR, but the color is defined in the Hue-Lightness-Saturation +model instead of the Red-Green-Blue model. Hue is represented +by an angle in degrees, with red at 120, green at 240, +and blue at 0 (or 360). Lightness ranges from 0.0 to 1.0, with black +at lightness 0.0 and white at lightness 1.0. Saturation ranges from +0.0 (gray) to 1.0 (pure color). Hue is irrelevant when saturation +is 0.0. + +Examples: H L S R G B + black any 0.0 0.0 0.0 0.0 0.0 + white any 1.0 0.0 1.0 1.0 1.0 + medium gray any 0.5 0.0 0.5 0.5 0.5 + red 120 0.5 1.0 1.0 0.0 0.0 + yellow 180 0.5 1.0 1.0 1.0 0.0 + pink 120 0.7 0.8 0.94 0.46 0.46 + +Reference: SIGGRAPH Status Report of the Graphic Standards Planning +Committee, Computer Graphics, Vol.13, No.3, Association for +Computing Machinery, New York, NY, 1979. See also: J. D. Foley et al, +``Computer Graphics: Principles and Practice'', second edition, +Addison-Wesley, 1990, section 13.3.5. + +Argument: + CI (input) : the color index to be defined, in the range 0-max. + If the color index greater than the device + maximum is specified, the call is ignored. Color + index 0 applies to the background color. + CH (input) : hue, in range 0.0 to 360.0. + CL (input) : lightness, in range 0.0 to 1.0. + CS (input) : saturation, in range 0.0 to 1.0. + + +------------------------------------------------------------------------ +Module: PGSHS -- set hatching style +------------------------------------------------------------------------ + + SUBROUTINE PGSHS (ANGLE, SEPN, PHASE) + REAL ANGLE, SEPN, PHASE + +Set the style to be used for hatching (fill area with fill-style 3). +The default style is ANGLE=45.0, SEPN=1.0, PHASE=0.0. + +Arguments: + ANGLE (input) : the angle the hatch lines make with the + horizontal, in degrees, increasing + counterclockwise (this is an angle on the + view surface, not in world-coordinate space). + SEPN (input) : the spacing of the hatch lines. The unit spacing + is 1 percent of the smaller of the height or + width of the view surface. This should not be + zero. + PHASE (input) : a real number between 0 and 1; the hatch lines + are displaced by this fraction of SEPN from a + fixed reference. Adjacent regions hatched with the + same PHASE have contiguous hatch lines. To hatch + a region with alternating lines of two colors, + fill the area twice, with PHASE=0.0 for one color + and PHASE=0.5 for the other color. + + +------------------------------------------------------------------------ +Module: PGSITF -- set image transfer function +------------------------------------------------------------------------ + + SUBROUTINE PGSITF (ITF) + INTEGER ITF + +Set the Image Transfer Function for subsequent images drawn by +PGIMAG, PGGRAY, or PGWEDG. The Image Transfer Function is used +to map array values into the available range of color indices +specified with routine PGSCIR or (for PGGRAY on some devices) +into dot density. + +Argument: + ITF (input) : type of transfer function: + ITF = 0 : linear + ITF = 1 : logarithmic + ITF = 2 : square-root + + +------------------------------------------------------------------------ +Module: PGSLCT -- select an open graphics device +------------------------------------------------------------------------ + + SUBROUTINE PGSLCT(ID) + INTEGER ID + +Select one of the open graphics devices and direct subsequent +plotting to it. The argument is the device identifier returned by +PGOPEN when the device was opened. If the supplied argument is not a +valid identifier of an open graphics device, a warning message is +issued and the current selection is unchanged. + +[This routine was added to PGPLOT in Version 5.1.0.] + +Arguments: + +ID (input, integer): identifier of the device to be selected. + + +------------------------------------------------------------------------ +Module: PGSLS -- set line style +------------------------------------------------------------------------ + + SUBROUTINE PGSLS (LS) + INTEGER LS + +Set the line style attribute for subsequent plotting. This +attribute affects line primitives only; it does not affect graph +markers, text, or area fill. +Five different line styles are available, with the following codes: +1 (full line), 2 (dashed), 3 (dot-dash-dot-dash), 4 (dotted), +5 (dash-dot-dot-dot). The default is 1 (normal full line). + +Argument: + LS (input) : the line-style code for subsequent plotting + (in range 1-5). + + +------------------------------------------------------------------------ +Module: PGSLW -- set line width +------------------------------------------------------------------------ + + SUBROUTINE PGSLW (LW) + INTEGER LW + +Set the line-width attribute. This attribute affects lines, graph +markers, and text. The line width is specified in units of 1/200 +(0.005) inch (about 0.13 mm) and must be an integer in the range +1-201. On some devices, thick lines are generated by tracing each +line with multiple strokes offset in the direction perpendicular to +the line. + +Argument: + LW (input) : width of line, in units of 0.005 inch (0.13 mm) + in range 1-201. + + +------------------------------------------------------------------------ +Module: PGSTBG -- set text background color index +------------------------------------------------------------------------ + + SUBROUTINE PGSTBG (TBCI) + INTEGER TBCI + +Set the Text Background Color Index for subsequent text. By default +text does not obscure underlying graphics. If the text background +color index is positive, however, text is opaque: the bounding box +of the text is filled with the color specified by PGSTBG before +drawing the text characters in the current color index set by PGSCI. +Use color index 0 to erase underlying graphics before drawing text. + +Argument: + TBCI (input) : the color index to be used for the background + for subsequent text plotting: + TBCI < 0 => transparent (default) + TBCI >= 0 => text will be drawn on an opaque + background with color index TBCI. + + +------------------------------------------------------------------------ +Module: PGSUBP -- subdivide view surface into panels +------------------------------------------------------------------------ + + SUBROUTINE PGSUBP (NXSUB, NYSUB) + INTEGER NXSUB, NYSUB + +PGPLOT divides the physical surface of the plotting device (screen, +window, or sheet of paper) into NXSUB x NYSUB `panels'. When the +view surface is sub-divided in this way, PGPAGE moves to the next +panel, not the next physical page. The initial subdivision of the +view surface is set in the call to PGBEG. When PGSUBP is called, +it forces the next call to PGPAGE to start a new physical page, +subdivided in the manner indicated. No plotting should be done +between a call of PGSUBP and a call of PGPAGE (or PGENV, which calls +PGPAGE). + +If NXSUB > 0, PGPLOT uses the panels in row order; if <0, +PGPLOT uses them in column order, e.g., + + NXSUB=3, NYSUB=2 NXSUB=-3, NYSUB=2 + ++-----+-----+-----+ +-----+-----+-----+ +| 1 | 2 | 3 | | 1 | 3 | 5 | ++-----+-----+-----+ +-----+-----+-----+ +| 4 | 5 | 6 | | 2 | 4 | 6 | ++-----+-----+-----+ +-----+-----+-----+ + +PGPLOT advances from one panels to the next when PGPAGE is called, +clearing the screen or starting a new page when the last panel has +been used. It is also possible to jump from one panel to another +in random order by calling PGPANL. + +Arguments: + NXSUB (input) : the number of subdivisions of the view surface in + X (>0 or <0). + NYSUB (input) : the number of subdivisions of the view surface in + Y (>0). + + +------------------------------------------------------------------------ +Module: PGSVP -- set viewport (normalized device coordinates) +------------------------------------------------------------------------ + + SUBROUTINE PGSVP (XLEFT, XRIGHT, YBOT, YTOP) + REAL XLEFT, XRIGHT, YBOT, YTOP + +Change the size and position of the viewport, specifying +the viewport in normalized device coordinates. Normalized +device coordinates run from 0 to 1 in each dimension. The +viewport is the rectangle on the view surface "through" +which one views the graph. All the PG routines which plot lines +etc. plot them within the viewport, and lines are truncated at +the edge of the viewport (except for axes, labels etc drawn with +PGBOX or PGLAB). The region of world space (the coordinate +space of the graph) which is visible through the viewport is +specified by a call to PGSWIN. It is legal to request a +viewport larger than the view surface; only the part which +appears on the view surface will be plotted. + +Arguments: + XLEFT (input) : x-coordinate of left hand edge of viewport, in NDC. + XRIGHT (input) : x-coordinate of right hand edge of viewport, + in NDC. + YBOT (input) : y-coordinate of bottom edge of viewport, in NDC. + YTOP (input) : y-coordinate of top edge of viewport, in NDC. + + +------------------------------------------------------------------------ +Module: PGSWIN -- set window +------------------------------------------------------------------------ + + SUBROUTINE PGSWIN (X1, X2, Y1, Y2) + REAL X1, X2, Y1, Y2 + +Change the window in world coordinate space that is to be mapped on +to the viewport. Usually PGSWIN is called automatically by PGENV, +but it may be called directly by the user. + +Arguments: + X1 (input) : the x-coordinate of the bottom left corner + of the viewport. + X2 (input) : the x-coordinate of the top right corner + of the viewport (note X2 may be less than X1). + Y1 (input) : the y-coordinate of the bottom left corner + of the viewport. + Y2 (input) : the y-coordinate of the top right corner + of the viewport (note Y2 may be less than Y1). + + +------------------------------------------------------------------------ +Module: PGTBOX -- draw frame and write (DD) HH MM SS.S labelling +------------------------------------------------------------------------ + + SUBROUTINE PGTBOX (XOPT, XTICK, NXSUB, YOPT, YTICK, NYSUB) + + REAL XTICK, YTICK + INTEGER NXSUB, NYSUB + CHARACTER XOPT*(*), YOPT*(*) + +Draw a box and optionally label one or both axes with (DD) HH MM SS +style numeric labels (useful for time or RA - DEC plots). If this +style of labelling is desired, then PGSWIN should have been called +previously with the extrema in SECONDS of time. + +In the seconds field, you can have at most 3 places after the decimal +point, so that 1 ms is the smallest time interval you can time label. + +Large numbers are coped with by fields of 6 characters long. Thus +you could have times with days or hours as big as 999999. However, +in practice, you might have trouble with labels overwriting themselves +with such large numbers unless you a) use a small time INTERVAL, +b) use a small character size or c) choose your own sparse ticks in +the call to PGTBOX. + +PGTBOX will attempt, when choosing its own ticks, not to overwrite +the labels, but this algorithm is not very bright and may fail. + +Note that small intervals but large absolute times such as +TMIN = 200000.0 s and TMAX=200000.1 s will cause the algorithm +to fail. This is inherent in PGPLOT's use of single precision +and cannot be avoided. In such cases, you should use relative +times if possible. + +PGTBOX's labelling philosophy is that the left-most or bottom tick of +the axis contains a full label. Thereafter, only changing fields are +labelled. Negative fields are given a '-' label, positive fields +have none. Axes that have the DD (or HH if the day field is not +used) field on each major tick carry the sign on each field. If the +axis crosses zero, the zero tick will carry a full label and sign. + +This labelling style can cause a little confusion with some special +cases, but as long as you know its philosophy, the truth can be divined. +Consider an axis with TMIN=20s, TMAX=-20s. The labels will look like + + +----------+----------+----------+----------+ + 0h0m20s 10s -0h0m0s 10s 20s + +Knowing that the left field always has a full label and that +positive fields are unsigned, informs that time is decreasing +from left to right, not vice versa. This can become very +unclear if you have used the 'F' option, but that is your problem ! + +Exceptions to this labelling philosophy are when the finest time +increment being displayed is hours (with option 'Y') or days. +Then all fields carry a label. For example, + + +----------+----------+----------+----------+ + -10h -8h -6h -4h -2h + + +PGTBOX can be used in place of PGBOX; it calls PGBOX and only invokes +time labelling if requested. Other options are passed intact to PGBOX. + +Inputs: + XOPT : X-options for PGTBOX. Same as for PGBOX plus + + 'Z' for (DD) HH MM SS.S time labelling + 'Y' means don't include the day field so that labels + are HH MM SS.S rather than DD HH MM SS.S The hours + will accumulate beyond 24 if necessary in this case. + 'X' label the HH field as modulo 24. Thus, a label + such as 25h 10m would come out as 1h 10m + 'H' means superscript numbers with d, h, m, & s symbols + 'D' means superscript numbers with o, ', & '' symbols + 'F' causes the first label (left- or bottom-most) to + be omitted. Useful for sub-panels that abut each other. + Care is needed because first label carries sign as well. + 'O' means omit leading zeros in numbers < 10 + E.g. 3h 3m 1.2s rather than 03h 03m 01.2s Useful + to help save space on X-axes. The day field does not + use this facility. + + YOPT : Y-options for PGTBOX. See above. + XTICK : X-axis major tick increment. 0.0 for default. + YTICK : Y-axis major tick increment. 0.0 for default. + If the 'Z' option is used then XTICK and/or YTICK must + be in seconds. + NXSUB : Number of intervals for minor ticks on X-axis. 0 for default + NYSUB : Number of intervals for minor ticks on Y-axis. 0 for default + + The regular XOPT and YOPT axis options for PGBOX are + + A : draw Axis (X axis is horizontal line Y=0, Y axis is vertical + line X=0). + B : draw bottom (X) or left (Y) edge of frame. + C : draw top (X) or right (Y) edge of frame. + G : draw Grid of vertical (X) or horizontal (Y) lines. + I : Invert the tick marks; ie draw them outside the viewport + instead of inside. + L : label axis Logarithmically (see below). + N : write Numeric labels in the conventional location below the + viewport (X) or to the left of the viewport (Y). + P : extend ("Project") major tick marks outside the box (ignored if + option I is specified). + M : write numeric labels in the unconventional location above the + viewport (X) or to the right of the viewport (Y). + T : draw major Tick marks at the major coordinate interval. + S : draw minor tick marks (Subticks). + V : orient numeric labels Vertically. This is only applicable to Y. + The default is to write Y-labels parallel to the axis. + 1 : force decimal labelling, instead of automatic choice (see PGNUMB). + 2 : force exponential labelling, instead of automatic. + + The default is to write Y-labels parallel to the axis + + + ****************** EXCEPTIONS ******************* + + Note that + 1) PGBOX option 'L' (log labels) is ignored with option 'Z' + 2) The 'O' option will be ignored for the 'V' option as it + makes it impossible to align the labels nicely + 3) Option 'Y' is forced with option 'D' + + *************************************************************** + + + + +------------------------------------------------------------------------ +Module: PGTEXT -- write text (horizontal, left-justified) +------------------------------------------------------------------------ + + SUBROUTINE PGTEXT (X, Y, TEXT) + REAL X, Y + CHARACTER*(*) TEXT + +Write text. The bottom left corner of the first character is placed +at the specified position, and the text is written horizontally. +This is a simplified interface to the primitive routine PGPTXT. +For non-horizontal text, use PGPTXT. + +Arguments: + X (input) : world x-coordinate of start of string. + Y (input) : world y-coordinate of start of string. + TEXT (input) : the character string to be plotted. + + +------------------------------------------------------------------------ +Module: PGTICK -- draw a single tick mark on an axis +------------------------------------------------------------------------ + + SUBROUTINE PGTICK (X1, Y1, X2, Y2, V, TIKL, TIKR, DISP, + : ORIENT, STR) + REAL X1, Y1, X2, Y2, V, TIKL, TIKR, DISP, ORIENT + CHARACTER*(*) STR + +Draw and label single tick mark on a graph axis. The tick mark is +a short line perpendicular to the direction of the axis (which is not +drawn by this routine). The optional text label is drawn with its +baseline parallel to the axis and reading in the same direction as +the axis (from point 1 to point 2). Current line and text attributes +are used. + +Arguments: + X1, Y1 (input) : world coordinates of one endpoint of the axis. + X2, Y2 (input) : world coordinates of the other endpoint of the axis. + V (input) : draw the tick mark at fraction V (0<=V<=1) along + the line from (X1,Y1) to (X2,Y2). + TIKL (input) : length of tick mark drawn to left of axis + (as seen looking from first endpoint to second), in + units of the character height. + TIKR (input) : length of major tick marks drawn to right of axis, + in units of the character height. + DISP (input) : displacement of label text to + right of axis, in units of the character height. + ORIENT (input) : orientation of label text, in degrees; angle between + baseline of text and direction of axis (0-360°). + STR (input) : text of label (may be blank). + + +------------------------------------------------------------------------ +Module: PGUPDT -- update display +------------------------------------------------------------------------ + + SUBROUTINE PGUPDT + +Update the graphics display: flush any pending commands to the +output device. This routine empties the buffer created by PGBBUF, +but it does not alter the PGBBUF/PGEBUF counter. The routine should +be called when it is essential that the display be completely up to +date (before interaction with the user, for example) but it is not +known if output is being buffered. + +Arguments: none + + +------------------------------------------------------------------------ +Module: PGVECT -- vector map of a 2D data array, with blanking +------------------------------------------------------------------------ + + SUBROUTINE PGVECT (A, B, IDIM, JDIM, I1, I2, J1, J2, C, NC, TR, + 1 BLANK) + INTEGER IDIM, JDIM, I1, I2, J1, J2, NC + REAL A(IDIM,JDIM), B(IDIM, JDIM), TR(6), BLANK, C + +Draw a vector map of two arrays. This routine is similar to +PGCONB in that array elements that have the "magic value" defined by +the argument BLANK are ignored, making gaps in the vector map. The +routine may be useful for data measured on most but not all of the +points of a grid. Vectors are displayed as arrows; the style of the +arrowhead can be set with routine PGSAH, and the the size of the +arrowhead is determined by the current character size, set by PGSCH. + +Arguments: + A (input) : horizontal component data array. + B (input) : vertical component data array. + IDIM (input) : first dimension of A and B. + JDIM (input) : second dimension of A and B. + I1,I2 (input) : range of first index to be mapped (inclusive). + J1,J2 (input) : range of second index to be mapped (inclusive). + C (input) : scale factor for vector lengths, if 0.0, C will be + set so that the longest vector is equal to the + smaller of TR(2)+TR(3) and TR(5)+TR(6). + NC (input) : vector positioning code. + <0 vector head positioned on coordinates + >0 vector base positioned on coordinates + =0 vector centered on the coordinates + TR (input) : array defining a transformation between the I,J + grid of the array and the world coordinates. The + world coordinates of the array point A(I,J) are + given by: + X = TR(1) + TR(2)*I + TR(3)*J + Y = TR(4) + TR(5)*I + TR(6)*J + Usually TR(3) and TR(5) are zero - unless the + coordinate transformation involves a rotation + or shear. + BLANK (input) : elements of arrays A or B that are exactly equal to + this value are ignored (blanked). + + +------------------------------------------------------------------------ +Module: PGVSIZ -- set viewport (inches) +------------------------------------------------------------------------ + + SUBROUTINE PGVSIZ (XLEFT, XRIGHT, YBOT, YTOP) + REAL XLEFT, XRIGHT, YBOT, YTOP + +Change the size and position of the viewport, specifying +the viewport in physical device coordinates (inches). The +viewport is the rectangle on the view surface "through" +which one views the graph. All the PG routines which plot lines +etc. plot them within the viewport, and lines are truncated at +the edge of the viewport (except for axes, labels etc drawn with +PGBOX or PGLAB). The region of world space (the coordinate +space of the graph) which is visible through the viewport is +specified by a call to PGSWIN. It is legal to request a +viewport larger than the view surface; only the part which +appears on the view surface will be plotted. + +Arguments: + XLEFT (input) : x-coordinate of left hand edge of viewport, in + inches from left edge of view surface. + XRIGHT (input) : x-coordinate of right hand edge of viewport, in + inches from left edge of view surface. + YBOT (input) : y-coordinate of bottom edge of viewport, in + inches from bottom of view surface. + YTOP (input) : y-coordinate of top edge of viewport, in inches + from bottom of view surface. + + +------------------------------------------------------------------------ +Module: PGVSTD -- set standard (default) viewport +------------------------------------------------------------------------ + + SUBROUTINE PGVSTD + +Define the viewport to be the standard viewport. The standard +viewport is the full area of the view surface (or panel), +less a margin of 4 character heights all round for labelling. +It thus depends on the current character size, set by PGSCH. + +Arguments: none. + + +------------------------------------------------------------------------ +Module: PGWEDG -- annotate an image plot with a wedge +------------------------------------------------------------------------ + + SUBROUTINE PGWEDG(SIDE, DISP, WIDTH, FG, BG, LABEL) + CHARACTER *(*) SIDE,LABEL + REAL DISP, WIDTH, FG, BG + +Plot an annotated grey-scale or color wedge parallel to a given axis +of the the current viewport. This routine is designed to provide a +brightness/color scale for an image drawn with PGIMAG or PGGRAY. +The wedge will be drawn with the transfer function set by PGSITF +and using the color index range set by PGSCIR. + +Arguments: + SIDE (input) : The first character must be one of the characters + 'B', 'L', 'T', or 'R' signifying the Bottom, Left, + Top, or Right edge of the viewport. + The second character should be 'I' to use PGIMAG + to draw the wedge, or 'G' to use PGGRAY. + DISP (input) : the displacement of the wedge from the specified + edge of the viewport, measured outwards from the + viewport in units of the character height. Use a + negative value to write inside the viewport, a + positive value to write outside. + WIDTH (input) : The total width of the wedge including annotation, + in units of the character height. + FG (input) : The value which is to appear with shade + 1 ("foreground"). Use the values of FG and BG + that were supplied to PGGRAY or PGIMAG. + BG (input) : the value which is to appear with shade + 0 ("background"). + LABEL (input) : Optional units label. If no label is required + use ' '. + + +------------------------------------------------------------------------ +Module: PGWNAD -- set window and adjust viewport to same aspect ratio +------------------------------------------------------------------------ + + SUBROUTINE PGWNAD (X1, X2, Y1, Y2) + REAL X1, X2, Y1, Y2 + +Change the window in world coordinate space that is to be mapped on +to the viewport, and simultaneously adjust the viewport so that the +world-coordinate scales are equal in x and y. The new viewport is +the largest one that can fit within the previously set viewport +while retaining the required aspect ratio. + +Arguments: + X1 (input) : the x-coordinate of the bottom left corner + of the viewport. + X2 (input) : the x-coordinate of the top right corner + of the viewport (note X2 may be less than X1). + Y1 (input) : the y-coordinate of the bottom left corner + of the viewport. + Y2 (input) : the y-coordinate of the top right corner of the + viewport (note Y2 may be less than Y1). + + +------------------------------------------------------------------------ +Module: PGADVANCE -- non-standard alias for PGPAGE +------------------------------------------------------------------------ + + SUBROUTINE PGADVANCE + +See description of PGPAGE. + + +------------------------------------------------------------------------ +Module: PGBEGIN -- non-standard alias for PGBEG +------------------------------------------------------------------------ + + INTEGER FUNCTION PGBEGIN (UNIT, FILE, NXSUB, NYSUB) + INTEGER UNIT + CHARACTER*(*) FILE + INTEGER NXSUB, NYSUB + +See description of PGBEG. + + +------------------------------------------------------------------------ +Module: PGCURSE -- non-standard alias for PGCURS +------------------------------------------------------------------------ + + INTEGER FUNCTION PGCURSE (X, Y, CH) + REAL X, Y + CHARACTER*1 CH + +See description of PGCURS. + + +------------------------------------------------------------------------ +Module: PGLABEL -- non-standard alias for PGLAB +------------------------------------------------------------------------ + + SUBROUTINE PGLABEL (XLBL, YLBL, TOPLBL) + CHARACTER*(*) XLBL, YLBL, TOPLBL + +See description of PGLAB. + + +------------------------------------------------------------------------ +Module: PGMTEXT -- non-standard alias for PGMTXT +------------------------------------------------------------------------ + + SUBROUTINE PGMTEXT (SIDE, DISP, COORD, FJUST, TEXT) + CHARACTER*(*) SIDE, TEXT + REAL DISP, COORD, FJUST + +See description of PGMTXT. + + +------------------------------------------------------------------------ +Module: PGNCURSE -- non-standard alias for PGNCUR +------------------------------------------------------------------------ + + SUBROUTINE PGNCURSE (MAXPT, NPT, X, Y, SYMBOL) + INTEGER MAXPT, NPT + REAL X(*), Y(*) + INTEGER SYMBOL + +See description of PGNCUR. + + +------------------------------------------------------------------------ +Module: PGPAPER -- non-standard alias for PGPAP +------------------------------------------------------------------------ + + SUBROUTINE PGPAPER (WIDTH, ASPECT) + REAL WIDTH, ASPECT + +See description of PGPAP. + + +------------------------------------------------------------------------ +Module: PGPOINT -- non-standard alias for PGPT +------------------------------------------------------------------------ + + SUBROUTINE PGPOINT (N, XPTS, YPTS, SYMBOL) + INTEGER N + REAL XPTS(*), YPTS(*) + INTEGER SYMBOL + +See description of PGPT. + + +------------------------------------------------------------------------ +Module: PGPTEXT -- non-standard alias for PGPTXT +------------------------------------------------------------------------ + + SUBROUTINE PGPTEXT (X, Y, ANGLE, FJUST, TEXT) + REAL X, Y, ANGLE, FJUST + CHARACTER*(*) TEXT + +See description of PGPTXT. + + +------------------------------------------------------------------------ +Module: PGVPORT -- non-standard alias for PGSVP +------------------------------------------------------------------------ + + SUBROUTINE PGVPORT (XLEFT, XRIGHT, YBOT, YTOP) + REAL XLEFT, XRIGHT, YBOT, YTOP + +See description of PGSVP. + + +------------------------------------------------------------------------ +Module: PGVSIZE -- non-standard alias for PGVSIZ +------------------------------------------------------------------------ + + SUBROUTINE PGVSIZE (XLEFT, XRIGHT, YBOT, YTOP) + REAL XLEFT, XRIGHT, YBOT, YTOP + +See description of PGVSIZ. + + +------------------------------------------------------------------------ +Module: PGVSTAND -- non-standard alias for PGVSTD +------------------------------------------------------------------------ + + SUBROUTINE PGVSTAND + +See description of PGVSTD. + + +------------------------------------------------------------------------ +Module: PGWINDOW -- non-standard alias for PGSWIN +------------------------------------------------------------------------ + + SUBROUTINE PGWINDOW (X1, X2, Y1, Y2) + REAL X1, X2, Y1, Y2 + +See description of PGSWIN. diff --git a/pgplot_rhel8/pgplot.inc b/pgplot_rhel8/pgplot.inc new file mode 100644 index 0000000..e15f308 --- /dev/null +++ b/pgplot_rhel8/pgplot.inc @@ -0,0 +1,135 @@ +C----------------------------------------------------------------------- +C PGPLOT: common block definition. +C----------------------------------------------------------------------- +C Maximum number of concurrent devices (should match GRIMAX). +C----------------------------------------------------------------------- + INTEGER PGMAXD + PARAMETER (PGMAXD=8) +C----------------------------------------------------------------------- +C Indentifier of currently selected device. +C----------------------------------------------------------------------- + INTEGER PGID +C----------------------------------------------------------------------- +C Device status (indexed by device identifier). +C----------------------------------------------------------------------- +C PGDEVS =0 if device is not open; 1 if device is open. +C PGADVS Set to 0 by PGBEGIN, set to 1 by PGPAGE; used to suppress +C the prompt for the first page. +C PROMPT If .TRUE., ask user before clearing page; set by PGASK +C and (indirectly) by PGBEGIN, used in PGENV. +C PGBLEV Buffering level: incremented by PGBBUF, decremented by +C PGEBUF. +C PGPFIX TRUE if PGPAP has been called, FALSE otherwise. +C + INTEGER PGDEVS(PGMAXD), PGADVS(PGMAXD), PGBLEV(PGMAXD) + LOGICAL PGPRMP(PGMAXD), PGPFIX(PGMAXD) +C----------------------------------------------------------------------- +C Panel parameters (indexed by device identification). +C----------------------------------------------------------------------- +C NX Number of panels in x direction +C NY Number of panels in y direction +C NXC Ordinal number of current X panel +C NYC Ordinal number of current Y panel +C XSZ X dimension of panel (device units) +C YSZ Y dimension of panel (device units) +C PGROWS TRUE if panels are used in row order, FALSE for column +C order. +C + INTEGER PGNX (PGMAXD), PGNY (PGMAXD) + INTEGER PGNXC (PGMAXD), PGNYC (PGMAXD) + REAL PGXSZ (PGMAXD), PGYSZ (PGMAXD) + LOGICAL PGROWS(PGMAXD) +C----------------------------------------------------------------------- +C Attributes (indexed by device identification). +C----------------------------------------------------------------------- +C PGCLP clipping enabled/disabed +C PGFAS fill-area style +C PGCHSZ character height +C PGAHS arrow-head fill style +C PGAHA arrow-head angle +C PGAHV arrow-head vent +C PGTBCI text background color index +C PGMNCI lower range of color indices available to PGGRAY/PGIMAG +C PGMXCI upper range of color indices available to PGGRAY/PGIMAG +C PGITF type of transfer function used by PGGRAY/PGIMAG +C PGHSA hatching line angle +C PGHSS hatching line separation +C PGHSP hatching line phase +C + INTEGER PGCLP (PGMAXD) + INTEGER PGFAS (PGMAXD) + REAL PGCHSZ(PGMAXD) + INTEGER PGAHS (PGMAXD) + REAL PGAHA (PGMAXD) + REAL PGAHV (PGMAXD) + INTEGER PGTBCI(PGMAXD) + INTEGER PGMNCI(PGMAXD) + INTEGER PGMXCI(PGMAXD) + INTEGER PGITF (PGMAXD) + REAL PGHSA (PGMAXD) + REAL PGHSS (PGMAXD) + REAL PGHSP (PGMAXD) +C----------------------------------------------------------------------- +C Viewport parameters (indexed by device identification); all are device +C coordinates: +C----------------------------------------------------------------------- +C PGXOFF X coordinate of blc of viewport. +C PGYOFF Y coordinate of blc of viewport. +C PGXVP X coordinate of blc of viewport, relative to blc of subpage. +C PGYVP Y coordinate of blc of viewport, relative to blc of subpage. +C PGXLEN Width of viewport. +C PGYLEN Height of viewport. +C + REAL PGXOFF(PGMAXD), PGYOFF(PGMAXD) + REAL PGXVP (PGMAXD), PGYVP (PGMAXD) + REAL PGXLEN(PGMAXD), PGYLEN(PGMAXD) +C----------------------------------------------------------------------- +C Scaling parameters (indexed by device identification): +C----------------------------------------------------------------------- +C PGXORG device coordinate value corresponding to world X=0 +C PGYORG device coordinate value corresponding to world Y=0 +C PGXSCL scale in x (device units per world coordinate unit) +C PGYSCL scale in y (device units per world coordinate unit) +C PGXPIN device x scale in device units/inch +C PGYPIN device y scale in device units/inch +C PGXSP Character X spacing (device units) +C PGYSP Character Y spacing (device units) +C + REAL PGXORG(PGMAXD), PGYORG(PGMAXD) + REAL PGXSCL(PGMAXD), PGYSCL(PGMAXD) + REAL PGXPIN(PGMAXD), PGYPIN(PGMAXD) + REAL PGXSP (PGMAXD), PGYSP (PGMAXD) +C----------------------------------------------------------------------- +C Window parameters (indexed by device identification); all are world +C coordinate values: +C----------------------------------------------------------------------- +C PGXBLC world X at bottom left corner of window +C PGXTRC world X at top right corner of window +C PGYBLC world Y at bottom left corner of window +C PGYTRC world Y at top right corner of window +C + REAL PGXBLC(PGMAXD), PGXTRC(PGMAXD) + REAL PGYBLC(PGMAXD), PGYTRC(PGMAXD) +C----------------------------------------------------------------------- +C The following parameters are used in the contouring routines to pass +C information to the action routine. They do not need to be indexed. +C----------------------------------------------------------------------- +C TRANS Transformation matrix for contour plots; copied +C from argument list by PGCONT and used by PGCP. +C + INTEGER PGCINT, PGCMIN + REAL TRANS(6) + CHARACTER*32 PGCLAB +C----------------------------------------------------------------------- +C----------------------------------------------------------------------- + COMMON /PGPLT1/ PGID,PGDEVS,PGADVS,PGNX, PGNY, PGNXC, PGNYC , + 1 PGXPIN,PGYPIN,PGXSP, PGYSP, PGXSZ, PGYSZ, + 2 PGXOFF,PGYOFF,PGXVP, PGYVP, PGXLEN,PGYLEN,PGXORG,PGYORG, + 3 PGXSCL,PGYSCL,PGXBLC,PGXTRC,PGYBLC,PGYTRC,TRANS, + 4 PGPRMP,PGCLP, PGFAS, PGCHSZ,PGBLEV,PGROWS, + 5 PGAHS, PGAHA, PGAHV, PGTBCI,PGMNCI,PGMXCI,PGCINT,PGCMIN, + 6 PGPFIX,PGITF, PGHSA, PGHSS, PGHSP + COMMON /PGPLT2/ PGCLAB + SAVE /PGPLT1/ + SAVE /PGPLT2/ +C----------------------------------------------------------------------- diff --git a/pgplot_rhel8/pgxwin_server b/pgplot_rhel8/pgxwin_server new file mode 100755 index 0000000..892bc33 Binary files /dev/null and b/pgplot_rhel8/pgxwin_server differ diff --git a/pgplot_rhel8/rgb.txt b/pgplot_rhel8/rgb.txt new file mode 100644 index 0000000..e5f6188 --- /dev/null +++ b/pgplot_rhel8/rgb.txt @@ -0,0 +1,738 @@ +255 250 250 snow +248 248 255 ghost white +248 248 255 GhostWhite +245 245 245 white smoke +245 245 245 WhiteSmoke +220 220 220 gainsboro +255 250 240 floral white +255 250 240 FloralWhite +253 245 230 old lace +253 245 230 OldLace +250 240 230 linen +250 235 215 antique white +250 235 215 AntiqueWhite +255 239 213 papaya whip +255 239 213 PapayaWhip +255 235 205 blanched almond +255 235 205 BlanchedAlmond +255 228 196 bisque +255 218 185 peach puff +255 218 185 PeachPuff +255 222 173 navajo white +255 222 173 NavajoWhite +255 228 181 moccasin +255 248 220 cornsilk +255 255 240 ivory +255 250 205 lemon chiffon +255 250 205 LemonChiffon +255 245 238 seashell +240 255 240 honeydew +245 255 250 mint cream +245 255 250 MintCream +240 255 255 azure +240 248 255 alice blue +240 248 255 AliceBlue +230 230 250 lavender +255 240 245 lavender blush +255 240 245 LavenderBlush +255 228 225 misty rose +255 228 225 MistyRose +255 255 255 white + 0 0 0 black + 47 79 79 dark slate gray + 47 79 79 DarkSlateGray + 47 79 79 dark slate grey + 47 79 79 DarkSlateGrey +105 105 105 dim gray +105 105 105 DimGray +105 105 105 dim grey +105 105 105 DimGrey +112 128 144 slate gray +112 128 144 SlateGray +112 128 144 slate grey +112 128 144 SlateGrey +119 136 153 light slate gray +119 136 153 LightSlateGray +119 136 153 light slate grey +119 136 153 LightSlateGrey +190 190 190 gray +190 190 190 grey +211 211 211 light grey +211 211 211 LightGrey +211 211 211 light gray +211 211 211 LightGray + 25 25 112 midnight blue + 25 25 112 MidnightBlue + 0 0 128 navy + 0 0 128 navy blue + 0 0 128 NavyBlue +100 149 237 cornflower blue +100 149 237 CornflowerBlue + 72 61 139 dark slate blue + 72 61 139 DarkSlateBlue +106 90 205 slate blue +106 90 205 SlateBlue +123 104 238 medium slate blue +123 104 238 MediumSlateBlue +132 112 255 light slate blue +132 112 255 LightSlateBlue + 0 0 205 medium blue + 0 0 205 MediumBlue + 65 105 225 royal blue + 65 105 225 RoyalBlue + 0 0 255 blue + 30 144 255 dodger blue + 30 144 255 DodgerBlue + 0 191 255 deep sky blue + 0 191 255 DeepSkyBlue +135 206 235 sky blue +135 206 235 SkyBlue +135 206 250 light sky blue +135 206 250 LightSkyBlue + 70 130 180 steel blue + 70 130 180 SteelBlue +176 196 222 light steel blue +176 196 222 LightSteelBlue +173 216 230 light blue +173 216 230 LightBlue +176 224 230 powder blue +176 224 230 PowderBlue +175 238 238 pale turquoise +175 238 238 PaleTurquoise + 0 206 209 dark turquoise + 0 206 209 DarkTurquoise + 72 209 204 medium turquoise + 72 209 204 MediumTurquoise + 64 224 208 turquoise + 0 255 255 cyan +224 255 255 light cyan +224 255 255 LightCyan + 95 158 160 cadet blue + 95 158 160 CadetBlue +102 205 170 medium aquamarine +102 205 170 MediumAquamarine +127 255 212 aquamarine + 0 100 0 dark green + 0 100 0 DarkGreen + 85 107 47 dark olive green + 85 107 47 DarkOliveGreen +143 188 143 dark sea green +143 188 143 DarkSeaGreen + 46 139 87 sea green + 46 139 87 SeaGreen + 60 179 113 medium sea green + 60 179 113 MediumSeaGreen + 32 178 170 light sea green + 32 178 170 LightSeaGreen +152 251 152 pale green +152 251 152 PaleGreen + 0 255 127 spring green + 0 255 127 SpringGreen +124 252 0 lawn green +124 252 0 LawnGreen + 0 255 0 green +127 255 0 chartreuse + 0 250 154 medium spring green + 0 250 154 MediumSpringGreen +173 255 47 green yellow +173 255 47 GreenYellow + 50 205 50 lime green + 50 205 50 LimeGreen +154 205 50 yellow green +154 205 50 YellowGreen + 34 139 34 forest green + 34 139 34 ForestGreen +107 142 35 olive drab +107 142 35 OliveDrab +189 183 107 dark khaki +189 183 107 DarkKhaki +240 230 140 khaki +238 232 170 pale goldenrod +238 232 170 PaleGoldenrod +250 250 210 light goldenrod yellow +250 250 210 LightGoldenrodYellow +255 255 224 light yellow +255 255 224 LightYellow +255 255 0 yellow +255 215 0 gold +238 221 130 light goldenrod +238 221 130 LightGoldenrod +218 165 32 goldenrod +184 134 11 dark goldenrod +184 134 11 DarkGoldenrod +188 143 143 rosy brown +188 143 143 RosyBrown +205 92 92 indian red +205 92 92 IndianRed +139 69 19 saddle brown +139 69 19 SaddleBrown +160 82 45 sienna +205 133 63 peru +222 184 135 burlywood +245 245 220 beige +245 222 179 wheat +244 164 96 sandy brown +244 164 96 SandyBrown +210 180 140 tan +210 105 30 chocolate +178 34 34 firebrick +165 42 42 brown +233 150 122 dark salmon +233 150 122 DarkSalmon +250 128 114 salmon +255 160 122 light salmon +255 160 122 LightSalmon +255 165 0 orange +255 140 0 dark orange +255 140 0 DarkOrange +255 127 80 coral +240 128 128 light coral +240 128 128 LightCoral +255 99 71 tomato +255 69 0 orange red +255 69 0 OrangeRed +255 0 0 red +255 105 180 hot pink +255 105 180 HotPink +255 20 147 deep pink +255 20 147 DeepPink +255 192 203 pink +255 182 193 light pink +255 182 193 LightPink +219 112 147 pale violet red +219 112 147 PaleVioletRed +176 48 96 maroon +199 21 133 medium violet red +199 21 133 MediumVioletRed +208 32 144 violet red +208 32 144 VioletRed +255 0 255 magenta +238 130 238 violet +221 160 221 plum +218 112 214 orchid +186 85 211 medium orchid +186 85 211 MediumOrchid +153 50 204 dark orchid +153 50 204 DarkOrchid +148 0 211 dark violet +148 0 211 DarkViolet +138 43 226 blue violet +138 43 226 BlueViolet +160 32 240 purple +147 112 219 medium purple +147 112 219 MediumPurple +216 191 216 thistle +255 250 250 snow1 +238 233 233 snow2 +205 201 201 snow3 +139 137 137 snow4 +255 245 238 seashell1 +238 229 222 seashell2 +205 197 191 seashell3 +139 134 130 seashell4 +255 239 219 AntiqueWhite1 +238 223 204 AntiqueWhite2 +205 192 176 AntiqueWhite3 +139 131 120 AntiqueWhite4 +255 228 196 bisque1 +238 213 183 bisque2 +205 183 158 bisque3 +139 125 107 bisque4 +255 218 185 PeachPuff1 +238 203 173 PeachPuff2 +205 175 149 PeachPuff3 +139 119 101 PeachPuff4 +255 222 173 NavajoWhite1 +238 207 161 NavajoWhite2 +205 179 139 NavajoWhite3 +139 121 94 NavajoWhite4 +255 250 205 LemonChiffon1 +238 233 191 LemonChiffon2 +205 201 165 LemonChiffon3 +139 137 112 LemonChiffon4 +255 248 220 cornsilk1 +238 232 205 cornsilk2 +205 200 177 cornsilk3 +139 136 120 cornsilk4 +255 255 240 ivory1 +238 238 224 ivory2 +205 205 193 ivory3 +139 139 131 ivory4 +240 255 240 honeydew1 +224 238 224 honeydew2 +193 205 193 honeydew3 +131 139 131 honeydew4 +255 240 245 LavenderBlush1 +238 224 229 LavenderBlush2 +205 193 197 LavenderBlush3 +139 131 134 LavenderBlush4 +255 228 225 MistyRose1 +238 213 210 MistyRose2 +205 183 181 MistyRose3 +139 125 123 MistyRose4 +240 255 255 azure1 +224 238 238 azure2 +193 205 205 azure3 +131 139 139 azure4 +131 111 255 SlateBlue1 +122 103 238 SlateBlue2 +105 89 205 SlateBlue3 + 71 60 139 SlateBlue4 + 72 118 255 RoyalBlue1 + 67 110 238 RoyalBlue2 + 58 95 205 RoyalBlue3 + 39 64 139 RoyalBlue4 + 0 0 255 blue1 + 0 0 238 blue2 + 0 0 205 blue3 + 0 0 139 blue4 + 30 144 255 DodgerBlue1 + 28 134 238 DodgerBlue2 + 24 116 205 DodgerBlue3 + 16 78 139 DodgerBlue4 + 99 184 255 SteelBlue1 + 92 172 238 SteelBlue2 + 79 148 205 SteelBlue3 + 54 100 139 SteelBlue4 + 0 191 255 DeepSkyBlue1 + 0 178 238 DeepSkyBlue2 + 0 154 205 DeepSkyBlue3 + 0 104 139 DeepSkyBlue4 +135 206 255 SkyBlue1 +126 192 238 SkyBlue2 +108 166 205 SkyBlue3 + 74 112 139 SkyBlue4 +176 226 255 LightSkyBlue1 +164 211 238 LightSkyBlue2 +141 182 205 LightSkyBlue3 + 96 123 139 LightSkyBlue4 +198 226 255 SlateGray1 +185 211 238 SlateGray2 +159 182 205 SlateGray3 +108 123 139 SlateGray4 +202 225 255 LightSteelBlue1 +188 210 238 LightSteelBlue2 +162 181 205 LightSteelBlue3 +110 123 139 LightSteelBlue4 +191 239 255 LightBlue1 +178 223 238 LightBlue2 +154 192 205 LightBlue3 +104 131 139 LightBlue4 +224 255 255 LightCyan1 +209 238 238 LightCyan2 +180 205 205 LightCyan3 +122 139 139 LightCyan4 +187 255 255 PaleTurquoise1 +174 238 238 PaleTurquoise2 +150 205 205 PaleTurquoise3 +102 139 139 PaleTurquoise4 +152 245 255 CadetBlue1 +142 229 238 CadetBlue2 +122 197 205 CadetBlue3 + 83 134 139 CadetBlue4 + 0 245 255 turquoise1 + 0 229 238 turquoise2 + 0 197 205 turquoise3 + 0 134 139 turquoise4 + 0 255 255 cyan1 + 0 238 238 cyan2 + 0 205 205 cyan3 + 0 139 139 cyan4 +151 255 255 DarkSlateGray1 +141 238 238 DarkSlateGray2 +121 205 205 DarkSlateGray3 + 82 139 139 DarkSlateGray4 +127 255 212 aquamarine1 +118 238 198 aquamarine2 +102 205 170 aquamarine3 + 69 139 116 aquamarine4 +193 255 193 DarkSeaGreen1 +180 238 180 DarkSeaGreen2 +155 205 155 DarkSeaGreen3 +105 139 105 DarkSeaGreen4 + 84 255 159 SeaGreen1 + 78 238 148 SeaGreen2 + 67 205 128 SeaGreen3 + 46 139 87 SeaGreen4 +154 255 154 PaleGreen1 +144 238 144 PaleGreen2 +124 205 124 PaleGreen3 + 84 139 84 PaleGreen4 + 0 255 127 SpringGreen1 + 0 238 118 SpringGreen2 + 0 205 102 SpringGreen3 + 0 139 69 SpringGreen4 + 0 255 0 green1 + 0 238 0 green2 + 0 205 0 green3 + 0 139 0 green4 +127 255 0 chartreuse1 +118 238 0 chartreuse2 +102 205 0 chartreuse3 + 69 139 0 chartreuse4 +192 255 62 OliveDrab1 +179 238 58 OliveDrab2 +154 205 50 OliveDrab3 +105 139 34 OliveDrab4 +202 255 112 DarkOliveGreen1 +188 238 104 DarkOliveGreen2 +162 205 90 DarkOliveGreen3 +110 139 61 DarkOliveGreen4 +255 246 143 khaki1 +238 230 133 khaki2 +205 198 115 khaki3 +139 134 78 khaki4 +255 236 139 LightGoldenrod1 +238 220 130 LightGoldenrod2 +205 190 112 LightGoldenrod3 +139 129 76 LightGoldenrod4 +255 255 224 LightYellow1 +238 238 209 LightYellow2 +205 205 180 LightYellow3 +139 139 122 LightYellow4 +255 255 0 yellow1 +238 238 0 yellow2 +205 205 0 yellow3 +139 139 0 yellow4 +255 215 0 gold1 +238 201 0 gold2 +205 173 0 gold3 +139 117 0 gold4 +255 193 37 goldenrod1 +238 180 34 goldenrod2 +205 155 29 goldenrod3 +139 105 20 goldenrod4 +255 185 15 DarkGoldenrod1 +238 173 14 DarkGoldenrod2 +205 149 12 DarkGoldenrod3 +139 101 8 DarkGoldenrod4 +255 193 193 RosyBrown1 +238 180 180 RosyBrown2 +205 155 155 RosyBrown3 +139 105 105 RosyBrown4 +255 106 106 IndianRed1 +238 99 99 IndianRed2 +205 85 85 IndianRed3 +139 58 58 IndianRed4 +255 130 71 sienna1 +238 121 66 sienna2 +205 104 57 sienna3 +139 71 38 sienna4 +255 211 155 burlywood1 +238 197 145 burlywood2 +205 170 125 burlywood3 +139 115 85 burlywood4 +255 231 186 wheat1 +238 216 174 wheat2 +205 186 150 wheat3 +139 126 102 wheat4 +255 165 79 tan1 +238 154 73 tan2 +205 133 63 tan3 +139 90 43 tan4 +255 127 36 chocolate1 +238 118 33 chocolate2 +205 102 29 chocolate3 +139 69 19 chocolate4 +255 48 48 firebrick1 +238 44 44 firebrick2 +205 38 38 firebrick3 +139 26 26 firebrick4 +255 64 64 brown1 +238 59 59 brown2 +205 51 51 brown3 +139 35 35 brown4 +255 140 105 salmon1 +238 130 98 salmon2 +205 112 84 salmon3 +139 76 57 salmon4 +255 160 122 LightSalmon1 +238 149 114 LightSalmon2 +205 129 98 LightSalmon3 +139 87 66 LightSalmon4 +255 165 0 orange1 +238 154 0 orange2 +205 133 0 orange3 +139 90 0 orange4 +255 127 0 DarkOrange1 +238 118 0 DarkOrange2 +205 102 0 DarkOrange3 +139 69 0 DarkOrange4 +255 114 86 coral1 +238 106 80 coral2 +205 91 69 coral3 +139 62 47 coral4 +255 99 71 tomato1 +238 92 66 tomato2 +205 79 57 tomato3 +139 54 38 tomato4 +255 69 0 OrangeRed1 +238 64 0 OrangeRed2 +205 55 0 OrangeRed3 +139 37 0 OrangeRed4 +255 0 0 red1 +238 0 0 red2 +205 0 0 red3 +139 0 0 red4 +255 20 147 DeepPink1 +238 18 137 DeepPink2 +205 16 118 DeepPink3 +139 10 80 DeepPink4 +255 110 180 HotPink1 +238 106 167 HotPink2 +205 96 144 HotPink3 +139 58 98 HotPink4 +255 181 197 pink1 +238 169 184 pink2 +205 145 158 pink3 +139 99 108 pink4 +255 174 185 LightPink1 +238 162 173 LightPink2 +205 140 149 LightPink3 +139 95 101 LightPink4 +255 130 171 PaleVioletRed1 +238 121 159 PaleVioletRed2 +205 104 137 PaleVioletRed3 +139 71 93 PaleVioletRed4 +255 52 179 maroon1 +238 48 167 maroon2 +205 41 144 maroon3 +139 28 98 maroon4 +255 62 150 VioletRed1 +238 58 140 VioletRed2 +205 50 120 VioletRed3 +139 34 82 VioletRed4 +255 0 255 magenta1 +238 0 238 magenta2 +205 0 205 magenta3 +139 0 139 magenta4 +255 131 250 orchid1 +238 122 233 orchid2 +205 105 201 orchid3 +139 71 137 orchid4 +255 187 255 plum1 +238 174 238 plum2 +205 150 205 plum3 +139 102 139 plum4 +224 102 255 MediumOrchid1 +209 95 238 MediumOrchid2 +180 82 205 MediumOrchid3 +122 55 139 MediumOrchid4 +191 62 255 DarkOrchid1 +178 58 238 DarkOrchid2 +154 50 205 DarkOrchid3 +104 34 139 DarkOrchid4 +155 48 255 purple1 +145 44 238 purple2 +125 38 205 purple3 + 85 26 139 purple4 +171 130 255 MediumPurple1 +159 121 238 MediumPurple2 +137 104 205 MediumPurple3 + 93 71 139 MediumPurple4 +255 225 255 thistle1 +238 210 238 thistle2 +205 181 205 thistle3 +139 123 139 thistle4 + 0 0 0 gray0 + 0 0 0 grey0 + 3 3 3 gray1 + 3 3 3 grey1 + 5 5 5 gray2 + 5 5 5 grey2 + 8 8 8 gray3 + 8 8 8 grey3 + 10 10 10 gray4 + 10 10 10 grey4 + 13 13 13 gray5 + 13 13 13 grey5 + 15 15 15 gray6 + 15 15 15 grey6 + 18 18 18 gray7 + 18 18 18 grey7 + 20 20 20 gray8 + 20 20 20 grey8 + 23 23 23 gray9 + 23 23 23 grey9 + 26 26 26 gray10 + 26 26 26 grey10 + 28 28 28 gray11 + 28 28 28 grey11 + 31 31 31 gray12 + 31 31 31 grey12 + 33 33 33 gray13 + 33 33 33 grey13 + 36 36 36 gray14 + 36 36 36 grey14 + 38 38 38 gray15 + 38 38 38 grey15 + 41 41 41 gray16 + 41 41 41 grey16 + 43 43 43 gray17 + 43 43 43 grey17 + 46 46 46 gray18 + 46 46 46 grey18 + 48 48 48 gray19 + 48 48 48 grey19 + 51 51 51 gray20 + 51 51 51 grey20 + 54 54 54 gray21 + 54 54 54 grey21 + 56 56 56 gray22 + 56 56 56 grey22 + 59 59 59 gray23 + 59 59 59 grey23 + 61 61 61 gray24 + 61 61 61 grey24 + 64 64 64 gray25 + 64 64 64 grey25 + 66 66 66 gray26 + 66 66 66 grey26 + 69 69 69 gray27 + 69 69 69 grey27 + 71 71 71 gray28 + 71 71 71 grey28 + 74 74 74 gray29 + 74 74 74 grey29 + 77 77 77 gray30 + 77 77 77 grey30 + 79 79 79 gray31 + 79 79 79 grey31 + 82 82 82 gray32 + 82 82 82 grey32 + 84 84 84 gray33 + 84 84 84 grey33 + 87 87 87 gray34 + 87 87 87 grey34 + 89 89 89 gray35 + 89 89 89 grey35 + 92 92 92 gray36 + 92 92 92 grey36 + 94 94 94 gray37 + 94 94 94 grey37 + 97 97 97 gray38 + 97 97 97 grey38 + 99 99 99 gray39 + 99 99 99 grey39 +102 102 102 gray40 +102 102 102 grey40 +105 105 105 gray41 +105 105 105 grey41 +107 107 107 gray42 +107 107 107 grey42 +110 110 110 gray43 +110 110 110 grey43 +112 112 112 gray44 +112 112 112 grey44 +115 115 115 gray45 +115 115 115 grey45 +117 117 117 gray46 +117 117 117 grey46 +120 120 120 gray47 +120 120 120 grey47 +122 122 122 gray48 +122 122 122 grey48 +125 125 125 gray49 +125 125 125 grey49 +127 127 127 gray50 +127 127 127 grey50 +130 130 130 gray51 +130 130 130 grey51 +133 133 133 gray52 +133 133 133 grey52 +135 135 135 gray53 +135 135 135 grey53 +138 138 138 gray54 +138 138 138 grey54 +140 140 140 gray55 +140 140 140 grey55 +143 143 143 gray56 +143 143 143 grey56 +145 145 145 gray57 +145 145 145 grey57 +148 148 148 gray58 +148 148 148 grey58 +150 150 150 gray59 +150 150 150 grey59 +153 153 153 gray60 +153 153 153 grey60 +156 156 156 gray61 +156 156 156 grey61 +158 158 158 gray62 +158 158 158 grey62 +161 161 161 gray63 +161 161 161 grey63 +163 163 163 gray64 +163 163 163 grey64 +166 166 166 gray65 +166 166 166 grey65 +168 168 168 gray66 +168 168 168 grey66 +171 171 171 gray67 +171 171 171 grey67 +173 173 173 gray68 +173 173 173 grey68 +176 176 176 gray69 +176 176 176 grey69 +179 179 179 gray70 +179 179 179 grey70 +181 181 181 gray71 +181 181 181 grey71 +184 184 184 gray72 +184 184 184 grey72 +186 186 186 gray73 +186 186 186 grey73 +189 189 189 gray74 +189 189 189 grey74 +191 191 191 gray75 +191 191 191 grey75 +194 194 194 gray76 +194 194 194 grey76 +196 196 196 gray77 +196 196 196 grey77 +199 199 199 gray78 +199 199 199 grey78 +201 201 201 gray79 +201 201 201 grey79 +204 204 204 gray80 +204 204 204 grey80 +207 207 207 gray81 +207 207 207 grey81 +209 209 209 gray82 +209 209 209 grey82 +212 212 212 gray83 +212 212 212 grey83 +214 214 214 gray84 +214 214 214 grey84 +217 217 217 gray85 +217 217 217 grey85 +219 219 219 gray86 +219 219 219 grey86 +222 222 222 gray87 +222 222 222 grey87 +224 224 224 gray88 +224 224 224 grey88 +227 227 227 gray89 +227 227 227 grey89 +229 229 229 gray90 +229 229 229 grey90 +232 232 232 gray91 +232 232 232 grey91 +235 235 235 gray92 +235 235 235 grey92 +237 237 237 gray93 +237 237 237 grey93 +240 240 240 gray94 +240 240 240 grey94 +242 242 242 gray95 +242 242 242 grey95 +245 245 245 gray96 +245 245 245 grey96 +247 247 247 gray97 +247 247 247 grey97 +250 250 250 gray98 +250 250 250 grey98 +252 252 252 gray99 +252 252 252 grey99 +255 255 255 gray100 +255 255 255 grey100