home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.3.4.17 [SPARC, PA-RISC] / nextstep33_risc.iso / NextLibrary / TeX / tex / src / texview / skippage.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-05-04  |  2.4 KB  |  82 lines

  1. /*
  2.  *   skippage.c of dvisw software package.
  3.  *
  4.  *   Skips over a page, collecting possible font definitions.  A very simple
  5.  *   case statement insures we maintain sync with the dvi file by collecting
  6.  *   the necessary parameters; font definitions must be processed normally,
  7.  *   however.
  8.  */
  9. #include "structures.h"
  10. /*
  11.  *   These are the external routines called.
  12.  */
  13. extern shalfword dvibyte() ;
  14. extern halfword twobytes() ;
  15. extern integer threebytes() ;
  16. extern integer signedquad() ;
  17. extern shalfword signedbyte() ;
  18. extern shalfword signedpair() ;
  19. extern integer signedtrio() ;
  20. Boolean prescan ;
  21. extern void skipover() ;
  22. extern void fontdef() ;
  23. extern void dospecial() ;
  24. extern void abortdvi() ;
  25. extern void bopcolor() ;
  26. /*
  27.  *   These are the external variables accessed.
  28.  */
  29. extern integer pagenum ;
  30. extern Boolean pageinterrupted ;
  31. /*
  32.  *   And now the big routine.
  33.  */
  34. static signed char comlen[] = {
  35.    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  36.    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  37.    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  38.    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  39.    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  40.    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  41.    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  42.    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  43.    1,-1,-1,-1, 8, 1,-1,-1,-1, 8, 0,-1, 0, 0, 0, 1, /* 128 - 143 */
  44.    2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 1, 2, 3, /* 144 - 159 */
  45.    4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 0, 0, 0, 0, /* 160 - 175 */
  46.    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 176 - 191 */
  47.    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 192 - 207 */
  48.    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 208 - 223 */
  49.    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,-1,-1,-1,-2, /* 224 - 239 */
  50.   -2,-2,-2,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 } ; /* 240 - 255 */
  51. void skippage() {
  52.    register shalfword cmd ;
  53.    register integer i ;
  54.    register signed char *com = comlen ;
  55.  
  56.    prescan = 1 ;
  57.    pageinterrupted = 0 ;
  58.    bopcolor(0) ;
  59.    while ((cmd=dvibyte())!=140) {
  60.       i = com[cmd] ;
  61.       if (i >= 0) {
  62.          while (i > 0) {
  63.             dvibyte() ;
  64.             i-- ;
  65.          }
  66.       } else if (i == -2) {
  67.          if (cmd == 243)
  68.             fontdef() ;
  69.          else {
  70.             i = 0 ;
  71.             while (cmd > 238) {
  72.                i = i * 256 + dvibyte() ;
  73.                cmd-- ;
  74.             }
  75.             dospecial(i) ;
  76.          }
  77.       } else
  78.          abortdvi() ;
  79.    }
  80.    prescan = 0 ;
  81. }
  82.