Path: utzoo!attcan!utgpu!watmath!att!dptg!rutgers!cs.utexas.edu!uunet!mcsun!ukc!edcastle!lfcs!ajcd From: ajcd@lfcs.ed.ac.uk (Angus Duggan) Newsgroups: comp.windows.news Subject: Enhanced psview and DVI previewing (Part 1 of 2) Summary: Diffs for psview with scrollbars/box mode Keywords: psview scrollbars DVILASER/PS Message-ID: <466@castle.ed.ac.uk> Date: 21 Sep 89 14:17:53 GMT Sender: root@castle.ed.ac.uk Reply-To: ajcd@lfcs.ed.ac.uk (Angus Duggan) Organization: Laboratory for the Foundations of Computer Science, University of Edinburgh Lines: 925 I've decided to post my psview enhancements (enlargement/reduction, scrollbars, European paper sizes, box mode), and my DVILASER/PS previewing code. If you only want the psview enhancements, you only need the Part 1. Have fun, Angus -- Angus Duggan, Department of Computer Science, | University of Edinburgh, JCMB, | USENET: ajcd@lfcs.ed.ac.uk The King's Buildings, Mayfield Road, | JANET: ajcd@uk.ac.ed.lfcs Edinburgh, EH9 3JZ, Scotland. | OR: ajcd%lfcs.ed.ac.uk@nsfnet-relay.ac.uk #! /bin/sh # This is a shell archive. Remove anything before this line, then feed it # into a shell via "sh file" or similar. To overwrite existing files, # type "sh file -c". # The tool that generated this appeared in the comp.sources.unix newsgroup; # send mail to comp-sources-unix@uunet.uu.net if you want that tool. # If this archive is complete, you will see the following message at the end: # "End of archive 1 (of 2)." # Contents: README MANIFEST psview.c.diff psview.cps.diff # Wrapped by ajcd@cheops on Thu Sep 21 15:04:03 1989 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'README' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'README'\" else echo shar: Extracting \"'README'\" \(9798 characters\) sed "s/^X//" >'README' <<'END_OF_FILE' X X Here are my diffs to psview, which add scrollbars, enlargement and Xreduction, and a "size box". There are a few other minor differences, none of Xwhich should cause problems. X This shar file also contains the necessary files to use psview for Xpreviewing the output of Arbortext's DVILASER/PS driver. X XWARNING: X NO WARRANTY OF ANY KIND IS PROVIDED WITH THIS SOFTWARE. USE AT YOUR OWN XRISK. NO LIABILITY FOR LOSS OF DATA OR DAMAGE IS ACCEPTED BY THE AUTHOR. X XN.B. X This was also my first attempt at using LiteItems and overlay canvases, Xperhaps some experienced NeWS programmer would care to look over this code and Xtell me what (if anything) is wrong with it. X You may do whatever you want to with this stuff, but I would like some Xacknowledgement if you use them in a product. (Please?) X X------------------------------------------------------------------------------- X XInstallation: X To make the new psview, do X X cd /usr/NeWS/clientsrc/client X patch psview.c XUniversity of Edinburgh, JCMB, | USENET: ajcd@lfcs.ed.ac.uk XThe King's Buildings, Mayfield Road, | JANET: ajcd@uk.ac.ed.lfcs XEdinburgh, EH9 3JZ, Scotland. | OR: ajcd%lfcs.ed.ac.uk@nsfnet-relay.ac.uk END_OF_FILE echo shar: NEWLINE appended to \"'README'\" if test 9799 -ne `wc -c <'README'`; then echo shar: \"'README'\" unpacked with wrong size! fi # end of 'README' fi if test -f 'MANIFEST' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'MANIFEST'\" else echo shar: Extracting \"'MANIFEST'\" \(620 characters\) sed "s/^X//" >'MANIFEST' <<'END_OF_FILE' X File Name Archive # Description X---------------------------------------------------------- X README 1 Description of this shar file X MANIFEST 1 The file you are reading X psview.c.diff 1 Diffs to psview for enhancements X psview.cps.diff 1 Diffs to psview for enhancements X dvips.opt 2 DVILASER/PS option file for NeWS previewing X dvips.pro 2 DVILASER/PS prologue file for NeWS previewing X dviview 2 /bin/sh script to preview dvi file X psmung.c 2 Filter to rearrange DVILASER/PS output END_OF_FILE echo shar: NEWLINE appended to \"'MANIFEST'\" if test 621 -ne `wc -c <'MANIFEST'`; then echo shar: \"'MANIFEST'\" unpacked with wrong size! fi # end of 'MANIFEST' fi if test -f 'psview.c.diff' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'psview.c.diff'\" else echo shar: Extracting \"'psview.c.diff'\" \(5286 characters\) sed "s/^X//" >'psview.c.diff' <<'END_OF_FILE' X*** /home/newswin/NeWS1.1/clientsrc/client/psview.c Mon Feb 22 19:00:44 1988 X--- psview.c Thu Sep 21 10:03:48 1989 X*************** X*** 61,66 **** X--- 61,67 ---- X static int box = 1; X static int recolor; X static int ditroff = 0; X+ static int dvips = 0; X static int direction; X X struct point { X*************** X*** 213,218 **** X--- 214,220 ---- X } X while (fgets(line, sizeof line, f)) X if (line[0] == '%') X+ { X if (line[1] == '%') X switch (line[2]) { X /*- case 'E': X*************** X*** 220,226 **** X EndProlog = ftell(f); X break; */ X case 'P': X! if (strncmp(line + 3, "age:", 4) == 0) { X if (npages >= psize) { X if (psize) X pagestart = (int *) realloc(pagestart, (psize = npages * 3 / 2) * sizeof(int)); X--- 222,229 ---- X EndProlog = ftell(f); X break; */ X case 'P': X! if ((strncmp(line + 3, "age", 3) == 0) && X! (line[6] != 's')) { X if (npages >= psize) { X if (psize) X pagestart = (int *) realloc(pagestart, (psize = npages * 3 / 2) * sizeof(int)); X*************** X*** 236,242 **** X break; X } X else if (line[1] == ' ' && line[2] == 'l' && strncmp(line, "% lib/psdit.pro", 15) == 0) X! ditroff = 1; X if (npages > 0) { X if (EndProlog < 0 || pagestart[0] < EndProlog) X EndProlog = pagestart[0]; X--- 239,248 ---- X break; X } X else if (line[1] == ' ' && line[2] == 'l' && strncmp(line, "% lib/psdit.pro", 15) == 0) X! ditroff = 1; X! else if (line[1] == ' ' && line[3] == 'D' && strncmp(line, "% Dvips.pro", 12) == 0) X! dvips = 1; X! } X if (npages > 0) { X if (EndProlog < 0 || pagestart[0] < EndProlog) X EndProlog = pagestart[0]; X*************** X*** 287,293 **** X ps_startpage(); X PumpBytes(f, pagestart[n], pagestart[n + 1]); X ps_endpage(); X! if (notfirst) X ps_damageall(); X notfirst = 1; X X--- 293,299 ---- X ps_startpage(); X PumpBytes(f, pagestart[n], pagestart[n + 1]); X ps_endpage(); X! /* if (notfirst)*/ X ps_damageall(); X notfirst = 1; X X*************** X*** 325,343 **** X ps_defBG(); X } X } X- if (EndProlog > 0) { X- ps_startprolog(); X- PumpBytes(f, 0, EndProlog); X- ps_endprolog(); X- } X- if (ditroff) X- ps_ditroff_fix(); X if (npages < 2) X make_MIN_MAX(); X if (npages >= 2) X make_MAX(); X X! GotoPage(f, 0); X { X char buf[100]; X #ifndef SYSVREF X--- 331,346 ---- X ps_defBG(); X } X } X if (npages < 2) X make_MIN_MAX(); X if (npages >= 2) X make_MAX(); X X! if (EndProlog > 0 && !dvips) { X! ps_startprolog(); X! PumpBytes(f, 0, EndProlog); X! ps_endprolog(); X! } X { X char buf[100]; X #ifndef SYSVREF X*************** X*** 354,359 **** X--- 357,372 ---- X *dest++ = 0; X ps_setupwindow(buf[0] ? buf : "Preview"); X } X+ if (EndProlog > 0 && dvips) { X+ ps_dvips_fix(); X+ ps_startprolog(); X+ PumpBytes(f, 0, EndProlog); X+ ps_endprolog(); X+ } X+ if (ditroff) X+ ps_ditroff_fix(); X+ ps_prolog_done(); X+ GotoPage(f, 0); X while (!psio_error(PostScriptInput) && !psio_eof(PostScriptInput)) X if (get_page_selection(&page_selection)) X GotoPage(f, page_selection - 1); X*************** X*** 367,377 **** X char *filename = 0; /* The file to be previewed */ X char *tempname = 0; /* The name of a temporary file, if we created X * one */ X ProgramName = argv[0]; X! if (argv[1] == NULL) { X printf("%s: Requires PostScript filename.\n",ProgramName ); X exit(0); X! } X while (--argc > 0) X if ((++argv)[0][0] == '-') X switch (argv[0][1]) { X--- 380,393 ---- X char *filename = 0; /* The file to be previewed */ X char *tempname = 0; /* The name of a temporary file, if we created X * one */ X+ char asize; /* the size of A? paper */ X+ short temp; /* for swapping sizes */ X+ X ProgramName = argv[0]; X! /*- if (argv[1] == NULL) { X printf("%s: Requires PostScript filename.\n",ProgramName ); X exit(0); X! } */ X while (--argc > 0) X if ((++argv)[0][0] == '-') X switch (argv[0][1]) { X*************** X*** 390,395 **** X--- 406,442 ---- X ProgramName, argv[0]); X exit(-1); X } X+ break; X+ case 'a': X+ case 'A': X+ asize = argv[0][2]; X+ if (asize < '0' || asize > '5') { X+ fprintf(stderr, "%s: Bad page size `%s'\n", ProgramName, argv[0]); X+ exit(-1); X+ } X+ size.x = 2381; X+ size.y = 3368; X+ while (asize-- > '0') { X+ short temp; X+ temp = size.y; X+ size.y = size.x; X+ size.x = temp / 2; X+ } X+ switch (argv[0][3]) { X+ case 'L': X+ case 'l': X+ temp = size.x; size.x = size.y; size.y = temp; X+ break; X+ case 'P': X+ case 'p': X+ case '\0': X+ break; X+ default: X+ fprintf(stderr, "%s: Bad page orientation `%s'\n", ProgramName, argv[0]); X+ exit(-1); X+ } X+ center.x = size.x / 2; X+ center.y = size.y / 2; X break; X case 'b': X if (!parse_color(&argv[0][2], &FGBG[1])) { END_OF_FILE echo shar: NEWLINE appended to \"'psview.c.diff'\" if test 5287 -ne `wc -c <'psview.c.diff'`; then echo shar: \"'psview.c.diff'\" unpacked with wrong size! fi # end of 'psview.c.diff' fi if test -f 'psview.cps.diff' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'psview.cps.diff'\" else echo shar: Extracting \"'psview.cps.diff'\" \(12841 characters\) sed "s/^X//" >'psview.cps.diff' <<'END_OF_FILE' X*** /home/newswin/NeWS1.1/clientsrc/client/psview.cps Mon Feb 22 19:00:45 1988 X--- psview.cps Thu Sep 21 10:03:49 1989 X*************** X*** 33,64 **** X /BG 1 1 1 rgbcolor def X /errordict 10 dict def X errordict /rangecheck { stop } put X! systemdict /settransfer /pop load def X /settransfer {pop} def X /currenttransfer { { } } def X /currentscreen { 0 0 { } } def X /setscreen { pop pop pop } def X /definefont { exch dup type /keywordtype ne { ( ) cvs cvn } if X! exch definefont } def X /StandardEncoding magic:AdobeSequence def X magic:fontdict /Encoding StandardEncoding put X! /PGC { } def X /DoBox true def X /privudict 200 dict def X /@Dicts 0 array def X! /ps_paint { X! PSCanvas setcanvas X! initmatrix X! clippath pathbbox X h div exch w div min dup scale pop pop X pathbbox 2 div exch 2 div exch translate pop pop X cx neg cy neg translate X FG setcolor X! DoBox { cx w 2 div sub cy h 2 div sub moveto w h rect stroke } if X! /paint PSItem send X FrameBorderColor strokecanvas X! startmatrix concat X! PGC X } def X [1 0 0 1 0 0] setmatrix X cdef ps_ditroff_fix() X--- 33,83 ---- X /BG 1 1 1 rgbcolor def X /errordict 10 dict def X errordict /rangecheck { stop } put X! % systemdict /settransfer /pop load put X /settransfer {pop} def X /currenttransfer { { } } def X /currentscreen { 0 0 { } } def X /setscreen { pop pop pop } def X /definefont { exch dup type /keywordtype ne { ( ) cvs cvn } if X! exch //definefont } def X /StandardEncoding magic:AdobeSequence def X magic:fontdict /Encoding StandardEncoding put X! /PGC { X! cx cy moveto X! /Times-Roman findfont 20 scalefont setfont X! (Please Wait) cshow X! } def X /DoBox true def X+ /PrologDone false def X+ /PSPageW w def X+ /PSPageH h def X /privudict 200 dict def X /@Dicts 0 array def X! /ps_scale { % canvas => - scale and translate canvas X! setcanvas initmatrix clippath pathbbox X h div exch w div min dup scale pop pop X pathbbox 2 div exch 2 div exch translate pop pop X cx neg cy neg translate X+ PSScale PSPageX PSPageY translate dup scale X+ startmatrix concat X+ } def X+ /ps_paint { X+ PSCanvas ps_scale X FG setcolor X! PrologDone { X! DoBox { cx w 2 div sub cy h 2 div sub moveto X! w h rect stroke } if X! /paint PSSlider send X! /paint PSHbar send /paint PSVbar send X! /paint PScycle send X FrameBorderColor strokecanvas X! } if X! % startmatrix concat X! {PGC} stopped { X! cx cy moveto X! /Times-Roman findfont 20 scalefont setfont X! (Page Display Error) cshow X! } if X } def X [1 0 0 1 0 0] setmatrix X cdef ps_ditroff_fix() X*************** X*** 82,89 **** X /new_page { % new page number => - X dup /PageCount exch store X PAGE_TAG tagprint typedprint X! PSItem /ItemValue PageCount put X! /paint PSItem send X } def X /NEXT { PageCount 1 add dup MAX gt {pop} X { new_page } ifelse } def X--- 101,108 ---- X /new_page { % new page number => - X dup /PageCount exch store X PAGE_TAG tagprint typedprint X! PSSlider /ItemValue PageCount put X! /paint PSSlider send X } def X /NEXT { PageCount 1 add dup MAX gt {pop} X { new_page } ifelse } def X*************** X*** 92,98 **** X--- 111,163 ---- X /REDIS { PageCount new_page } def X /FIRST { MIN new_page } def X /LAST { MAX new_page } def X+ /new_scale { /PSPageX PSHbar /ItemValue get X+ PSScale 1 sub 0 max PSPageW mul mul neg def X+ /PSPageY PSVbar /ItemValue get X+ PSScale 1 sub 0 max PSPageH mul mul neg def X+ } def X+ /ENLARGE { {PSScale 1.41 mul /PSScale exch def X+ new_scale paint} win send X+ } def X+ /REDUCE { {PSScale 1.41 div /PSScale exch def X+ new_scale paint} win send X+ } def X+ /NORMAL { {/PSScale 1 def /PSPageX 0 def /PSPageY 0 def X+ paint} win send X+ } def X+ /LEFT { {PScycle /ItemValue get 0 ne X+ {gsave X+ PSOverlay ps_scale currentcursorlocation 2 copy X+ {y0 sub exch x0 sub exch rect X+ x0 y0 x y points2rect /PSdisplay win send} getanimated X+ waitprocess aload pop points2rect X+ /PSBoxH exch def /PSBoxW exch def X+ /PSBoxY exch def /PSBoxX exch def X+ /PSBoxP PageCount def paintov X+ grestore} {NEXT} ifelse} win send X+ } def X+ /MIDDLE { {PScycle /ItemValue get 0 ne PSBoxP PageCount eq and X+ {gsave X+ PSOverlay ps_scale currentcursorlocation 2 copy X+ {y0 sub PSBoxY add exch x0 sub PSBoxX add exch X+ 2 copy moveto PSBoxW PSBoxH rect X+ PSBoxW PSBoxH /PSdisplay win send} getanimated X+ waitprocess aload pop X+ PSBoxY add exch PSBoxX add X+ 4 -1 roll sub /PSBoxX exch def X+ exch sub /PSBoxY exch def paintov X+ grestore} if} win send X+ } def X /EXIT { EXIT_TAG tagprint } def X+ /clearov { PSOverlay ps_scale erasepage } def X+ /paintov { clearov X+ PScycle /ItemValue get 0 ne PSBoxP PageCount eq and { X+ PSBoxX PSBoxY PSBoxW PSBoxH rectpath stroke X+ PSBoxX PSBoxY PSBoxW PSBoxH PSdisplay X+ } { X+ () /printstring PSmessage send X+ } ifelse X+ } def X /paintfr { X win /FrameLabel fr_label put X /paint win send X*************** X*** 101,116 **** X /fr_data name def X % X /PSWindow DefaultWindow X! /PSCanvas null def % the 2 sub windows X! /PSItem null def % X /PageCount 1 def % current page number, initially = 1 X /MIN 1 def % MIN always = 1, MAX sent by client X % X dictbegin X /FrameLabel fr_label def X! /PaintClient { ps_paint } def X /FrameFillColor BG def X /IconHeight 15 def X % X % gsave X % IconFont setfont X--- 166,196 ---- X /fr_data name def X % X /PSWindow DefaultWindow X! /PSCanvas null def % the image sub window X! /PSScale 1 def % image scale X! /PSPageX 0 def % image translation (in) X! /PSPageY 0 def X! /PSOverlay null def % box overlay X! /PSBoxX 0 def X! /PSBoxY 0 def X! /PSBoxW 0 def X! /PSBoxH 0 def X! /PSBoxP -1 def X! /PSSlider null def % page slider X! /PSHbar null def % scroll bars X! /PSVbar null def % scroll bars X! /PScycle null def % box cycle X! /PSmessage null def % box message X /PageCount 1 def % current page number, initially = 1 X /MIN 1 def % MIN always = 1, MAX sent by client X % X dictbegin X /FrameLabel fr_label def X! /PaintClient { clearov ps_paint paintov } def X /FrameFillColor BG def X /IconHeight 15 def X+ /HbarLen 0 def X+ /VbarLen 0 def X % X % gsave X % IconFont setfont X*************** X*** 131,136 **** X--- 211,219 ---- X % (Redisplay) { REDIS } X (First Page) { FIRST } X (Last Page) { LAST } X+ (Enlarge) { ENLARGE } X+ (Reduce) { REDUCE } X+ (Normal Size) { NORMAL } X (Quit) { EXIT } X ] /new DefaultMenu send def X dictend X*************** X*** 147,176 **** X { page new_page } ifelse X dictend X } def X % Override two methods: the Client create & shape methods X /CreateClientCanvas { X % create the ClientCanvas: X /CreateClientCanvas super send X % Create the slider item: X! /Item_len 200 def X! /PSItem (Page Number: ) [ MIN MAX PageCount ] X /Right {ItemValue /PSset win send} X! ClientCanvas Item_len 0 /new SliderItem send X dup /ItemFrame 1 put X! 20 5 /move 3 index send store X X! % Activate the slider: X! [PSItem] forkitems pop X % Create the PostScript subwindow: X /PSCanvas ClientCanvas newcanvas store X PSCanvas /Mapped true put X } def X /ShapeClientCanvas { X % [Re] Shape the ClientCanvas: X /ShapeClientCanvas super send X ClientCanvas setcanvas X! % Move the slider: X! 20 5 /move PSItem send X % [Re] Shape the PostScript subwindow: X gsave X ClientCanvas setcanvas clippath pathbbox X--- 230,324 ---- X { page new_page } ifelse X dictend X } def X+ /PSHscroll { % frac => - X+ PSScale 1 sub 0 max PSPageW mul mul neg X+ dup PSPageX eq X+ {pop} {/PSPageX exch def paint} ifelse X+ } def X+ /PSVscroll { % frac => - X+ PSScale 1 sub 0 max PSPageH mul mul neg X+ dup PSPageY eq X+ {pop} {/PSPageY exch def paint} ifelse X+ } def X+ /PSdisplay { % x0 y0 x y => - X+ PScycle /ItemValue get { % scale values X+ 1 {4 {1.389 mul cvi 100 div 4 1 roll} repeat} %inches X+ 2 {4 {cvi 4 1 roll} repeat} %points X+ 3 {4 {3.527 mul cvi 100 div 4 1 roll} repeat} %centimetres X+ } case X+ (X=% Y=% W=% H=%) [6 2 roll] /printf PSmessage send X+ } def X % Override two methods: the Client create & shape methods X /CreateClientCanvas { X % create the ClientCanvas: X /CreateClientCanvas super send X+ % ClientCanvas /Transparent false put X+ % ClientCanvas /Mapped true put X+ % set up width factors: X+ /SliderLen 150 def X+ /HbarLen 200 def X+ /VbarLen 200 def X+ /CycleLen 60 def X+ /MessageLen 225 def X+ X % Create the slider item: X! /PSSlider (Page: ) [ MIN MAX PageCount ] X /Right {ItemValue /PSset win send} X! ClientCanvas SliderLen 0 /new SliderItem send X dup /ItemFrame 1 put X! % PSInset 5 /move 3 index send X! store X X! % create scrollbars X! /PSHbar [0 1 .01 .1 null] 0 {ItemValue /PSHscroll win send} X! ClientCanvas 0 HbarLen /new SimpleScrollbar send X! dup /BarVertical? false put X! % PSInset VbarLen PSInset add /move 3 index send X! store X! X! /PSVbar [0 1 .01 .1 null] 1 {ItemValue /PSVscroll win send} X! ClientCanvas 0 VbarLen /new SimpleScrollbar send X! % HbarLen PSInset add PSItemHeight /move 3 index send X! store X! X! % create box cycle X! /PScycle (Box: ) [(off) (in) (pt) (cm)] X! /Right {/paintov win send} X! ClientCanvas CycleLen 0 /new CycleItem send X! dup /ItemFrame 1 put X! % PSInset HbarLen add CycleLen 2 div sub 5 /move 3 index send X! store X! X! % create message box X! /PSmessage () () /Right {} X! ClientCanvas MessageLen 0 /new MessageItem send X! % HbarLen 2 div PSInset add MessageLen 2 div sub 5 /move 3 index send X! store X! X! % Activate the controls X! [PSSlider PSHbar PSVbar PScycle PSmessage] forkitems pop X % Create the PostScript subwindow: X /PSCanvas ClientCanvas newcanvas store X PSCanvas /Mapped true put X+ /PSOverlay PSCanvas createoverlay store X } def X /ShapeClientCanvas { X % [Re] Shape the ClientCanvas: X /ShapeClientCanvas super send X ClientCanvas setcanvas X! % Move the controls X! gsave X! ClientCanvas setcanvas clippath pathbbox points2rect X! PSInset sub PSItemHeight sub /VbarLen exch def X! PSInset 2 mul sub /HbarLen exch def X! pop pop X! grestore X! PSInset 5 /move PSSlider send X! PSInset VbarLen PSItemHeight add HbarLen 16 /reshape PSHbar send X! HbarLen PSInset add PSItemHeight 16 VbarLen /reshape PSVbar send X! PSInset HbarLen add CycleLen sub 5 /move PScycle send X! PSInset HbarLen add CycleLen sub MessageLen sub PSInset sub 5 X! /move PSmessage send X % [Re] Shape the PostScript subwindow: X gsave X ClientCanvas setcanvas clippath pathbbox X*************** X*** 177,182 **** X--- 325,332 ---- X PSInset PSItemHeight translate X PSItemHeight sub PSInset sub exch PSInset 2 mul sub exch X rectpath PSCanvas reshapecanvas X+ % PSCanvas setcanvas clippath PSOverlay reshapecanvas X+ /PSOverlay PSCanvas createoverlay store X grestore X } def X classend def X*************** X*** 197,205 **** X 62 { LAST } def % '>' X 46 { LAST } def % ',' X 36 { LAST } def % '$' X 3 { EXIT } def % ^C X 113 {EXIT } def % 'q' X! /LeftMouseButton {NEXT} def X end X X { % done as a separate process so the file reading X--- 347,359 ---- X 62 { LAST } def % '>' X 46 { LAST } def % ',' X 36 { LAST } def % '$' X+ 101 { ENLARGE } def % 'e' X+ 114 { REDUCE } def % 'r' X+ 110 { NORMAL } def % 'n' X 3 { EXIT } def % ^C X 113 {EXIT } def % 'q' X! /LeftMouseButton {LEFT} def X! /MiddleMouseButton {MIDDLE} def X end X X { % done as a separate process so the file reading X*************** X*** 214,219 **** X--- 368,374 ---- X /Name 200 dict dup begin X 0 1 127 { dup def } for X /LeftMouseButton dup def X+ /MiddleMouseButton dup def X end def X /Action /DownTransition def X /Canvas currentcanvas def X*************** X*** 242,247 **** X--- 397,406 ---- X { countdictstack @DictHeight le { exit } if X end } loop X def X+ cdef ps_dvips_fix() X+ {PSCanvas ps_scale} win send X+ cdef ps_prolog_done() X+ /PrologDone true def X cdef ps_startprolog() X /@DictHeight countdictstack def X privudict begin END_OF_FILE echo shar: NEWLINE appended to \"'psview.cps.diff'\" if test 12842 -ne `wc -c <'psview.cps.diff'`; then echo shar: \"'psview.cps.diff'\" unpacked with wrong size! fi # end of 'psview.cps.diff' fi echo shar: End of archive 1 \(of 2\). cp /dev/null ark1isdone MISSING="" for I in 1 2 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked both archives. rm -f ark[1-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0 Angus Duggan, Department of Computer Science, | University of Edinburgh, JCMB, | USENET: ajcd@lfcs.ed.ac.uk The King's Buildings, Mayfield Road, | JANET: ajcd@uk.ac.ed.lfcs Edinburgh, EH9 3JZ, Scotland. | OR: ajcd%lfcs.ed.ac.uk@nsfnet-relay.ac.uk