summaryrefslogtreecommitdiff
path: root/dviware/dvi2pcl/skippages.c
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /dviware/dvi2pcl/skippages.c
Initial commit
Diffstat (limited to 'dviware/dvi2pcl/skippages.c')
-rw-r--r--dviware/dvi2pcl/skippages.c110
1 files changed, 110 insertions, 0 deletions
diff --git a/dviware/dvi2pcl/skippages.c b/dviware/dvi2pcl/skippages.c
new file mode 100644
index 0000000000..dd6db636f8
--- /dev/null
+++ b/dviware/dvi2pcl/skippages.c
@@ -0,0 +1,110 @@
+/* $Log: skippages.c,v $
+ * Revision 0.8 92/11/23 19:47:00 19:47:00 bt (Bo Thide')
+ * Fixed resolution bug. Portable downloading. Added/changed options. PJXL color support
+ *
+ * Revision 0.7 92/11/13 02:41:44 02:41:44 bt (Bo Thide')
+ * More bug fixes and improvements. Support for PaintJet XL
+ *
+ * Revision 0.6 92/11/10 21:48:41 21:48:41 bt (Bo Thide')
+ * Bug fixes. Added -R option. Better font handling.
+ *
+ * Revision 0.5 92/11/09 16:25:48 16:25:48 bt (Bo Thide')
+ * Rewrite of dospecial.c. Extended \special support
+ *
+ * Revision 0.4 92/11/08 02:46:04 02:46:04 bt (Bo Thide')
+ * Changed to portable bit manipulations. Replaced strrstr for non-POSIX compliant C. Fixed numerous bugs. Added support for more \special's.
+ *
+ * Revision 0.3 92/08/24 12:45:54 12:45:54 bt (Bo Thide')
+ * Fixed 8 bit (dc font) support.
+ *
+ * Revision 0.2 92/08/23 17:29:01 17:29:01 bt (Bo Thide')
+ * Source cleaned up. Changed certain function calls. Removed globals.
+ *
+ * Revision 0.1 92/08/22 23:58:48 23:58:48 bt (Bo Thide')
+ * First Release.
+ * */
+
+/*
+ * This routine is used to pass over pages that are not being translated. It
+ * is assumed to begin just after the preamble has been read, or just after a
+ * DVI_BOP has been processed. It continues until either finding a DVI_BOP that
+ * matches the desired starting page specification, or until running into the
+ * postamble.
+ */
+
+#include <stdio.h>
+#include "dvi.h"
+#include "globals.h"
+#include "macros.h"
+
+static char rcsid[] = "$Header: skippages.c,v 0.8 92/11/23 19:47:00 bt Exp $";
+
+long skippages(bitfile, dvifile, pcllevel, resolution)
+FILE *bitfile;
+FILE *dvifile;
+short pcllevel;
+short resolution;
+{
+ int i, k, q;
+ bool badchar;
+ bool match;
+ long p;
+ long hh=0L; /* Pixel analog of DVI unit h */
+ long vv=0L; /* Pixel analog of DVI unit v */
+ long startloc=0;
+
+ while (TRUE) {
+ if((k = (int)getubyte(dvifile)) >= DVI_SET1) {
+ p = firstpar(dvifile, k);
+ switch(k) {
+ case DVI_BOP:
+ scanbop(dvifile);
+ match = TRUE;
+ for(i = 0 ; i <= startvals ; i++)
+ if(startthere[i] && (startcount[i] != count[i]))
+ match = FALSE;
+ if(match) {
+ startloc = lastpage - 1;
+ goto end;
+ }
+ break;
+ case DVI_SET_RULE:
+ case DVI_PUT_RULE:
+ getsquad(dvifile);
+ break;
+ case DVI_FNT_DEF1:
+ case DVI_FNT_DEF2:
+ case DVI_FNT_DEF3:
+ case DVI_FNT_DEF4:
+ definefont(dvifile, p);
+ break;
+ case DVI_XXX1:
+ case DVI_XXX2:
+ case DVI_XXX3:
+ case DVI_XXX4:
+ badchar = FALSE;
+ if(p + nextnamesfree - names > NAMESIZE)
+ prerror("Out of string space during special\n");
+ for (k=0; k<(int)p; k++) {
+ q = (int)getubyte(dvifile);
+ if((q < ' ') || (q > '~'))
+ badchar = TRUE;
+ *(nextnamesfree + k) = q;
+ }
+ *(nextnamesfree + p) = 0;
+ if(badchar)
+ fprintf(stderr,"Non-ASCII character in DVI_XX command\n");
+ dospecial(bitfile, PRESCAN_ON, pcllevel, hh, vv, resolution);
+ break;
+ case DVI_POST:
+ inpostamble = TRUE;
+ goto end;
+ break;
+ default:
+ break;
+ }
+ }
+ }
+end:
+ return(startloc);
+}