home *** CD-ROM | disk | FTP | other *** search
- /* -*-C-*- setchar.h */
- /*-->setchar*/
- /**********************************************************************/
- /****************************** setchar *******************************/
- /**********************************************************************/
-
- void
- setchar(c, update_h)
- register BYTE c;
- register BOOLEAN update_h;
- {
- register struct char_entry *tcharptr; /* temporary char_entry pointer */
-
- if (DBGOPT(DBG_SET_TEXT))
- {
- (void)fprintf(stderr,"setchar('");
- if (isprint(c))
- (void)putc(c,stderr);
- else
- (void)fprintf(stderr,"\\%03o",(int)c);
- (void)fprintf(stderr,"'<%d>) (hh,vv) = (%ld,%ld) font name <%s>",
- (int)c, (long)hh, (long)vv, fontptr->n);
- NEWLINE(stderr);
- }
-
- tcharptr = &(fontptr->ch[c]);
- if (((hh - tcharptr->xoffp + tcharptr->pxlw) <= XSIZE)
- && (hh >= 0)
- && (vv <= YSIZE)
- && (vv >= 0))
- { /* character fits entirely on page */
- moveto( hh, (COORDINATE)(YSIZE-vv));
- dispchar(c);
- }
- else if (DBGOPT(DBG_OFF_PAGE) && !quiet)
- { /* character is off page -- discard it */
- (void)fprintf(stderr,
- "setchar(): Char %c [10#%3d 8#%03o 16#%02x] off page.",
- isprint(c) ? c : '?',c,c,c);
- NEWLINE(stderr);
- }
-
- if (update_h)
- {
- h += (INT32)tcharptr->tfmw;
- hh += (COORDINATE)tcharptr->pxlw;
- hh = (COORDINATE)(fixpos(hh-lmargin,h,conv) + lmargin);
- }
- }
-
-