%!PS-Adobe-3.0 EPSF-3.0 %%Creator: Tk Canvas Widget %%For: Allen Downey %%Title: Window .-1211895540 %%CreationDate: Mon Jul 2 10:01:49 2007 %%BoundingBox: 196 360 416 432 %%Pages: 1 %%DocumentData: Clean7Bit %%Orientation: Portrait %%EndComments %%BeginProlog /CurrentEncoding [ /space/space/space/space/space/space/space/space /space/space/space/space/space/space/space/space /space/space/space/space/space/space/space/space /space/space/space/space/space/space/space/space /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle /parenleft/parenright/asterisk/plus/comma/hyphen/period/slash /zero/one/two/three/four/five/six/seven /eight/nine/colon/semicolon/less/equal/greater/question /at/A/B/C/D/E/F/G /H/I/J/K/L/M/N/O /P/Q/R/S/T/U/V/W /X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore /grave/a/b/c/d/e/f/g /h/i/j/k/l/m/n/o /p/q/r/s/t/u/v/w /x/y/z/braceleft/bar/braceright/asciitilde/space /space/space/space/space/space/space/space/space /space/space/space/space/space/space/space/space /space/space/space/space/space/space/space/space /space/space/space/space/space/space/space/space /space/exclamdown/cent/sterling/currency/yen/brokenbar/section /dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron /degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered /cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis /Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply /Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls /agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla /egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis /eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide /oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis ] def 50 dict begin % This is a standard prolog for Postscript generated by Tk's canvas % widget. % RCS: @(#) $Id: mkpsenc.tcl,v 1.3 2002/07/19 14:37:21 drh Exp $ % The definitions below just define all of the variables used in % any of the procedures here. This is needed for obscure reasons % explained on p. 716 of the Postscript manual (Section H.2.7, % "Initializing Variables," in the section on Encapsulated Postscript). /baseline 0 def /stipimage 0 def /height 0 def /justify 0 def /lineLength 0 def /spacing 0 def /stipple 0 def /strings 0 def /xoffset 0 def /yoffset 0 def /tmpstip null def /cstringshow { { dup type /stringtype eq { show } { glyphshow } ifelse } forall } bind def /cstringwidth { 0 exch 0 exch { dup type /stringtype eq { stringwidth } { currentfont /Encoding get exch 1 exch put (\001) stringwidth } ifelse exch 3 1 roll add 3 1 roll add exch } forall } bind def % font ISOEncode font % This procedure changes the encoding of a font from the default % Postscript encoding to current system encoding. It's typically invoked just % before invoking "setfont". The body of this procedure comes from % Section 5.6.1 of the Postscript book. /ISOEncode { dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding CurrentEncoding def currentdict end % I'm not sure why it's necessary to use "definefont" on this new % font, but it seems to be important; just use the name "Temporary" % for the font. /Temporary exch definefont } bind def % StrokeClip % % This procedure converts the current path into a clip area under % the assumption of stroking. It's a bit tricky because some Postscript % interpreters get errors during strokepath for dashed lines. If % this happens then turn off dashes and try again. /StrokeClip { {strokepath} stopped { (This Postscript printer gets limitcheck overflows when) = (stippling dashed lines; lines will be printed solid instead.) = [] 0 setdash strokepath} if clip } bind def % desiredSize EvenPixels closestSize % % The procedure below is used for stippling. Given the optimal size % of a dot in a stipple pattern in the current user coordinate system, % compute the closest size that is an exact multiple of the device's % pixel size. This allows stipple patterns to be displayed without % aliasing effects. /EvenPixels { % Compute exact number of device pixels per stipple dot. dup 0 matrix currentmatrix dtransform dup mul exch dup mul add sqrt % Round to an integer, make sure the number is at least 1, and compute % user coord distance corresponding to this. dup round dup 1 lt {pop 1} if exch div mul } bind def % width height string StippleFill -- % % Given a path already set up and a clipping region generated from % it, this procedure will fill the clipping region with a stipple % pattern. "String" contains a proper image description of the % stipple pattern and "width" and "height" give its dimensions. Each % stipple dot is assumed to be about one unit across in the current % user coordinate system. This procedure trashes the graphics state. /StippleFill { % The following code is needed to work around a NeWSprint bug. /tmpstip 1 index def % Change the scaling so that one user unit in user coordinates % corresponds to the size of one stipple dot. 1 EvenPixels dup scale % Compute the bounding box occupied by the path (which is now % the clipping region), and round the lower coordinates down % to the nearest starting point for the stipple pattern. Be % careful about negative numbers, since the rounding works % differently on them. pathbbox 4 2 roll 5 index div dup 0 lt {1 sub} if cvi 5 index mul 4 1 roll 6 index div dup 0 lt {1 sub} if cvi 6 index mul 3 2 roll % Stack now: width height string y1 y2 x1 x2 % Below is a doubly-nested for loop to iterate across this area % in units of the stipple pattern size, going up columns then % across rows, blasting out a stipple-pattern-sized rectangle at % each position 6 index exch { 2 index 5 index 3 index { % Stack now: width height string y1 y2 x y gsave 1 index exch translate 5 index 5 index true matrix tmpstip imagemask grestore } for pop } for pop pop pop pop pop } bind def % -- AdjustColor -- % Given a color value already set for output by the caller, adjusts % that value to a grayscale or mono value if requested by the CL % variable. /AdjustColor { CL 2 lt { currentgray CL 0 eq { .5 lt {0} {1} ifelse } if setgray } if } bind def % x y strings spacing xoffset yoffset justify stipple DrawText -- % This procedure does all of the real work of drawing text. The % color and font must already have been set by the caller, and the % following arguments must be on the stack: % % x, y - Coordinates at which to draw text. % strings - An array of strings, one for each line of the text item, % in order from top to bottom. % spacing - Spacing between lines. % xoffset - Horizontal offset for text bbox relative to x and y: 0 for % nw/w/sw anchor, -0.5 for n/center/s, and -1.0 for ne/e/se. % yoffset - Vertical offset for text bbox relative to x and y: 0 for % nw/n/ne anchor, +0.5 for w/center/e, and +1.0 for sw/s/se. % justify - 0 for left justification, 0.5 for center, 1 for right justify. % stipple - Boolean value indicating whether or not text is to be % drawn in stippled fashion. If text is stippled, % procedure StippleText must have been defined to call % StippleFill in the right way. % % Also, when this procedure is invoked, the color and font must already % have been set for the text. /DrawText { /stipple exch def /justify exch def /yoffset exch def /xoffset exch def /spacing exch def /strings exch def % First scan through all of the text to find the widest line. /lineLength 0 def strings { cstringwidth pop dup lineLength gt {/lineLength exch def} {pop} ifelse newpath } forall % Compute the baseline offset and the actual font height. 0 0 moveto (TXygqPZ) false charpath pathbbox dup /baseline exch def exch pop exch sub /height exch def pop newpath % Translate coordinates first so that the origin is at the upper-left % corner of the text's bounding box. Remember that x and y for % positioning are still on the stack. translate lineLength xoffset mul strings length 1 sub spacing mul height add yoffset mul translate % Now use the baseline and justification information to translate so % that the origin is at the baseline and positioning point for the % first line of text. justify lineLength mul baseline neg translate % Iterate over each of the lines to output it. For each line, % compute its width again so it can be properly justified, then % display it. strings { dup cstringwidth pop justify neg mul 0 moveto stipple { % The text is stippled, so turn it into a path and print % by calling StippledText, which in turn calls StippleFill. % Unfortunately, many Postscript interpreters will get % overflow errors if we try to do the whole string at % once, so do it a character at a time. gsave /char (X) def { dup type /stringtype eq { % This segment is a string. { char 0 3 -1 roll put currentpoint gsave char true charpath clip StippleText grestore char stringwidth translate moveto } forall } { % This segment is glyph name % Temporary override currentfont /Encoding get exch 1 exch put currentpoint gsave (\001) true charpath clip StippleText grestore (\001) stringwidth translate moveto } ifelse } forall grestore } {cstringshow} ifelse 0 spacing neg translate } forall } bind def %%EndProlog %%BeginSetup /CL 2 def %%EndSetup %%Page: 1 1 save 306.0 396.0 translate 0.846 0.846 scale -158 -42 translate 28 84 moveto 288 84 lineto 288 0 lineto 28 0 lineto closepath clip newpath gsave 70 42 moveto 102.360679774998 18.4885899083011 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 102.360679774998 18.4885899083011 moveto 102.360679774998 65.5114100916989 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 102.360679774998 65.5114100916989 moveto 70 42 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 70 42 moveto 102.360679774998 65.511410091699 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 102.360679774998 65.511410091699 moveto 57.6393202250021 80.0422606518062 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 57.6393202250021 80.0422606518062 moveto 70 42 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 70 42 moveto 57.6393202250022 80.0422606518062 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 57.6393202250022 80.0422606518062 moveto 30.0000000000001 42 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 30.0000000000001 42 moveto 70.0000000000001 42 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 70.0000000000001 42 moveto 30.0000000000001 42 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 30.0000000000001 42 moveto 57.6393202250021 3.95773934819377 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 57.6393202250021 3.95773934819377 moveto 70.0000000000001 41.9999999999999 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 70.0000000000001 41.9999999999999 moveto 57.6393202250021 3.95773934819377 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 57.6393202250021 3.95773934819377 moveto 102.360679774998 18.4885899083011 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 102.360679774998 18.4885899083011 moveto 70 42 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 160 41.9999999999999 moveto 194.641016151377 21.9999999999998 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 194.641016151377 21.9999999999998 moveto 194.641016151377 61.9999999999997 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 194.641016151377 61.9999999999997 moveto 160 41.9999999999998 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 160 41.9999999999998 moveto 194.641016151377 61.9999999999999 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 194.641016151377 61.9999999999999 moveto 160 81.9999999999999 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 160 81.9999999999999 moveto 160 41.9999999999999 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 160 41.9999999999999 moveto 160 81.9999999999999 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 160 81.9999999999999 moveto 125.358983848622 62 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 125.358983848622 62 moveto 160 42.0000000000001 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 160 42.0000000000001 moveto 125.358983848622 62.0000000000001 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 125.358983848622 62.0000000000001 moveto 125.358983848622 22.0000000000001 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 125.358983848622 22.0000000000001 moveto 160 42.0000000000001 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 160 42.0000000000001 moveto 125.358983848622 22 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 125.358983848622 22 moveto 160 2.00000000000006 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 160 2.00000000000006 moveto 160 42.0000000000001 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 160 42.0000000000001 moveto 160 2.00000000000006 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 160 2.00000000000006 moveto 194.641016151377 22.0000000000001 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 194.641016151377 22.0000000000001 moveto 160 42.0000000000001 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 250 42.0000000000005 moveto 286.038754716097 24.6446504352984 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 286.038754716097 24.6446504352984 moveto 286.038754716097 59.3553495647031 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 286.038754716097 59.3553495647031 moveto 250 42.0000000000011 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 250 42.0000000000011 moveto 286.038754716096 59.3553495647037 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 286.038754716096 59.3553495647037 moveto 258.900837358252 80.9971164872744 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 258.900837358252 80.9971164872744 moveto 249.999999999999 42.0000000000015 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 249.999999999999 42.0000000000015 moveto 258.900837358252 80.9971164872746 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 258.900837358252 80.9971164872746 moveto 225.06040792565 73.2732592987229 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 225.06040792565 73.2732592987229 moveto 249.999999999999 42.0000000000014 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 249.999999999999 42.0000000000014 moveto 225.060407925649 73.2732592987224 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 225.060407925649 73.2732592987224 moveto 209.999999999998 42.0000000000013 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 209.999999999998 42.0000000000013 moveto 249.999999999998 42.0000000000008 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 249.999999999998 42.0000000000008 moveto 209.999999999998 42 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 209.999999999998 42 moveto 225.060407925649 10.7267407012788 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 225.060407925649 10.7267407012788 moveto 249.999999999999 41.9999999999997 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 249.999999999999 41.9999999999997 moveto 225.06040792565 10.726740701278 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 225.06040792565 10.726740701278 moveto 258.900837358252 3.00288351272661 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 258.900837358252 3.00288351272661 moveto 249.999999999999 41.9999999999995 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 249.999999999999 41.9999999999995 moveto 258.900837358253 3.00288351272675 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 258.900837358253 3.00288351272675 moveto 286.038754716097 24.6446504352977 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 286.038754716097 24.6446504352977 moveto 250 41.9999999999999 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore restore showpage %%Trailer end %%EOF