libmeta.a(3) simplified interface to metafile(5)

SYNOPSIS

extern FILE *pout;

mline(x, y, type, thick, color)

mpoly(x, y, border, pat, color)

mdraw(x, y)

mtext(x, y, s, cpi, color)
char *s;

mvstr(xmin, ymin, xmax, ymax, s, d, thick, color)
char *s;

mrectangle(xmin, ymin, xmax, ymax, pat, color)

mtriangle(xmin, ymin, xmax, ymax, d, pat, color)

msegment(xmin, ymin, xmax, ymax, sname, d, thick, color)
char *sname;

msetpat(pat, pattern)
char *pattern;

mopenseg(sname)
char *sname;

mcloseseg()

minclude(fname)
char *fname;

mendpage()

mdone()

DESCRIPTION

The routines in libmeta provide a simple interface to the metafile(5) 2D graphics stream. Output from these routines is sent to pout. Pout defaults to the standard output, and should be piped to the appropriate device driver.

All coordinates range from 0 to 16383 and map to a square area on the output device. D values are one of 'r', 'u', 'l' and 'd' corresponding to right, up, left, and down respectively. Color values range from 0 to 3 and normally correspond to black, cyan, green and blue. Pattern values range from 0 to 3 and default to solid, thick lines, thin lines, and candystripe. Pattern value mapping may be changed via setpat. All strings are null-terminated, and do not contain newlines.

Mline starts a line at the given coordinates. The line type is a number from 0 to 3 corresponding to solid, dashed, dotted, and dot-dashed. The line thickness, thick, is a number from 0 to 3. Connected lines are drawn with successive calls to mdraw.

Mpoly starts a polygon at the given coordinates. The boolean border specifies whether or not a border is desired around the polygon. Mdraw is used to add vertices to the polygon. The polygon will be closed automatically after the last call.

Mtext prints a string of hardware characters starting at the given coordinates. The characters per inch are cpi. Text is always oriented to the right.

Mvstr places a vector character string within the given boundaries. The string is oriented according to d. The character line thickness is given by thick.

Mrectangle fills the given box with pat. Mtriangle fills the half-box with orientation d in the given boundaries. Right corresponds to a triangle in the lower right half of the box. Up corresponds to a triangle in the upper right, left is upper left, and down is lower left.

Msegment places an instance of the segment sname within the given boundaries. The segment is oriented according to d, where 'r' is null rotation. If either thick or color is nonzero, its value will replace corresponding values in the segment primitives. (For area filling, thick changes the fill pattern.)

Msetpat maps pat to pattern. Pattern is a string of the form "Pn" where n is a number between 0 and 11.

Mopenseg opens the segment named sname. All graphics calls up to a matching call to mcloseseg are stored under sname. An instance of the segment is obtained with a call to msegment. Segments can be nested to any level, and redefining segments is allowed. Beware of calls to mtext within a segment, since text will not rotate or scale.

Minclude includes the graphics metafile fname in the output stream. Mendpage advances to the next screen or page. On a terminal, the bell rings and a line is read to prevent premature erasure. Mdone completes metafile output, and is the only required call.

DIAGNOSTICS

None.