%!PS-Adobe-3.0 EPSF-3.0 %%Creator: Tk Canvas Widget %%For: msp %%Title: Window .x80edcf8.c %%CreationDate: Thu Aug 8 13:49:09 2002 %%BoundingBox: 115 319 497 473 %%Pages: 1 %%DocumentData: Clean7Bit %%Orientation: Portrait %%DocumentNeededResources: font Courier-Bold %%EndComments %%BeginProlog 50 dict begin % This is a standard prolog for Postscript generated by Tk's canvas % widget. % RCS: @(#) $Id: x.ps,v 1.1.1.1 2002-11-25 10:47:48 ggeiger 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 % Define the array ISOLatin1Encoding (which specifies how characters are % encoded for ISO-8859-1 fonts), if it isn't already present (Postscript % level 2 is supposed to define it, but level 1 doesn't). systemdict /ISOLatin1Encoding known not { /ISOLatin1Encoding [ /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 /quoteright /parenleft /parenright /asterisk /plus /comma /minus /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 /quoteleft /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 /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /space /ring /cedilla /space /hungarumlaut /ogonek /caron /space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedillar /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 } if % font ISOEncode font % This procedure changes the encoding of a font from the default % Postscript encoding to ISOLatin1. 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 ISOLatin1Encoding 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 { stringwidth 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 stringwidth 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 { char 0 3 -1 roll put currentpoint gsave char true charpath clip StippleText grestore char stringwidth translate moveto } forall grestore } {show} ifelse 0 spacing neg translate } forall } bind def %%EndProlog %%BeginSetup /CL 2 def %%IncludeResource: font Courier-Bold %%EndSetup %%Page: 1 1 save 306.0 396.0 translate 0.846 0.846 scale -224 -91 translate -1 182 moveto 449 182 lineto 449 0 lineto -1 0 lineto closepath clip newpath gsave /Courier-Bold findfont 10 scalefont ISOEncode setfont 0.000 0.000 0.000 setrgbcolor AdjustColor 231 103 [ (50.3695) ] 13 -0 0 0 false DrawText grestore gsave 230 105 moveto 281 105 lineto 285 101 lineto 285 88 lineto 230 88 lineto 230 105 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 230 89 moveto 7 0 rlineto 0 -1 rlineto -7 0 rlineto closepath 0 setlinejoin 2 setlinecap 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 230 105 moveto 7 0 rlineto 0 -1 rlineto -7 0 rlineto closepath 0 setlinejoin 2 setlinecap 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave /Courier-Bold findfont 10 scalefont ISOEncode setfont 0.000 0.000 0.000 setrgbcolor AdjustColor 231 125 [ (set $1) ] 13 -0 0 0 false DrawText grestore gsave 230 127 moveto 278 127 lineto 274 123 lineto 274 114 lineto 278 110 lineto 230 110 lineto 230 127 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 230 111 moveto 7 0 rlineto 0 -1 rlineto -7 0 rlineto closepath 0 setlinejoin 2 setlinecap 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 230 127 moveto 7 0 rlineto 0 -0.999999999999993 rlineto -7 0 rlineto closepath 0 setlinejoin 2 setlinecap 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave /Courier-Bold findfont 10 scalefont ISOEncode setfont 0.000 0.000 0.000 setrgbcolor AdjustColor 16 103 [ (150) ] 13 -0 0 0 false DrawText grestore gsave 15 105 moveto 38 105 lineto 42 101 lineto 42 88 lineto 15 88 lineto 15 105 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 15 89 moveto 7 0 rlineto 0 -1 rlineto -7 0 rlineto closepath 0 setlinejoin 2 setlinecap 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 15 105 moveto 7 0 rlineto 0 -1 rlineto -7 0 rlineto closepath 0 setlinejoin 2 setlinecap 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave /Courier-Bold findfont 10 scalefont ISOEncode setfont 0.000 0.000 0.000 setrgbcolor AdjustColor 16 148 [ (r frequency) ] 13 -0 0 0 false DrawText grestore gsave 15 150 moveto 94 150 lineto 94 133 lineto 15 133 lineto 15 150 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 15 134 moveto 7 0 rlineto 0 -1 rlineto -7 0 rlineto closepath 0 setlinejoin 2 setlinecap 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave /Courier-Bold findfont 10 scalefont ISOEncode setfont 0.000 0.000 0.000 setrgbcolor AdjustColor 16 125 [ (set $1) ] 13 -0 0 0 false DrawText grestore gsave 15 127 moveto 63 127 lineto 59 123 lineto 59 114 lineto 63 110 lineto 15 110 lineto 15 127 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 15 111 moveto 7 0 rlineto 0 -1 rlineto -7 0 rlineto closepath 0 setlinejoin 2 setlinecap 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 15 127 moveto 7 0 rlineto 0 -0.999999999999993 rlineto -7 0 rlineto closepath 0 setlinejoin 2 setlinecap 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave /Courier-Bold findfont 10 scalefont ISOEncode setfont 0.000 0.000 0.000 setrgbcolor AdjustColor 29 79 [ (s frequency) ] 13 -0 0 0 false DrawText grestore gsave 28 81 moveto 107 81 lineto 107 64 lineto 28 64 lineto 28 81 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 28 81 moveto 7 0 rlineto 0 -1 rlineto -7 0 rlineto closepath 0 setlinejoin 2 setlinecap 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave /Courier-Bold findfont 10 scalefont ISOEncode setfont 0.000 0.000 0.000 setrgbcolor AdjustColor 231 148 [ (r pitch) ] 13 -0 0 0 false DrawText grestore gsave 230 150 moveto 281 150 lineto 281 133 lineto 230 133 lineto 230 150 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 230 134 moveto 7 0 rlineto 0 -1 rlineto -7 0 rlineto closepath 0 setlinejoin 2 setlinecap 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave /Courier-Bold findfont 10 scalefont ISOEncode setfont 0.000 0.000 0.000 setrgbcolor AdjustColor 240 79 [ (s pitch) ] 13 -0 0 0 false DrawText grestore gsave 239 81 moveto 290 81 lineto 290 64 lineto 239 64 lineto 239 81 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 239 81 moveto 7.00000000000006 0 rlineto 0 -1 rlineto -7.00000000000006 0 rlineto closepath 0 setlinejoin 2 setlinecap 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave /Courier-Bold findfont 10 scalefont ISOEncode setfont 0.000 0.000 0.000 setrgbcolor AdjustColor 231 57 [ (mtof) ] 13 -0 0 0 false DrawText grestore gsave 230 59 moveto 260 59 lineto 260 42 lineto 230 42 lineto 230 59 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 230 43 moveto 7 0 rlineto 0 -1 rlineto -7 0 rlineto closepath 0 setlinejoin 2 setlinecap 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 230 59 moveto 7 0 rlineto 0 -1.00000000000003 rlineto -7 0 rlineto closepath 0 setlinejoin 2 setlinecap 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave /Courier-Bold findfont 10 scalefont ISOEncode setfont 0.000 0.000 0.000 setrgbcolor AdjustColor 231 33 [ (s frequency) ] 13 -0 0 0 false DrawText grestore gsave 230 35 moveto 309 35 lineto 309 18 lineto 230 18 lineto 230 35 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 230 35 moveto 7 0 rlineto 0 -1 rlineto -7 0 rlineto closepath 0 setlinejoin 2 setlinecap 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave /Courier-Bold findfont 10 scalefont ISOEncode setfont 0.000 0.000 0.000 setrgbcolor AdjustColor 16 33 [ (s pitch) ] 13 -0 0 0 false DrawText grestore gsave 15 35 moveto 66 35 lineto 66 18 lineto 15 18 lineto 15 35 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 15 35 moveto 7 0 rlineto 0 -1 rlineto -7 0 rlineto closepath 0 setlinejoin 2 setlinecap 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave /Courier-Bold findfont 10 scalefont ISOEncode setfont 0.000 0.000 0.000 setrgbcolor AdjustColor 16 57 [ (ftom) ] 13 -0 0 0 false DrawText grestore gsave 15 59 moveto 45 59 lineto 45 42 lineto 15 42 lineto 15 59 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 15 43 moveto 7 0 rlineto 0 -1 rlineto -7 0 rlineto closepath 0 setlinejoin 2 setlinecap 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 15 59 moveto 7 0 rlineto 0 -1.00000000000003 rlineto -7 0 rlineto closepath 0 setlinejoin 2 setlinecap 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave /Courier-Bold findfont 10 scalefont ISOEncode setfont 0.000 0.000 0.000 setrgbcolor AdjustColor 77 103 [ (<-- set frequency) ] 13 -0 0 0 false DrawText grestore gsave /Courier-Bold findfont 10 scalefont ISOEncode setfont 0.000 0.000 0.000 setrgbcolor AdjustColor 291 102 [ (<-- set MIDI pitch) ] 13 -0 0 0 false DrawText grestore gsave /Courier-Bold findfont 10 scalefont ISOEncode setfont 0.000 0.000 0.000 setrgbcolor AdjustColor 51 56 [ (<-- convert frequency) ] 13 -0 0 0 false DrawText grestore gsave /Courier-Bold findfont 10 scalefont ISOEncode setfont 0.000 0.000 0.000 setrgbcolor AdjustColor 92 41 [ (to "MIDI" pitch) ] 13 -0 0 0 false DrawText grestore gsave /Courier-Bold findfont 10 scalefont ISOEncode setfont 0.000 0.000 0.000 setrgbcolor AdjustColor 269 56 [ (<-- convert "MIDI" pitch) ] 13 -0 0 0 false DrawText grestore gsave 233 88 moveto 242 81 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 233 88 moveto 233 59 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 233 110 moveto 233 105 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 18 88 moveto 31 81 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 18 88 moveto 18 59 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 18 133 moveto 18 127 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 18 110 moveto 18 105 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 233 133 moveto 233 127 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 233 42 moveto 233 35 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave 18 42 moveto 18 35 lineto 0 setlinecap 1 setlinejoin 1 setlinewidth [] 0 setdash 0.000 0.000 0.000 setrgbcolor AdjustColor stroke grestore gsave /Courier-Bold findfont 10 scalefont ISOEncode setfont 0.000 0.000 0.000 setrgbcolor AdjustColor 351 43 [ (to frequency) ] 13 -0 0 0 false DrawText grestore restore showpage %%Trailer end %%EOF