diff options
author | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
---|---|---|
committer | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
commit | e5888a1ffdae813d7575f5fb02275c6bb07e5199 (patch) | |
tree | d8d51eac403f07814b9e936eed0c9a79195e2450 /sys/src/cmd/postscript/postbgi/postbgi.h |
Import sources from 2011-03-30 iso image
Diffstat (limited to 'sys/src/cmd/postscript/postbgi/postbgi.h')
-rwxr-xr-x | sys/src/cmd/postscript/postbgi/postbgi.h | 203 |
1 files changed, 203 insertions, 0 deletions
diff --git a/sys/src/cmd/postscript/postbgi/postbgi.h b/sys/src/cmd/postscript/postbgi/postbgi.h new file mode 100755 index 000000000..41e3003c1 --- /dev/null +++ b/sys/src/cmd/postscript/postbgi/postbgi.h @@ -0,0 +1,203 @@ +/* + * + * BGI opcodes. + * + */ + +#define BRCHAR 033 /* rotated character mode */ +#define BCHAR 034 /* graphical character mode */ +#define BGRAPH 035 /* graphical master mode */ + +#define BSUB 042 /* subroutine definition */ +#define BRET 043 /* end of subroutine */ +#define BCALL 044 /* subroutine call */ + +#define BEND 045 /* end page */ +#define BERASE 046 /* erase - obsolete */ +#define BREP 047 /* repeat */ +#define BENDR 050 /* end repeat */ + +#define BSETX 051 /* set horizontal position */ +#define BSETY 052 /* set vertical position */ +#define BSETXY 053 /* set horizontal and vertical positions */ +#define BINTEN 054 /* intensify - mark current pixel */ + +#define BVISX 055 /* manhattan vector - change x first */ +#define BINVISX 056 /* same as BVISX but nothing drawn */ +#define BVISY 057 /* manhattan vector - change y first */ +#define BINVISY 060 /* same as BVISY but nothing drawn */ + +#define BVEC 061 /* arbitrary long vector */ +#define BSVEC 062 /* arbitrary short vector */ +#define BRECT 063 /* outline rectangle */ +#define BPOINT1 064 /* point plot - mode 1 */ +#define BPOINT 065 /* point plot - mode 2 */ +#define BLINE 066 /* line plot */ + +#define BCSZ 067 /* set character size */ +#define BLTY 070 /* select line type */ +#define BARC 071 /* draw circular arc */ +#define BFARC 072 /* filled circular arc */ +#define BFRECT 073 /* filled rectangle */ +#define BRASRECT 074 /* raster rectangle */ +#define BCOL 075 /* select color */ +#define BFTRAPH 076 /* filled trapezoid */ +#define BPAT 077 /* pattern are for filling - no info */ + +#define BNOISE 0 /* from bad file format */ + +/* + * + * Character size is controlled by the spacing of dots in a 5x7 dot matrix, which + * by default is set to BGISIZE. + * + */ + +#define BGISIZE 2 /* default character grid spacing */ + +/* + * + * Definitions used to decode the bytes read from a BGI file. + * + */ + +#define CHMASK 0177 /* characters only use 7 bits */ +#define DMASK 077 /* data values use lower 6 bits */ +#define MSB 0100 /* used to check for data or opcode */ +#define SGNB 040 /* sign bit for integers */ +#define MSBMAG 037 /* mag of most sig byte in a BGI int */ + +/* + * + * Descriptions of BGI vectors and what's done when they're drawn. + * + */ + +#define X_COORD 0 /* change x next in manhattan vector */ +#define Y_COORD 1 /* same but y change comes next */ +#define LONGVECTOR 2 /* arbitrary long vector */ +#define SHORTVECTOR 3 /* components given in 6 bits */ + +#define VISIBLE 0 /* really draw the vector */ +#define INVISIBLE 1 /* just move the current position */ + +/* + * + * What's done with a closed path. + * + */ + +#define OUTLINE 0 /* outline the defined path */ +#define FILL 1 /* fill it in */ + +/* + * + * BGI line style definitions. They're used as an index into the STYLES array, + * which really belongs in the prologue. + * + */ + +#define SOLID 0 +#define DOTTED 1 +#define SHORTDASH 2 +#define DASH 3 +#define LONGDASH 4 +#define DOTDASH 5 +#define THREEDOT 6 + +#define STYLES \ + \ + { \ + "[]", \ + "[.5 2]", \ + "[2 4]", \ + "[4 4]", \ + "[8 4]", \ + "[.5 2 4 2]", \ + "[.5 2 .5 2 .5 2 4 2]" \ + } + +/* + * + * Three constants used to choose which component (RED, GREEN, or BLUE) we're + * interested in. BGI colors are specified as a single data byte and pulling a + * particular component out of the BGI color byte is handled by procedure + * get_color(). + * + */ + +#define RED 0 +#define GREEN 1 +#define BLUE 2 + +/* + * + * An array of type Disp is used to save the horizontal and vertical displacements + * that result after a subroutine has been called. Needed so we can properly adjust + * our horizontal and vertical positions after a subroutine call. Entries are made + * immediately after a subroutine is defined and used after the call. Subroutine + * names are integers that range from 0 to 63 (assigned in the BG file) and the + * name is used as an index into the Disp array when we save or retrieve the + * displacement. + * + */ + +typedef struct { + int dx; /* horizontal and */ + int dy; /* vertical displacements */ +} Disp; + +/* + * + * An array of type Fontmap helps convert font names requested by users into + * legitimate PostScript names. The array is initialized using FONTMAP, which must + * end with and entry that has NULL defined as its name field. + * + */ + +typedef struct { + char *name; /* user's font name */ + char *val; /* corresponding PostScript name */ +} Fontmap; + +#define FONTMAP \ + \ + { \ + "R", "Courier", \ + "I", "Courier-Oblique", \ + "B", "Courier-Bold", \ + "CO", "Courier", \ + "CI", "Courier-Oblique", \ + "CB", "Courier-Bold", \ + "CW", "Courier", \ + "PO", "Courier", \ + "courier", "Courier", \ + "cour", "Courier", \ + "co", "Courier", \ + NULL, NULL \ + } + +/* + * + * Two macros that are useful in processing BGI files: + * + * MAG(A, B) - Takes bytes A and B which have been read from a BGI file + * and returns the magnitude of the integer represented by + * the two bytes. + * + * LINESPACE(A) - Takes BGI size A and returns the number of address units + * that can be used for a reasonable interline spacing. + * + */ + +#define MAG(A, B) (((A & MSBMAG) << 6) | (B & DMASK)) +#define LINESPACE(A) (8 * A) + +/* + * + * Some of the non-integer valued functions in postdmd.c. + * + */ + +char *get_font(); + |