home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / APPS / DVI_MGR / dvimgr_s.lzh / dvimgr / setchar.h < prev    next >
Text File  |  1993-08-06  |  2KB  |  65 lines

  1. /* -*-C-*- setchar.h */
  2. /*-->setchar*/
  3. /**********************************************************************/
  4. /****************************** setchar *******************************/
  5. /**********************************************************************/
  6.  
  7. /*--------------------------------------------------------------------*/
  8. /* Modified for use with DVIDECW driver     (9.02.90)              */
  9. /*--------------------------------------------------------------------*/
  10.  
  11.  
  12. void
  13. setchar(c, update_h)
  14. register BYTE c;
  15. register BOOLEAN update_h;
  16. {
  17.     register struct char_entry *tcharptr;  /* temporary char_entry pointer */
  18.  
  19.     if (DBGOPT(DBG_SET_TEXT))
  20.     {
  21.     (void)fprintf(stderr,"setchar('");
  22.     if (isprint(c))
  23.         (void)putc(c,stderr);
  24.     else
  25.         (void)fprintf(stderr,"\\%03o",(int)c);
  26.     (void)fprintf(stderr,"'<%d>) (hh,vv) = (%ld,%ld) font name <%s>",
  27.         (int)c, (long)hh, (long)vv, fontptr->n);
  28.     NEWLINE(stderr);
  29.     }
  30. #if    (DECWINDOWS || MGR_OSK)
  31.     tcharptr = &(fontptr->ch[c]);
  32.     if (((hh - tcharptr->xoffp + tcharptr->pxlw) < (XSIZE + xscreen))
  33.     && (hh > xscreen)
  34.     && (vv < (YSIZE + yscreen))
  35.     && ((vv - tcharptr->yoffp) >= yscreen))
  36.     {                    /* character fits entirely on page */
  37.     moveto((COORDINATE)(hh - xscreen),(COORDINATE)(vv - yscreen));
  38. #else
  39.     tcharptr = &(fontptr->ch[c]);
  40.     if (((hh - tcharptr->xoffp + tcharptr->pxlw) <= XSIZE)
  41.     && (hh >= 0)
  42.     && (vv <= YSIZE)
  43.     && (vv >= 0))
  44.     {
  45.     moveto( hh, (COORDINATE)(YSIZE-vv));
  46. #endif
  47.     dispchar(c);
  48.     }
  49.     else if (DBGOPT(DBG_OFF_PAGE) && !quiet)
  50.     {                /* character is off page -- discard it */
  51.     (void)fprintf(stderr,
  52.         "setchar(): Char %c [10#%3d 8#%03o 16#%02x] off page.",
  53.         isprint(c) ? c : '?',c,c,c);
  54.     NEWLINE(stderr);
  55.     }
  56.  
  57.     if (update_h)
  58.     {
  59.     h += (INT32)tcharptr->tfmw;
  60.     hh += (COORDINATE)tcharptr->pxlw;
  61.     hh = (COORDINATE)(fixpos(hh-lmargin,h,conv) + lmargin);
  62.     }
  63. }
  64.  
  65.