%!PS-Adobe-1.0 %%Title: Crossword Creator output, generated using POSTSCPT.BAT %%Creator: Crossword Creator %%Pages: (atend) %%BoundingBox: 0 0 340 420 %%EndComments % Copyright (c) 1990, Richard L. Siddall. All rights reserved. % IMPORTANT NOTE: You must replace the last two numbers in the Bounding Box % line above with: % cellwidth * width + 4 ; this is the width in points % cellheight * height + 4 ; this is the height in points % Create a frame the same size in Ventura to hold the matrix. % % Crossword procedures /cellheight 16 def /cellwidth 16 def % xboundary - construct the path for the edge of the matrix /xboundary { 0 0 moveto cellwidth width mul 0 rlineto 0 cellheight height mul rlineto cellwidth width mul neg 0 rlineto closepath } def % cell - Construct path for cell outline /cell { 0 cellheight rlineto cellwidth 0 rlineto 0 cellheight neg rlineto cellwidth neg 0 rlineto closepath } def % xcell - takes two strings, the number and the letter /xcell { gsave % Fill cell with white 1 setgray cell fill grestore gsave % Stroke line around cell cell stroke grestore gsave % Place solution letter in center of cell /Helvetica findfont 12 scalefont setfont dup stringwidth pop cellwidth exch sub 2 div cellheight .1 mul rmoveto show grestore gsave % Place solution number in top left of cell /Helvetica findfont 6 scalefont setfont cellwidth .1 mul cellheight .7 mul rmoveto show grestore cellwidth 0 rmoveto % Move to next cell origin } def % bxcell - a blank cell /bxcell { % gsave % cell % gsave % stroke % grestore % currentpoint add 1500 div setgray fill % grestore cellwidth 0 rmoveto % Move to next cell origin } def % newrow - go to the start of the next row down /newrow { cellwidth width mul neg cellheight neg rmoveto } def % Code from PostScript Cookbook Program 15: Filling an area with a pattern. /setuserscreendict 22 dict def setuserscreendict begin /tempctm matrix def /temprot matrix def /tempscale matrix def /concatprocs { /proc2 exch cvlit def /proc1 exch cvlit def /newproc proc1 length proc2 length add array def newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx } def /resmatrix matrix def /findresolution { 72 0 resmatrix defaultmatrix dtransform /yres exch def /xres exch def xres dup mul yres dup mul add sqrt } def end /setuserscreen { setuserscreendict begin /spotfunction exch def /screenangle exch def /cellsize exch def /m tempctm currentmatrix def /rm screenangle temprot rotate def /sm cellsize dup tempscale scale def sm rm m m concatmatrix m concatmatrix pop 1 0 m dtransform /y1 exch def /x1 exch def /veclength x1 dup mul y1 dup mul add sqrt def /frequency findresolution veclength div def /newscreenangle y1 x1 atan def m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt { {neg} /spotfunction load concatprocs /spotfunction exch def } if frequency newscreenangle /spotfunction load setscreen end } def /setpatterndict 18 dict def setpatterndict begin /bitison { /ybit exch def /xbit exch def /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def /mask 1 7 xbit 8 mod sub bitshift def bytevalue mask and 0 ne } def end /bitpatternspotfunction { setpatterndict begin /y exch def /x exch def /xindex x 1 add 2 div bpside mul cvi def /yindex y 1 add 2 div bpside mul cvi def xindex yindex bitison { /onbits onbits 1 add def 1 } { /offbits offbits 1 add def 0 } ifelse end } def /setpattern { setpatterndict begin /cellsz exch def /angle exch def /bwidth exch def /bpside exch def /bstring exch def /onbits 0 def /offbits 0 def cellsz angle /bitpatternspotfunction load setuserscreen {} settransfer offbits offbits onbits add div setgray end } def %%EndProlog %Begin page /inch {72 mul} def % This version of Adobe's "showpattern" uses "xboundary" for the clip path /showpattern { /ang exch def /pat exch def pat 8 1 ang 72 300 32 div div setpattern newpath xboundary closepath fill } def /pat1 def /pat2 <3e418080e3140808> def