danjudd@thor.acc.stolaf.edu (Dan Judd) (01/23/90)
I wrote this a while back so I could fill in the "YOUR NAME HERE" slots next to my office door. I ended up making signs for a large part of the department, plus some for people where my wife works. I would recommend printing it out so you know which strings to change to what. If you want things centered etc you have to do it by hand, I didn't feel like adding code to make it automatic (lazy). Dan Judd danjudd@thor.acc.stolaf.edu Just tryin' to put a bit of PostScript back in comp.lang.postscript :-) ----------------Cut here for PostScript------------------ %! %A Door Sign creator %by Dan Judd % %Change the various strings to what you want %the named constants should be more or less self %explanitory % %User value defs % /fname (First ) def /lname (Last ) def /backstring (Background String ) def /boxht 210 def %/boxwd 150 def /boxwd 360 def /backht boxht 3 mul 100 add def /backwd boxwd 20 add def /backstrht 4 def /backpoint 4 def /shadelight 1 def /shadedark 0 def /shadelevels 33 def /shadexdist 33 def /shadeydist -15 def % %User procedure defs % /line1 (This is Line One!) def /line2 (This is Line Two!) def /phrase {5 60 moveto line1 show 5 20 moveto line2 show }def /phraseoutline { line1 5 60 loutline line2 5 20 loutline }def /box {0 0 moveto 0 boxht rlineto boxwd 0 rlineto 0 boxht -1 mul rlineto closepath stroke stroke} bind def /logo { gsave box .3 setlinewidth /Times-Bold findfont 60 scalefont setfont fname 5 150 loutline lname 5 100 loutline /Times-BoldItalic findfont 40 scalefont setfont /phrase load dshade phraseoutline grestore} bind def % % Begin procedure library set % % usage string x y [ld]outline /loutline { 3 copy 1 setgray moveto true charpath fill 0 setgray moveto false charpath stroke} bind def /doutline { 3 copy 0 setgray moveto true charpath fill 1 setgray moveto false charpath stroke} bind def /background { /Times-Italic findfont backpoint scalefont setfont 0 setgray -10 -10 moveto backwd -10 lineto backwd backht lineto -10 backht lineto -10 -10 lineto fill 1 setgray /strlen backstring stringwidth pop cvi def /numstrings backwd strlen div ceiling cvi 2 add def -10 backstrht backht { dup strlen mod -1 mul 20 sub exch moveto numstrings { backstring show } repeat } for } def %Usage {procedure def that prints}[dl]shade /dshade { gsave /USERPHRASE exch def /xshift shadexdist shadelevels div -1 mul def /yshift shadeydist shadelevels div -1 mul def /grayshift shadelight shadedark sub shadelevels div def /curgray shadelight def shadexdist shadeydist translate shadelevels 1 sub { curgray setgray USERPHRASE /curgray curgray grayshift sub def xshift yshift translate } repeat grestore shadedark setgray USERPHRASE } def /lshade { gsave /USERPHRASE exch def /xshift shadexdist shadelevels div -1 mul def /yshift shadeydist shadelevels div -1 mul def /grayshift shadedark shadelight sub shadelevels div def /curgray shadedark def shadexdist shadeydist translate shadelevels 1 sub { curgray setgray USERPHRASE /curgray curgray grayshift sub def xshift yshift translate } repeat grestore shadelight setgray USERPHRASE } def % %Begin execution % 30 30 translate background logo 0 boxht 25 add translate logo 0 boxht 25 add translate logo showpage