/* Line and box draw routines */ #include #include "Z3TCAP.H" #include "CVFUNC.H" /* Erase box routine given upper left row,col and lower right row,col and a space fill flag (which tells whether to fill the box with space chars). */ int erabox(ulr,ulc,rsize,csize,fill) unsigned ulr,ulc,rsize,csize,fill; { return(_cbox(ulr,ulc,rsize,csize,fill,' ')); } /* Draw full char box */ int fbox(ulr,ulc,rsize,csize,fill) unsigned ulr,ulc,rsize,csize,fill; { return(_box(ulr,ulc,rsize,csize,fill,tcap.gfb,TRUE)); } /* Draw hashed char box */ int hbox(ulr,ulc,rsize,csize,fill) unsigned ulr,ulc,rsize,csize,fill; { return(_box(ulr,ulc,rsize,csize,fill,tcap.ghb,TRUE)); } /* Box draw using any arbitrary string. String assumed to be graphic string as in the graphic chars defined in the TCAP. This routine turns graphic mode on to print the string. */ int _gbox(ulr,ulc,rsize,csize,fill,c) unsigned ulr,ulc,rsize,csize,fill; char *c; { return(_box(ulr,ulc,rsize,csize,fill,c,TRUE)); } /* Draw box with ascii char c */ int _cbox(ulr,ulc,rsize,csize,fill,c) unsigned ulr,ulc,rsize,csize,fill; int c; { char s[2]; s[0] = c; s[1] = '\0'; return(_box(ulr,ulc,rsize,csize,fill,s,FALSE)); } /* Horizontal line draw */ int hline(row,lcol,length,string,gflag) int row,lcol,length,gflag; char *string; { return(_box(row,lcol,1,length,FALSE,string,gflag)); } /* Vertical line draw */ int vline(trow,lcol,length,string,gflag) int trow,lcol,length,gflag; char *string; { return(_box(trow,lcol,length,1,FALSE,string,gflag)); } /* Vertical double wide line draw */ int vline2(trow,lcol,length,string,gflag) int trow,lcol,length,gflag; char *string; { return(_box(trow,lcol,length,2,FALSE,string,gflag)); } /* Low level box draw. Plots box with a char string so ZCPR tcap business graphics can be supported. If a graphics string is used gflag must be true, otherwise it must be false. Since a single character is used, box size can be as small as 1x1. If larger than 2x2, the box may be space filled or may be "see thru". */ int _box(ulr,ulc,rsize,csize,fill,c,gflag) int ulr,ulc,rsize,csize,fill,gflag; char *c; { unsigned i,j; rsize = ckrow(--rsize+ulr)-ulr; csize = ckcol(--csize+ulc)-ulc; if(rsize < 0 || csize < 0) return(FALSE); if(gflag) gm_on(); /* paint top row */ goxy(ulr,ulc); for(i=0;i<=csize;++i) _scout(c); if(rsize == 1) goto _boxx; /* paint middle rows */ for(i=1;i 2)) { if(gflag) gm_off(); for(j=1;j