Category : Miscellaneous Language Source Code
Archive   : LIBRY51.ZIP
Filename : LIBRY6.DOC

 
Output of file : LIBRY6.DOC contained in archive : LIBRY51.ZIP
.pa
PLOT

These procedures enable you to do graphics from FORTRAN. If you just want to
make a plot or draw a figure I suggest you use TPLOT. Considering all of the
options and procedures necessary to turn out a piece of graphics, I wouldn't
recommend your writing your own plot package unless you have some very
unusual, specific task in mind. TPLOT is fairly extensive and has many
options and is quite a lengthy code that took several years to debug.

There is only one function common to all graphics devices and that's drawing a
line between two points. I do everything with lines, including drawing
characters. This might not look too good on a low resolution device; but
it's the only thing you can count on when somebody comes out with a new
device. It is also the only way you can get enhancements like bigger or
smaller and taller or fatter. Besides, by definition, that's all a pen
plotter will do; and that's what I'm most interested in - producing plots for
reports.

Plots in absolute raster units. The lower left-hand corner is (0,0).

These plot procedures work according to the prescribed device (designated by
an LU number). Each type of graphics device requires different commands.
These procedures are designed so that this is transparent. You just specify
the LU and the rest is handled for you. The LUs are as follows.

for this device use....................................this LU
HP-2623 B&W graphics terminal (low resolution)........... 2623
HP-2627 color graphics terminal (low resolution)......... 2623
HP-2648 B&W graphics terminal (low resolution)........... 2648
Tektronix-4014 graphics terminal (high resolution)....... 4014
Tektronix-4107 graphics terminal (medium resolution)..... 4107
HP-7470 two pen plotter (very high resolution)........... 7470
HP-7475 four pen plotter (very high resolution).......... 7475
HP-7550 eight pen plotter (very high resolution)......... 7475
HP-9872 six pen plotter (very high resolution)........... 9872
PC-CGA 320X200 3-colors (very low resolution)............ 8086
PC-HGA 720X348 B&W Hercules (low resolution)............. 186
PC-EGA 640X350 15-colors (low resolution)................ 286
PC-QGA 640X400 Compaq monochrome (low resolution)........ 386
PC-VGA 640X400 15-colors (low resolution)................ 486
(note: the 186,286, etc. has nothing to do with the processor)

I just can't pass up this opportunity to say something about resolution and
color... Anyone who calls 1024X1024 pixels "high resolution" is nuts. High
resolution is at least 4096X3112 pixels. Some people actually call terminals
with 512X360 pixels high resolution - this is probably an inside joke that I'm
just not aware of.

There is also the matter of "how many colors"... Black is not a color because
any terminal can display black when the plug is removed. White is also not a
"color" per se. Colors are red, blue, etc. It really doesn't make a hoot of
difference whether or not you can select from over 10 zillion colors if all
you can get at any one time is 14+white.
.pa
QUICK LIST OF PLOT SUBROUTINES

ARROW.... draw an arrowhead
BOX...... draw a box
CIRCL.... draw a circle (or part of a circle)
COLOR.... change color or pen
DUMPIT... dump the graphics buffer
LINE0.... draw a line
NUMBS.... draw a number
PATRN.... fill in a pattern
PL0TS.... set/get flags
QUITS.... terminate plot
SETBUF... set buffer size
START.... initiate plot
SYMB0.... draw a symbol
SYMBS.... draw a string of symbols
WIPE..... clear graphics
.pa
NAME: ARROW
PURPOSE: draw an arrowhead
TYPE: subroutine (far external)
SYNTAX: CALL ARROW(IX,IY,ISIZE,ANGLE,LU)
INPUT: IX,IY (INTEGER*2) location of tip in raster units
ISIZE (INTEGER*2) length in raster units
ANGLE (REAL*4) angle in degrees (zero is horizontal, 90 is up)
LU (INTEGER*2) see above list
OUTPUT: none


NAME: BOX
PURPOSE: draw a box
TYPE: subroutine (far external)
SYNTAX: CALL BOX(MINX,MINY,MAXX,MAXY,LU)
INPUT: MINX,MINY,MAXX,MAXY (INTEGER*2) location of lower left and
upper right corners of box in raster units
LU (INTEGER*2) see above list
OUTPUT: none


NAME: CIRCL
PURPOSE: draw a circle (or part of a circle)
TYPE: subroutine (far external)
SYNTAX: CALL CIRCL(IX,IY,IR,IDEG1,IDEG2,LU)
INPUT: IX,IY (INTEGER*2) location of center in raster units
IR (INTEGER*2) radius in raster units
IDEG1,IDEG2 (INTEGER*2) degrees where to start and end arc
(for a full circle use 0,360)
LU (INTEGER*2) see above list
OUTPUT: none


NAME: COLOR
PURPOSE: change color or pen
TYPE: subroutine (far external)
SYNTAX: CALL COLOR(IC,LU,IOPT)
INPUT: IC (INTEGER*2) desired color or pen
LU (INTEGER*2) see above list
IOPT (INTEGER*2) option (if IOPT=0 select color, if IOPT<0
select old color-1, if IOPT>0 select old color+1)
OUTPUT: none


NAME: DUMPIT
PURPOSE: dump the graphics buffer
TYPE: subroutine (far external)
SYNTAX: CALL DUMPIT(LU)
INPUT: LU (INTEGER*2) see above list
OUTPUT: none


NAME: LINE0
PURPOSE: draw a line
TYPE: subroutine (far external)
SYNTAX: CALL LINE0(IX1,IY1,IX2,IY2,LT,LU)
INPUT: IX1,IY1 (INTEGER*2) starting point in raster units
IX2,IY2 (INTEGER*2) ending point in raster units
LT (INTEGER*2) linetype (2 is solid, see TPLOT manual)
LU (INTEGER*2) see above list
OUTPUT: none


NAME: NUMBS
PURPOSE: draw a number
TYPE: subroutine (far external)
SYNTAX: CALL NUMBS(IX,IY,ISIZE,ASPECT,ANGLE,SLANT,NSHADE,R,ND,NP,LU)
INPUT: IX,IY,ISIZE,ASPECT,ANGLE,SLANT,NSHADE (see SYMB0)
R (REAL*4) number to be drawn
ND,NP (INTEGER*2) number of digits, number of decimal points
(this is just like an Fn.m format - F10.0 would be 10,0 - for
integer output use R=FLOAT(I) and NP=-1, e.g. for an I5 format
use 5,-1)
LU (INTEGER*2) see above list
OUTPUT: none


NAME: PATRN
PURPOSE: fill in a pattern
TYPE: subroutine (far external)
SYNTAX: CALL PATRN(IX,IY,NP,SL,NS,LT,LU)
INPUT: IX,IY (INTEGER*2) set of points defining polygonal region in
raster units
NP (INTEGER*2) number of points (for a triangular region NP=3)
SL (REAL*4) slope of the lines (tangent of the angle, zero is
horizontal)
NS (INTEGER*2) spacing between lines in raster units (note: if
you want to outline the region set NS=-NS)
LT (INTEGER*2) line type (2 is solid, refer to TPLOT manual
for other line types)
LU (INTEGER*2) see above list
OUTPUT: none
NOTE: this will fill any irregular convex/concave polygonal region


NAME: PL0TS (note zero "0" not oh "O")
PURPOSE: set/get flags
TYPE: subroutine (far external)
SYNTAX: CALL PL0TS(IOPT,I,J,L)
INPUT: IOPT (INTEGER*2) option
IOPT=1 set device=I LU=J
IOPT=2 return J=LU for device=I
IOPT=3 set IXOLD=I,IYOLD=J
IOPT=4 return I=IXOLD,J=IYOLD
IOPT=5 set ALTER=L
IOPT=6 return L=ALTER
IOPT=7 set TILT=L
IOPT=8 return L=TILT
IOPT=9 set IOVCOL=I
IOPT=10 return I=IOVCOL
I,J (INTEGER*2) depending on IOPT
L (LOGICAL*2) depending on IOPT
OUTPUT: J,L depending on IOPT
NOTE: TILT and ALTER are LOGICAL*2 switches that control the plot
orientation (TILT=.FALSE. is upright, TILT=.TRUE. is 90 on
its side) and special character interpretation respectively
refer to TPLOT manual for examples of TILT and ALTER


NAME: QUITS
PURPOSE: terminate plot
TYPE: subroutine (far external)
SYNTAX: CALL QUITS(LU,IOPT)
INPUT: LU (INTEGER*2) see above list
IOPT (INTEGER*2) option see START
OUTPUT: none


NAME: SETBUF
PURPOSE: set buffer size
TYPE: subroutine (far external)
SYNTAX: CALL SETBUF(NBUF)
INPUT: NBUF (INTEGER*2) number of bytes (default is 1K)
OUTPUT: none


NAME: START
PURPOSE: initiate plot
TYPE: subroutine (far external)
SYNTAX: CALL START(LU,IOPT)
INPUT: LU (INTEGER*2) see above list
IOPT (INTEGER*2) option
IOPT=0 is the usual
IOPT>0 on CRT will not clear screen before plotting (useful
for plot-on-plot, can't do it on the PC)
IOPT=2 on an HP-9872 will give you a 11"X17" plot rather than
8.5"X11"
there are others but they are too machine specific to detail
OUTPUT: none


NAME: SYMB0
PURPOSE: draw a symbol
TYPE: subroutine (far external)
SYNTAX: CALL SYMB0(IX,IY,ISIZE,ASPECT,ANGLE,SLANT,NSHADE,IS,LU)
INPUT: IX,IY (INTEGER*2) location in raster units of lower left
corner of symbol
ISIZE (INTEGER*2) height of symbol in raster units
ASPECT (REAL*4) aspect (1 is normal, 2 is tall, .5 is short)
ANGLE (REAL*4) angle in degrees (0 is horizontal, 90 is up)
SLANT (REAL*4) slant in degrees (0 is upright, 45 is forward,
-45 is backward)
NSHADE (INTEGER*2) shading (0 is normal, 1 is dark, 2 is very
dark, 3 is ridiculous)
IS (INTEGER*2) character number (32 is blank, 64 is '@', 65
is 'A', etc. for ASCII, 65+128 is a greek alpha etc., 65+256
is the symbol 'A' which happens to be a box - refer to TPLOT
manual for list of symbols)
LU (INTEGER*2) see above list
OUTPUT: none


NAME: SYMBS
PURPOSE: draw a string of symbols
TYPE: subroutine (far external)
SYNTAX: CALL SYMBS(IX,IY,ISIZE,ASPECT,ANGLE,SLANT,NSHADE,STRING,N,LU)
INPUT: IX,IY,ISIZE,ASPECT,ANGLE,SLANT,NSHADE (see SYMB0)
STRING (CHARACTER*?) string to be drawn e.g. 'draw this'
N (INTEGER*2) number of characters in string
LU (INTEGER*2) see above list
OUTPUT: none


NAME: WIPE
PURPOSE: clear graphics
TYPE: subroutine (far external)
SYNTAX: CALL WIPE(LU)
INPUT: LU (INTEGER*2) see above list
OUTPUT: none
.ad LIBRY6A.DOC


  3 Responses to “Category : Miscellaneous Language Source Code
Archive   : LIBRY51.ZIP
Filename : LIBRY6.DOC

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/