📄 postbgi.h
字号:
/* * * 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();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -