diff options
Diffstat (limited to 'dviware/dvipj')
-rw-r--r-- | dviware/dvipj/dvipj.c | 409 | ||||
-rw-r--r-- | dviware/dvipj/dvipj.patch | 279 | ||||
-rw-r--r-- | dviware/dvipj/readme | 28 |
3 files changed, 716 insertions, 0 deletions
diff --git a/dviware/dvipj/dvipj.c b/dviware/dvipj/dvipj.c new file mode 100644 index 0000000000..f3165a2e34 --- /dev/null +++ b/dviware/dvipj/dvipj.c @@ -0,0 +1,409 @@ +/* -*-C-*- dvipj.c */ +/*-->dvijet*/ +/**********************************************************************/ +/******************************* dvipj ********************************/ +/**********************************************************************/ + + /* HP PaintJet driver based on dvijet (the escape sequences are very */ + /* similar), magnification stuff from dvitos (also 180 dpi) */ + + /* The changes to the included files have *only* been made for */ + /* unsegmented-memory un*x */ + + /* We allow 4 colours (including black, but not including white) + (NPLANES =4), stored as 4 separate bitmaps. The current bitmap is + indexed by global variable `plane', which can be reset by \specials. To + make things simpler, the paintjet palette is redefined so that + when only one bitmap has a pixel set at the appropriate position + you get the right colour. At present, if more then one bitmap has + a given pixel set, you get a colour determined by the sequence + red, green, blue, black (in order of increasing precedence). This + should be changed by removing corresponding entries in the other + bitmaps when the current colour is painted. + There is one \special{color <red|blue|green|black>}. + Transparency mode is assumed -- this should be a command-line + switch. + */ + +#include "dvihead.h" + +/**********************************************************************/ +/************************ Device Definitions ************************/ +/**********************************************************************/ + +/* All output-device-specific definitions go here. This section must +be changed when modifying a dvi driver for use on a new device */ + +#undef HPPAINTJET +#define HPPAINTJET 1 /* conditional compilation flag */ + +#define VERSION_NO "2.10" /* DVI driver version number */ + +#define DEVICE_ID "Hewlett-Packard PaintJet printer" + /* this string is printed at runtime */ + +#define OUTFILE_EXT "pj" + +#define DEFAULT_RESOLUTION 180 /* default dots/inch on HP PaintJet */ + +#define BYTE_SIZE 8 /* output file byte size */ + +#undef STDRES +#define STDRES 0 /* 0 for low-resolution devices */ + +#define XDPI 180 /* HP Laser Jet horizontal dots/inch */ +#define XPSIZE 8 /* horizontal paper size in inches */ + +#define XSIZE (((XDPI*XPSIZE+2*HOST_WORD_SIZE-1)/\ + (2*HOST_WORD_SIZE))*(2*HOST_WORD_SIZE)) + /* number of horizontal dots; */ + /* MUST BE multiple of */ + /* 2*HOST_WORD_SIZE */ +#define XWORDS ((XSIZE + HOST_WORD_SIZE - 1)/HOST_WORD_SIZE) + /* number of words in rows */ + /* of bitmap array */ + +#define YDPI 180 /* HP PaintJet vertical dots/inch */ + +#define YPSIZE 11 /* vertical paper size in inches */ +#define YSIZE (YDPI*YPSIZE) /* number of vertical dots */ +#define NPLANES 4 /* number of colour planes + (including black) */ +/* The printer bit map (must have an even number of columns). */ + +#define XBIT ((1+2*XWORDS)/2) +#define YBIT YSIZE +#if (IBM_PC_LATTICE | IBM_PC_MICROSOFT | IBM_PC_WIZARD) +#undef SEGMEM +#define SEGMEM 1 /* ( ((long)XBIT * (long)YBIT) > 65536L ) */ +#endif + +#include "bitmap.h" + +#include "main.h" +#include "abortrun.h" +#include "actfact.h" +#include "alldone.h" +#include "chargf.h" +#include "charpk.h" +#include "charpxl.h" +#include "clrbmap.h" +#include "clrrow.h" +#include "dbgopen.h" + +/*-->devinit*/ +/**********************************************************************/ +/****************************** devinit *******************************/ +/**********************************************************************/ + +void +devinit(argc,argv) /* initialize device */ +int argc; +char *argv[]; +{ + (void)getbmap(); + OUTF("\033E\033*t%dR",(int)hpres); /* printer reset, resolution */ + OUTS("\033&k3W"); /* transparency mode -- should be made */ + /* optional */ +} + +/*-->devterm*/ +/**********************************************************************/ +/****************************** devterm *******************************/ +/**********************************************************************/ + +void +devterm() /* terminate device */ +{ +} + +#include "dvifile.h" +#include "dviinit.h" +#include "dviterm.h" +#include "dispchar.h" +#include "f20open.h" +#include "fatal.h" +#include "fillrect.h" +#include "findpost.h" +#include "fixpos.h" +#include "fontfile.h" +#include "fontsub.h" +#include "getbmap.h" +#include "getbytes.h" +#include "getfntdf.h" +#include "getpgtab.h" +#include "initglob.h" +#include "inch.h" +#include "loadchar.h" +#include "movedown.h" +#include "moveover.h" +#include "moveto.h" +#include "nosignex.h" +#include "openfont.h" +#include "option.h" + +/*-->outline*/ +/**********************************************************************/ +/****************************** outline *******************************/ +/**********************************************************************/ + +void +outline(type,pbit) +UNSIGN32 *pbit; /* pointer to raster line */ +char type; /* 'V' or 'W' for non-last or last */ + /* plane respectively */ + +/************************************************************************* +Use machine-specific coding here for efficiency. For TOPS-20, we encode +9 bytes from every pair of 36-bit words. + +For each raster line on the paper, the Laser Jet expects a binary 8-bit +byte stream of the form + + <ESC>*bnnnWxxxxxxx ... xxxxxxx + <--- nnn bytes ---> + +where each byte contains, in order from high to low bit, a left-to-right +bit pattern. No end-of-line marker is required; the escape sequence +automatically causes a new raster line to be started. +*************************************************************************/ + +{ + register UNSIGN32 w_even,w_odd; + register UNSIGN32 *p; + register BYTE *pbuf; + BYTE buf[1+(XSIZE+7)/8]; /* space for EOS + n 8-bit bytes */ + register INT16 i,last_word; + + +#if IBM_PC_MICROSOFT + for (last_word = XBIT - 1; + (last_word >= 1) && (*(UNSIGN32*)normaddr(pbit,last_word) == 0); + --last_word) + ; /* trim white space a word at a time */ +#else + p = pbit + XBIT - 1; /* point to last word on line */ + for (last_word = XBIT - 1; (last_word >= 1) && (*p == 0); --last_word) + --p; /* trim white space a word at a time */ +#endif + + p = pbit; + pbuf = &buf[0]; + for (i = 0; i <= last_word; i += 2) /* loop over trimmed raster */ + { + w_even = (*p++); + w_odd = (*p++); + +#if (HOST_WORD_SIZE == 36) + *pbuf++ = (BYTE)( (w_even >> 28) & 0xff); + *pbuf++ = (BYTE)( (w_even >> 20) & 0xff); + *pbuf++ = (BYTE)( (w_even >> 12) & 0xff); + *pbuf++ = (BYTE)( (w_even >> 4) & 0xff); + *pbuf++ = (BYTE)( ((w_even << 4) | (w_odd >> 32)) & 0xff); + *pbuf++ = (BYTE)( (w_odd >> 24) & 0xff); + *pbuf++ = (BYTE)( (w_odd >> 16) & 0xff); + *pbuf++ = (BYTE)( (w_odd >> 8) & 0xff); + *pbuf++ = (BYTE)( (w_odd ) & 0xff); +#else /* HOST_WORD_SIZE == 32 */ + /* encode 8 bytes at a time on 32-bit machines */ + *pbuf++ = (BYTE)( (w_even >> 24) & 0xff); + *pbuf++ = (BYTE)( (w_even >> 16) & 0xff); + *pbuf++ = (BYTE)( (w_even >> 8) & 0xff); + *pbuf++ = (BYTE)( (w_even ) & 0xff); + *pbuf++ = (BYTE)( (w_odd >> 24) & 0xff); + *pbuf++ = (BYTE)( (w_odd >> 16) & 0xff); + *pbuf++ = (BYTE)( (w_odd >> 8) & 0xff); + *pbuf++ = (BYTE)( (w_odd ) & 0xff); +#endif + + } + + *pbuf = '\0'; /* trailing EOS marker */ + + last_word |= 1; /* make last_word ODD */ + for (i = ((last_word+1)*HOST_WORD_SIZE)/8; + (*(--pbuf) == '\0') && (i > 1); --i) + ; /* trim trailing zero bytes, leaving at least one */ + last_word = i; + + if (type=='V') + OUTF("\033*b%dV",(int)last_word); + else if (type=='W') + OUTF("\033*b%dW",(int)last_word); + pbuf = &buf[0]; /* cannot use fprintf with %s format because of + NUL's in string, and it is slow anyway */ + for (i = 0; i < last_word; ++pbuf,++i) + OUTC(*pbuf); +} + +/*-->prtbmap*/ +/**********************************************************************/ +/****************************** prtbmap *******************************/ +/**********************************************************************/ + +void +prtbmap() + +{ + register UNSIGN32 *p; + register INT16 i,j,k,ybottom,ytop; + + if (DBGOPT(DBG_PAGE_DUMP)) + { + INT16 k1,k2,k3; + + for (k3 = 0; k3 < XBIT; (k3 += 7, ++p)) + { /* print bitmap 7 words at a pass */ + k1 = k3; + k2 = MIN(XBIT,k1+7); + (void)printf("prtbmap()...bitmap words %d..%d",k1,k2-1); + NEWLINE(stdout); + (void)printf(" "); + for (k = k1; k < k2; ++k) + (void)printf("%10d",k*HOST_WORD_SIZE); + NEWLINE(stdout); + for (j = YBIT-1; j >= 0; --j) + { + p = BITMAP(plane,j,0); + for (k = 0; k < XBIT; (++k,++p)) + { + if (*p) /* print non-blank raster line */ + { + p = BITMAP(plane,j,k1); + (void)printf("%5d:",j); + for (k = k1; k < k2; (++k,++p)) + (void)printf(" %09lx",*p); + NEWLINE(stdout); + break; /* exit loop over k */ + } + } + } + } + } + + (void)clearerr(plotfp); + +#if ZAPTHISOUT + k = -1; /* find top non-zero raster */ + for (j = YBIT-1; (j > 0) && (k < 0); --j) /* loop over raster lines */ + { + p = BITMAP(plane,j,XBIT-1); + for (k = XBIT - 1; ((k >= 0) && (*p == 0)); --k) + --p; /* trim white space */ + } + ytop = j; +#else + ytop = YBIT-1; +#endif + + k = -1; /* find bottom non-zero raster */ + for (j = 0; (j < ytop) && (k < 0); ++j) /* loop over raster lines */ + { + +#if IBM_PC_MICROSOFT + for (k = XBIT - 1;((k >= 0) && (*BITMAP(plane,j,k) == 0));--k) + ; /* trim white space */ +#else + p = BITMAP(plane,j,XBIT-1); + for (k = XBIT - 1; ((k >= 0) && (*p == 0)); --k) + --p; /* trim white space */ +#endif + + } + ybottom = MAX(0,j-1); + +#if ZAPTHISOUT + for (j = ytop; (j >= ybottom); --j) + { + OUTF("%5d:",(int)j); + for (k = 0; k < XBIT; ++k) + OUTF(" %9x",*BITMAP(plane,j,k)); + NEWLINE(plotfp); + } +#endif + +/* OUTF("\033&l%dX",(int)copies); *//* number of copies (not relevant)*/ + + OUTS("\033*r4U"); /* use 4 printer colour planes */ + /* (distinct from bitmap */ + /* plane) */ + OUTS("\033*v90A\033*v88B\033*v85C\033*v0I"); /* define palette # 0 as white */ + OUTS("\033*v53A\033*v8B\033*v14C\033*v1I"); /* define palette # 1 */ + /* as red */ + OUTS("\033*v3A\033*v26B\033*v22C\033*v2I"); /* define palette # 2 */ + /* as green */ + OUTS("\033*v3I"); /* and #3 */ + OUTS("\033*v4A\033*v4B\033*v29C\033*v4I"); /* define palette # 4 */ + /* as blue */ + OUTS("\033*v5I\033*v6I\033*v7I"); /* and #5,6,7 */ + OUTS("\033*v4A\033*v4B\033*v6C\033*v8I"); /* define palette # 8 */ + /* as black */ + OUTS("\033*v9I\033*v10I\033*v11I\033*v12I\033*v13I\033*v14I\033*v15I"); + /* and other values with top bit set (i.e., including black) */ + OUTS("\033*r1A"); /* start plot at current */ + /* position */ + + for (j = ytop; (j >= ybottom) ; --j) { /* loop over raster lines */ + for (i = 1; i<=3; i++) + outline('V',BITMAP(i,j,0)); /* red, green, blue in order */ + outline('W',BITMAP(0,j,0)); /* finish with black */ + } + + /* OUTS("\033*rB"); */ /* end raster graphics */ + OUTS("\f"); /* get to bottom of page */ + (void)fflush(plotfp); + if (DISKFULL(plotfp)) + (void)fatal("Output error -- disk storage probably full"); +} + +#include "outrow.h" +#include "prtpage.h" +#include "readfont.h" +#include "readgf.h" +#include "readpk.h" +#include "readpost.h" +#include "readpxl.h" +#include "reldfont.h" +#include "rulepxl.h" +#include "setchar.h" +#include "setfntnm.h" +#include "setrule.h" +#include "signex.h" +#include "skgfspec.h" +#include "skipfont.h" +#include "skpkspec.h" +/* -*-C-*- special.h */ +/*-->special*/ +/**********************************************************************/ +/****************************** special *******************************/ +/**********************************************************************/ + +void +special(s) /* process TeX \special{} string in s[] */ +register char *s; +{ + + if (strncmp("color ",s,6)==0) { + if (strcmp("black",&s[6])==0) plane=0; + else if(strcmp("red",&s[6])==0) plane=1; + else if(strcmp("green",&s[6])==0) plane=2; + else if(strcmp("blue",&s[6])==0) plane=3; + else { + (void)sprintf(message, + "special(): colour %s not available -- ignored",s); + (void)warning(message); + } + } + else { + (void)sprintf(message, + "special(): TeX \\special{%s} not implemented in this driver",s); + (void)warning(message); + } +} +#include "strchr.h" +#include "strcm2.h" +#include "strid2.h" +#include "strrchr.h" +#include "tctos.h" +#include "usage.h" +#include "warning.h" diff --git a/dviware/dvipj/dvipj.patch b/dviware/dvipj/dvipj.patch new file mode 100644 index 0000000000..50369846dd --- /dev/null +++ b/dviware/dvipj/dvipj.patch @@ -0,0 +1,279 @@ +Only in beebe: bintnx.h +Only in beebe: bintnxvm.h +diff -wc2 beebe/bitmap.h beebenew/bitmap.h +*** beebe/bitmap.h Thu Mar 29 15:34:38 1990 +--- beebenew/bitmap.h Thu Aug 2 17:19:04 1990 +*************** +*** 60,64 **** + + UNSIGN32* bitmap = (UNSIGN32*)NULL; + #define BITMAP(y,x) (bitmap + ((UNSIGN32)XBIT*(UNSIGN32)(y)) + (UNSIGN32)(x)) +! + #endif /* SEGMEM */ +--- 60,69 ---- + + UNSIGN32* bitmap = (UNSIGN32*)NULL; ++ #if HPPAINTJET ++ #define BITMAP(p,y,x) (bitmap + \ ++ ((UNSIGN32)(p)*(UNSIGN32)XBIT*(UNSIGN32)YBIT) \ ++ + ((UNSIGN32)XBIT*(UNSIGN32)(y)) + (UNSIGN32)(x)) ++ #else + #define BITMAP(y,x) (bitmap + ((UNSIGN32)XBIT*(UNSIGN32)(y)) + (UNSIGN32)(x)) +! #endif /* HPPAINTJET */ + #endif /* SEGMEM */ +diff -wc2 beebe/clrbmap.h beebenew/clrbmap.h +*** beebe/clrbmap.h Thu Mar 29 15:34:42 1990 +--- beebenew/clrbmap.h Thu Aug 2 17:19:05 1990 +*************** +*** 42,48 **** + register UNSIGN32 *p; /* bitmap pointer */ + + p = (UNSIGN32*)BITMAP(YBIT-1,XBIT-1); /* the last element */ + +! for (nword = (XBIT*YBIT); nword; (--nword,--p)) + *p = (UNSIGN32)0; + +--- 42,53 ---- + register UNSIGN32 *p; /* bitmap pointer */ + ++ #if HPPAINTJET ++ p = (UNSIGN32*)BITMAP(NPLANES-1,YBIT-1,XBIT-1); /* the last */ ++ /* element */ ++ #else + p = (UNSIGN32*)BITMAP(YBIT-1,XBIT-1); /* the last element */ ++ #endif + +! for (nword = (NPLANES*XBIT*YBIT); nword; (--nword,--p)) + *p = (UNSIGN32)0; + +Only in beebe: derun.h +Only in beebenew: diffs +diff -wc2 beebe/dispchar.h beebenew/dispchar.h +*** beebe/dispchar.h Thu Mar 29 15:34:47 1990 +--- beebenew/dispchar.h Thu Aug 2 17:19:06 1990 +*************** +*** 127,131 **** +--- 127,135 ---- + { /* top to bottom */ + x = xcorner; /* select horizontal position */ ++ #if HPPAINTJET ++ p = BITMAP(plane,ycorner+j-1,x/HOST_WORD_SIZE); /* and find word on line */ ++ #else + p = BITMAP(ycorner+j-1,x/HOST_WORD_SIZE); /* and find word on line */ ++ #endif + ilimit = (UNSIGN16)((tcharptr->wp + 31) >> 5); + for (i = 0; i < ilimit; ++i) +Only in beebe: dvi.1 +Only in beebenew: dvipj.c +Only in beebenew: dvipj.l +Only in beebe: dvitos.c +diff -wc2 beebe/fillrect.h beebenew/fillrect.h +*** beebe/fillrect.h Thu Mar 29 15:34:55 1990 +--- beebenew/fillrect.h Thu Aug 2 17:19:09 1990 +*************** +*** 31,35 **** +--- 31,39 ---- + if (IN(0,y+j,YBIT-1)) + { ++ #if HPPAINTJET ++ p = BITMAP(plane,y+j,xlpart); ++ #else + p = BITMAP(y+j,xlpart); ++ #endif + if (IN(0,xlpart,XBIT-1)) + if (xlpart < xrpart) /* set bits in left partial word */ +*************** +*** 44,49 **** +--- 48,58 ---- + + /* finally, set bits in right partial word */ ++ #if HPPAINTJET + if ((xlpart < xrpart) && IN(0,xrpart,XBIT-1)) ++ *BITMAP(plane,y+j,xrpart) |= ~rightones[xroffset]; ++ #else ++ if ((xlpart < xrpart) && IN(0,xrpart,XBIT-1)) + *BITMAP(y+j,xrpart) |= ~rightones[xroffset]; ++ #endif + } + } +diff -wc2 beebe/gblprocs.h beebenew/gblprocs.h +*** beebe/gblprocs.h Tue Mar 19 16:46:12 1991 +--- beebenew/gblprocs.h Thu Aug 2 17:19:10 1990 +*************** +*** 146,150 **** + void option(char *); + +! #if HPLASERJET + void outline(UNSIGN32 *); + #else +--- 146,150 ---- + void option(char *); + +! #if (HPLASERJET | HPPAINTJET) + void outline(UNSIGN32 *); + #else +diff -wc2 beebe/gblvars.h beebenew/gblvars.h +*** beebe/gblvars.h Tue Mar 19 16:46:30 1991 +--- beebenew/gblvars.h Thu Aug 2 17:19:10 1990 +*************** +*** 195,201 **** + COORDINATE hh; /* current horizontal position in pixels */ + +! #if HPLASERJET +! INT16 hpres; /* output resolution (75, 100, 150, 300 dpi) */ + #endif /* HPLASERJET */ + + UNSIGN32 img_mask[32]; /* initialized at run-time so that bit k */ +--- 195,206 ---- + COORDINATE hh; /* current horizontal position in pixels */ + +! #if (HPLASERJET | HPPAINTJET) +! INT16 hpres; /* output resolution (75, 100, 150, */ +! /* 300 dpi) */ + #endif /* HPLASERJET */ ++ ++ #if HPPAINTJET ++ INT16 plane=0; /* colour plane */ ++ #endif /* HPPAINTJET */ + + UNSIGN32 img_mask[32]; /* initialized at run-time so that bit k */ +diff -wc2 beebe/getbmap.h beebenew/getbmap.h +*** beebe/getbmap.h Thu Mar 29 15:34:58 1990 +--- beebenew/getbmap.h Thu Aug 2 17:19:10 1990 +*************** +*** 25,30 **** +--- 25,34 ---- + if (bitmap == (UNSIGN32*)NULL) + { ++ #if HPPAINTJET + bitmap = ++ (UNSIGN32*)MALLOC(((UNSIGN32)(NPLANES))*((UNSIGN32)(XBIT))*((UNSIGN32)(YBIT))*sizeof(UNSIGN32)); ++ #else + (UNSIGN32*)MALLOC(((UNSIGN32)(XBIT))*((UNSIGN32)(YBIT))*sizeof(UNSIGN32)); ++ #endif + if (bitmap == (UNSIGN32*)NULL) + (void)fatal( +Only in beebe: getlog.h +diff -wc2 beebe/main.h beebenew/main.h +*** beebe/main.h Tue Mar 19 16:47:30 1991 +--- beebenew/main.h Thu Aug 2 17:19:12 1990 +*************** +*** 104,108 **** + #endif /* (HPJETPLUS | POSTSCRIPT | IMPRESS | CANON_A2) */ + +! #if TOSHIBAP1351 /* want to override STDMAG */ + #undef STDMAG + +--- 104,108 ---- + #endif /* (HPJETPLUS | POSTSCRIPT | IMPRESS | CANON_A2) */ + +! #if (TOSHIBAP1351 | HPPAINTJET) /* want to override STDMAG */ + #undef STDMAG + +diff -wc2 beebe/makefile beebenew/makefile +*** beebe/makefile Tue Apr 10 12:06:41 1990 +--- beebenew/makefile Tue Feb 19 12:39:40 1991 +*************** +*** 17,20 **** +--- 17,22 ---- + # [20-Jul-87] -- added xxu and dvi.xrf + ++ # dvipj added, Apr '90, d.love@daresbury.ac.uk ++ + # Default C compiler + CC = cc +*************** +*** 21,33 **** + + # Extra compiler options +! XCFLAGS = -g + + # Set paths according to your local conventions +! CFLAGS = -DFONTPATH="\"/usr/local/font/tex/pkb/\"" \ + -DSUBPATH="\"/usr/local/lib/tex/inputs/\"" \ + $(XCFLAGS) +- #CFLAGS = -DFONTPATH="\"/home/users0/fx/beebe/pjpk/\"" \ +- # -DSUBPATH="\"/usr/local/lib/tex/inputs/\"" \ +- # $(XCFLAGS) + + LINTFLAGS = -bchx +--- 23,32 ---- + + # Extra compiler options +! XCFLAGS = -O + + # Set paths according to your local conventions +! CFLAGS = -DFONTPATH="\"/usr/local/lib/tex/fonts/pkb/\"" \ + -DSUBPATH="\"/usr/local/lib/tex/inputs/\"" \ + $(XCFLAGS) + + LINTFLAGS = -bchx +*************** +*** 92,96 **** + dviimp dvijep dvijet dvil75 dvil3p dvim72\ + dvimac dvimpi dvio72 dvioki dviprx dvitos\ +! keytst lptops texidx tosprx + $(RM) -f .~* .#* + +--- 91,95 ---- + dviimp dvijep dvijet dvil75 dvil3p dvim72\ + dvimac dvimpi dvio72 dvioki dviprx dvitos\ +! keytst lptops texidx tosprx dvipj + $(RM) -f .~* .#* + +Only in beebenew: makefile~ +Only in beebe: pjpk +diff -wc2 beebe/prtpage.h beebenew/prtpage.h +*** beebe/prtpage.h Thu Mar 29 15:35:14 1990 +--- beebenew/prtpage.h Thu Aug 2 17:19:14 1990 +*************** +*** 117,120 **** +--- 117,123 ---- + sp = 0; + fontptr = (struct font_entry*)NULL; ++ #if HPPAINTJET ++ plane = 0; /* reset colour to black */ ++ #endif + break; + +Only in beebenew: shar +diff -wc2 beebe/special.h beebenew/special.h +*** beebe/special.h Thu Mar 29 15:35:27 1990 +--- beebenew/special.h Thu Aug 2 17:19:16 1990 +*************** +*** 1,14 **** +- /* -*-C-*- special.h */ +- /*-->special*/ +- /**********************************************************************/ +- /****************************** special *******************************/ +- /**********************************************************************/ +- +- void +- special(s) /* process TeX \special{} string in s[] */ +- register char *s; +- { +- (void)sprintf(message, +- "special(): TeX \\special{%s} not implemented in this driver",s); +- (void)warning(message); +- } +--- 0 ---- +Only in beebenew: test.aux +Only in beebenew: test.log +diff -wc2 beebe/usage.h beebenew/usage.h +*** beebe/usage.h Tue Mar 19 16:48:10 1991 +--- beebenew/usage.h Thu Aug 2 17:19:18 1990 +*************** +*** 51,54 **** +--- 51,62 ---- + #endif /* HPLASERJET */ + ++ #if HPPAINTJET ++ (void)sprintf(message, ++ "Usage: %s {-a} {-b} {-d#} {-eENVNAME=value} {-ffontsubfile} \ ++ {-l} {-m#} {-o#:#:#} {-o#:#} {-o#} {-p} {-r#} {-x#{units}} {-y#{units}} \ ++ {-z} dvifile(s)", ++ g_progname); ++ #endif /* HPPAINTJET */ ++ + #if POSTSCRIPT + (void)sprintf(message, diff --git a/dviware/dvipj/readme b/dviware/dvipj/readme new file mode 100644 index 0000000000..d5b2004639 --- /dev/null +++ b/dviware/dvipj/readme @@ -0,0 +1,28 @@ +This is a fairly dirty hack of Nelson Beebe's HP InkJet driver +(dvijet) to support colour printing on the HP Paintjet referred to in +TUGboat 11 (1990) p. 652--6; the LaTeX style file upon which the +article is based should be available in the contributed styles +collection. The driver assumes PaintJet transparency mode (which +doesn't make a great deal of difference to paper output, I find). The +output is a little faint with the materials we use, but OK for slides. + +You might also like to investigate the GNU Ghostscript backend for the +PaintJet. v 2.1 will cope at least with dvips-generated PostScript, +it seems, as long as it doesn't use virtual fonts, whereupon the +spacing seems to go wrong. (v 2.1 doesn't have proper save and +restore.) + +You will need Beebe's distribution, v 2.10. If you have the patch +program use `patch <dvipj.patch' to patch a few files for the PaintJet +(incuding the makefile -- be careful) and then do `make dvipj'. If +you don't have patch, you'll have to edit the relevant files by hand +on the basis of the `diff' output in dvipj.patch. You probably need +to generate the 180dpi pixel files to use it. + +-------------------------------------------------------------------- +#include <disclaimer.h> +Snail mail: | JANET: d.love@uk.ac.dl +Dr. David Love, | modern BIT/INTERNET: d.love@dl.ac.uk +SERC Daresbury Laboratory, | old UUCP: ...!ukc!daresbury!d.love +Warrington WA4 4AD, | alternative BITNET: d.love%dl@ukacrl +UK | alternative ARPA: d.love%dl@nsfnet-relay.ac.uk |