home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 3 / goldfish_volume_3.bin / files / text / tex / pastex / source / dvips / skippage.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-01-08  |  2.9 KB  |  105 lines

  1. /*
  2.  *   Skips over a page, collecting possible font definitions.  A very simple
  3.  *   case statement insures we maintain sync with the dvi file by collecting
  4.  *   the necessary parameters; but font definitions must be processed normally.
  5.  */
  6. #include "dvips.h" /* The copyright notice in that file is included too! */
  7. /*
  8.  *   These are the external routines called.
  9.  */
  10. #ifdef AMIGA
  11. #include "skippage_protos.h"
  12. #include "dviinput_protos.h"
  13. #include "fontdef_protos.h"
  14. #include "dospecial_protos.h"
  15. #include "dvips_protos.h"
  16. #include "color_protos.h"
  17. #else
  18. extern shalfword dvibyte() ;
  19. extern halfword twobytes() ;
  20. extern integer threebytes() ;
  21. extern integer signedquad() ;
  22. extern shalfword signedbyte() ;
  23. extern shalfword signedpair() ;
  24. extern integer signedtrio() ;
  25. extern void skipover() ;
  26. extern void fontdef() ;
  27. extern void predospecial() ;
  28. extern void error() ;
  29. extern void bopcolor() ;
  30. #endif
  31. /*
  32.  *   These are the external variables accessed.
  33.  */
  34. #ifdef DEBUG
  35. extern integer debug_flag;
  36. #endif  /* DEBUG */
  37. extern integer pagenum ;
  38. extern char errbuf[] ;
  39. extern FILE *dvifile ;
  40. /*
  41.  *   And now the big routine.
  42.  */
  43. void
  44. skippage()
  45. {
  46.    register shalfword cmd ;
  47.    register integer i ;
  48.  
  49. #ifdef DEBUG
  50.    if (dd(D_PAGE))
  51. #ifdef SHORTINT
  52.    (void)fprintf(stderr,"Skipping page %ld\n", pagenum) ;
  53. #else   /* ~SHORTINT */
  54.    (void)fprintf(stderr,"Skipping page %d\n", pagenum) ;
  55. #endif  /* ~SHORTINT */
  56. #endif  /* DEBUG */
  57. /* skipover(40) ; skip rest of bop command? how did this get in here? */
  58.    bopcolor(0) ;
  59.    while ((cmd=dvibyte())!=140) {
  60.      switch (cmd) {
  61. /* illegal options */
  62. case 129: case 130: case 131: case 134: case 135: case 136: case 139: 
  63. case 247: case 248: case 249: case 250: case 251: case 252: case 253:
  64. case 254: case 255:
  65.          (void)sprintf(errbuf,
  66. #ifdef SHORTINT
  67.             "! DVI file contains unexpected command (%ld)",cmd) ;
  68. #else   /* ~SHORTINT */
  69.             "! DVI file contains unexpected command (%d)",cmd) ;
  70. #endif  /* ~SHORTINT */
  71.          error(errbuf) ;
  72. /* eight byte commands */
  73. case 132: case 137:
  74.    cmd = dvibyte() ;
  75.    cmd = dvibyte() ;
  76.    cmd = dvibyte() ;
  77.    cmd = dvibyte() ;
  78. /* four byte commands */
  79. case 146: case 151: case 156: case 160: case 165: case 170: case 238:
  80.    cmd = dvibyte() ;
  81. /* three byte commands */
  82. case 145: case 150: case 155: case 159: case 164: case 169: case 237:
  83.    cmd = dvibyte() ;
  84. /* two byte commands */
  85. case 144: case 149: case 154: case 158: case 163: case 168: case 236:
  86.    cmd = dvibyte() ;
  87. /* one byte commands */
  88. case 128: case 133: case 143: case 148: case 153: case 157: case 162:
  89. case 167: case 235:
  90.    cmd = dvibyte() ;
  91.    break ;
  92. /* specials */
  93. case 239: i = dvibyte() ; predospecial(i, 0) ; break ;
  94. case 240: i = twobytes() ; predospecial(i, 0) ; break ;
  95. case 241: i = threebytes() ; predospecial(i, 0) ; break ;
  96. case 242: i = signedquad() ; predospecial(i, 0) ; break ;
  97. /* font definition */
  98. case 243: case 244: case 245: case 246:
  99.    fontdef(cmd - 242) ;
  100.    break ;
  101. default: ;
  102.       }
  103.    }
  104. }
  105.