/* fed.h 4.1 83/03/09 */ /* * fed.h: global definitions for font editor. */ #include #include #include #include #include /* current windows - what's on the screen */ #define SCRHI 360 /* number of pixels on the screen */ #define SCRWID 720 /* width in pixels of the screen */ #define NROW 3 /* number of rows of glyphs on the screen */ #define NCOL 7 /* number of cols of glyphs in a row */ #define NWIND (NROW*NCOL) /* number of windows */ #define GLCOL 100 /* width of a glyph window */ #define GLROW 100 /* height of a glyph window */ #define GLPAD 3 /* number of pixels between windows */ #define WINDSIZE (((GLCOL+7)>>3)*GLROW) /* size in bytes of a window */ #define BASELINE 22 /* number of pixels below baseline in window */ #define SLOPE (3.5) /* Amount to slant italic vertical line */ /* equal to about 15.94 degrees */ /* for 5 degree caligraphy slant use 11.43 */ #define ESC '\033' /* The ASCII escape character */ #define abs(x) ((x) < 0 ? (-(x)) : (x)) #define max(x,y) ((x) > (y) ? (x) : (y)) #define min(x,y) ((x) < (y) ? (x) : (y)) typedef char *bitmat; int changes; /* nonzero if changes since last write */ char curchar; /* current character being edited */ int curcurs; /* 1 if cursor is on now */ int currb; /* 1 if rubber band lie is on now */ int curs_r, curs_c; /* position in current window of graphics cursor */ int curwind; /* current open window number */ int curzoom; /* 1 to 9 - current zoom level of screen */ int editing; /* in file I/O command, true if editing font */ jmp_buf env; long fbase; /* first loc in font file of bits */ FILE * fontdes; /* open for reading, current font */ char fontfile[100]; /* name of the font file */ int hpensize; /* size of heavy pen in pixels diameter of dot */ char msgbuf[100]; /* scratch space to sprintf into for messages */ int nextwind; /* the next free window to grab */ int oldzoom; /* the value of curzoom before a message */ int pen_r, pen_c; /* row/col in current glyph of logical pen */ int pencolor; /* 0=erase, 1=draw */ int penweight; /* 0=fine, 1=heavy */ int pointsize; /* point size of current font */ int QUIET; /* true if -q flag */ char stoutbuf[BUFSIZ]; /* for speed */ FILE *trace; /* for debugging output */ char tracebuf[BUFSIZ]; /* for speed */ int und_p_r, und_p_c; /* pen_r, pen_c for undo */ int und_c_r, und_c_c; /* curs_r, curs_c for undo */ struct header FontHeader; struct dispatch disptable[256]; struct cwind { bitmat val; /* what we are making it into */ bitmat onscreen; /* what's currently on the screen */ bitmat undval; /* the previous version */ char used; /* the character using this window */ } wind[NROW * NCOL]; struct cht { int wherewind; /* >=0: window # on screen, -1: in file, -2: use whereat */ bitmat whereat; /* where it can be found */ int nrow, ncol; /* size of char */ int rcent, ccent; /* bit location of lower left corner of main part of char */ } cht[256]; struct place { int c, r; } base[NROW * NCOL]; /* lower left corner of each window */ char penmat[10][10]; /* 0 or 1 as the pen is. 5,5 is center */ float sqrtmat[10][10]; /* table of sqrt(i**2+j**2) for speed */ char *rdchar(); char esccmd(); bitmat newmat(); bitmat findbits(); int onsig(); int onintr(); float sqrt(); int matcnt[10];