%!PS-Adobe-3.0 %%Creator: graphviz version 2.27.20101125.0545 (20101125.0545) %%Title: g %%Pages: (atend) %%BoundingBox: (atend) %%EndComments save %%BeginProlog /DotDict 200 dict def DotDict begin /setupLatin1 { mark /EncodingVector 256 array def EncodingVector 0 ISOLatin1Encoding 0 255 getinterval putinterval EncodingVector 45 /hyphen put % Set up ISO Latin 1 character encoding /starnetISO { dup dup findfont dup length dict begin { 1 index /FID ne { def }{ pop pop } ifelse } forall /Encoding EncodingVector def currentdict end definefont } def /Times-Roman starnetISO def /Times-Italic starnetISO def /Times-Bold starnetISO def /Times-BoldItalic starnetISO def /Helvetica starnetISO def /Helvetica-Oblique starnetISO def /Helvetica-Bold starnetISO def /Helvetica-BoldOblique starnetISO def /Courier starnetISO def /Courier-Oblique starnetISO def /Courier-Bold starnetISO def /Courier-BoldOblique starnetISO def cleartomark } bind def %%BeginResource: procset graphviz 0 0 /coord-font-family /Times-Roman def /default-font-family /Times-Roman def /coordfont coord-font-family findfont 8 scalefont def /InvScaleFactor 1.0 def /set_scale { dup 1 exch div /InvScaleFactor exch def scale } bind def % styles /solid { [] 0 setdash } bind def /dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def /dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def /invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def /bold { 2 setlinewidth } bind def /filled { } bind def /unfilled { } bind def /rounded { } bind def /diagonals { } bind def % hooks for setting color /nodecolor { sethsbcolor } bind def /edgecolor { sethsbcolor } bind def /graphcolor { sethsbcolor } bind def /nopcolor {pop pop pop} bind def /beginpage { % i j npages /npages exch def /j exch def /i exch def /str 10 string def npages 1 gt { gsave coordfont setfont 0 0 moveto (\() show i str cvs show (,) show j str cvs show (\)) show grestore } if } bind def /set_font { findfont exch scalefont setfont } def % draw text fitted to its expected width /alignedtext { % width text /text exch def /width exch def gsave width 0 gt { [] 0 setdash text stringwidth pop width exch sub text length div 0 text ashow } if grestore } def /boxprim { % xcorner ycorner xsize ysize 4 2 roll moveto 2 copy exch 0 rlineto 0 exch rlineto pop neg 0 rlineto closepath } bind def /ellipse_path { /ry exch def /rx exch def /y exch def /x exch def matrix currentmatrix newpath x y translate rx ry scale 0 0 1 0 360 arc setmatrix } bind def /endpage { showpage } bind def /showpage { } def /layercolorseq [ % layer color sequence - darkest to lightest [0 0 0] [.2 .8 .8] [.4 .8 .8] [.6 .8 .8] [.8 .8 .8] ] def /layerlen layercolorseq length def /setlayer {/maxlayer exch def /curlayer exch def layercolorseq curlayer 1 sub layerlen mod get aload pop sethsbcolor /nodecolor {nopcolor} def /edgecolor {nopcolor} def /graphcolor {nopcolor} def } bind def /onlayer { curlayer ne {invis} if } def /onlayers { /myupper exch def /mylower exch def curlayer mylower lt curlayer myupper gt or {invis} if } def /curlayer 0 def %%EndResource %%EndProlog %%BeginSetup 14 default-font-family set_font 1 setmiterlimit % /arrowlength 10 def % /arrowwidth 5 def % make sure pdfmark is harmless for PS-interpreters other than Distiller /pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse % make '<<' and '>>' safe on PS Level 1 devices /languagelevel where {pop languagelevel}{1} ifelse 2 lt { userdict (<<) cvn ([) cvn load put userdict (>>) cvn ([) cvn load put } if %%EndSetup %! SDL shapes for Graphviz/dot in PostScript output mode % FILE % sdl.ps - SDL shapes for Graphviz/dot in PostScript output mode % % USE % All procedures expect to be passed a rectangular bounding box in the % order [upper right, lower right, lower left, upper left, upper right]. % All procedures expect to be used with "peripheries = 0". % % BUGS % The following shapes are currently not implemented: % - frame/system/block/process/procedure/service/procedure, and types thereof % - macro inlet/outlet/call % - exception handler/handle/raise % - decision (suggest use diamond) % - alternative (suggest use triangle) % - internal input/output (suggest stop using historical relics!) % % COPYRIGHT AND PERMISSION NOTICE % Copyright (C) 2005 Cambridge Silicon Radio Ltd.; all rights reserved. % % Permission is hereby granted, free of charge, to any person obtaining % a copy of this software and associated documentation files (the % "Software"), to deal in the Software without restriction, including % without limitation the rights to use, copy, modify, merge, publish, % distribute, sublicense, and/or sell copies of the Software, and to % permit persons to whom the Software is furnished to do so, subject to % the following conditions: % % The above copyright notice and this permission notice shall be % included in all copies or substantial portions of the Software. % % THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, % EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF % MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND % NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE % LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION % OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION % WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. % % Except as contained in this notice, the name of a copyright holder % shall not be used in advertising or otherwise to promote the sale, use % or other dealings in the Software without prior written authorization % of the copyright holder. % % REVISION % #4 /xdef {exch def} bind def % SDL task /sdl_task { 3 1 roll % put filled flag at end 4 ne { stop } if % sanity-check number of sides aload pop newpath moveto lineto lineto lineto pop pop closepath { fill } { stroke } ifelse } bind def % SDL input from right % The indent has lines at 45 degrees % There should be a few spaces at the end of this shape's label /sdl_input_from_right { 9 dict begin 3 1 roll % put filled flag at end 4 ne { stop } if % sanity-check number of sides aload pop /ury xdef /urx xdef /lry xdef /lrx xdef /lly xdef /llx xdef /uly xdef /ulx xdef /h2 ury lry sub 2 div def newpath moveto urx h2 sub ury h2 sub lineto lrx lry lineto llx lly lineto ulx uly lineto closepath { fill } { stroke } ifelse end } bind def % SDL input from left % Similar to SDL input from right % There should be a few spaces at the start of this shape's label /sdl_input_from_left { 9 dict begin 3 1 roll % put filled flag at end 4 ne { stop } if % sanity-check number of sides aload pop /ury xdef /urx xdef /lry xdef /lrx xdef /lly xdef /llx xdef /uly xdef /ulx xdef /h2 uly lly sub 2 div def newpath moveto lrx lry lineto llx lly lineto ulx h2 add ury h2 sub lineto ulx uly lineto closepath { fill } { stroke } ifelse end } bind def % SDL priority input from right % Similar to SDL input from right % The chevrons are displaced by an eighth of the shape height % The filled version is indistinguishable from a non-priority SDL input /sdl_priority_input_from_right { 9 dict begin 3 1 roll % put filled flag at end 4 ne { stop } if % sanity-check number of sides aload pop /ury xdef /urx xdef /lry xdef /lrx xdef /lly xdef /llx xdef /uly xdef /ulx xdef /h2 ury lry sub 2 div def newpath moveto urx h2 sub ury h2 sub lineto lrx lry lineto llx lly lineto ulx uly lineto closepath { fill } { stroke urx h2 4 div sub ury moveto urx h2 sub h2 4 div sub ury h2 sub lineto lrx h2 4 div sub lry lineto stroke } ifelse end } bind def % SDL priority input from left % Similar to SDL priority input from right /sdl_priority_input_from_left { 9 dict begin 3 1 roll % put filled flag at end 4 ne { stop } if % sanity-check number of sides aload pop /ury xdef /urx xdef /lry xdef /lrx xdef /lly xdef /llx xdef /uly xdef /ulx xdef /h2 uly lly sub 2 div def newpath moveto lrx lry lineto llx lly lineto ulx h2 add uly h2 sub lineto ulx uly lineto closepath { fill } { stroke llx h2 4 div add lly moveto ulx h2 add h2 4 div add uly h2 sub lineto ulx h2 4 div add uly lineto stroke } ifelse end } bind def % SDL start % The left and right sides are semicircles % This should be used with "label = " "" /sdl_start { 9 dict begin 3 1 roll % put filled flag at end 4 ne { stop } if % sanity-check number of sides aload pop /ury xdef /urx xdef /lry xdef /lrx xdef /lly xdef /llx xdef /uly xdef /ulx xdef pop pop /r ury lry sub 2 div def newpath urx r sub ury r sub r 90 -90 arcn ulx r add uly r sub r -90 90 arcn closepath { fill } { stroke } ifelse end } bind def % SDL procedure start % Similar to SDL start % The filled version is indistinguishable from an SDL start % This should be used with "label = " "" /sdl_procedure_start { 9 dict begin 3 1 roll % put filled flag at end 4 ne { stop } if % sanity-check number of sides aload pop /ury xdef /urx xdef /lry xdef /lrx xdef /lly xdef /llx xdef /uly xdef /ulx xdef pop pop /r ury lry sub 2 div def newpath urx r sub ury r sub r 90 -90 arcn ulx r add uly r sub r -90 90 arcn closepath { fill } { stroke lrx r sub lry moveto 0 r 2 mul rlineto llx r add lly moveto 0 r 2 mul rlineto stroke } ifelse end } bind def % SDL state/nextstate % The left and right sides are arcs /sdl_state { 12 dict begin 3 1 roll % put filled flag at end 4 ne { stop } if % sanity-check number of sides aload pop /ury xdef /urx xdef /lry xdef /lrx xdef /lly xdef /llx xdef /uly xdef /ulx xdef pop pop /h2 ury lry sub 2 div def /w2 h2 1.5 mul def % was urx ulx sub 2 div def but this made curvature width-dependent /r w2 def /th h2 r dup mul h2 dup mul sub sqrt atan def newpath urx w2 sub ury h2 sub r th th neg arcn ulx w2 add uly h2 sub r -180 th add -180 th sub arcn closepath { fill } { stroke } ifelse end } bind def % SDL output to right % The outdent has lines at 45 degrees % There should be a few spaces at the end of this shape's label /sdl_output_to_right { 9 dict begin 3 1 roll % put filled flag at end 4 ne { stop } if % sanity-check number of sides aload pop /ury xdef /urx xdef /lry xdef /lrx xdef /lly xdef /llx xdef /uly xdef /ulx xdef /h2 ury lry sub 2 div def newpath exch h2 sub exch moveto urx ury h2 sub lineto lrx h2 sub lry lineto llx lly lineto ulx uly lineto closepath { fill } { stroke } ifelse end } bind def % SDL output to left % Similar to SDL output to right % There should be a few spaces at the start of this shape's label /sdl_output_to_left { 9 dict begin 3 1 roll % put filled flag at end 4 ne { stop } if % sanity-check number of sides aload pop /ury xdef /urx xdef /lry xdef /lrx xdef /lly xdef /llx xdef /uly xdef /ulx xdef /h2 ury lry sub 2 div def newpath moveto lrx lry lineto llx h2 add lly lineto ulx ury h2 sub lineto ulx h2 add uly lineto closepath { fill } { stroke } ifelse end } bind def % SDL continuous signal/enabling condition % The chevrons have lines at 45 degrees % There should be a few spaces at the start and end of this shape's label /sdl_condition { 9 dict begin 3 1 roll % put filled flag at end 4 ne { stop } if % sanity-check number of sides aload pop /ury xdef /urx xdef /lry xdef /lrx xdef /lly xdef /llx xdef /uly xdef /ulx xdef /h2 ury lry sub 2 div def newpath exch h2 sub exch moveto urx ury h2 sub lineto lrx h2 sub lry lineto dup llx h2 add lly 3 -1 roll { lineto } { moveto } ifelse ulx uly h2 sub lineto ulx h2 add uly lineto { fill } { stroke } ifelse end } bind def % SDL save % The left and right edges are at about 60 degrees % There should be a few spaces at the start and end of this shape's label /sdl_save { 9 dict begin 3 1 roll % put filled flag at end 4 ne { stop } if % sanity-check number of sides aload pop /ury xdef /urx xdef /lry xdef /lrx xdef /lly xdef /llx xdef /uly xdef /ulx xdef /h3 ury lry sub 3 div def newpath moveto lrx h3 sub lry lineto llx lly lineto ulx h3 add uly lineto closepath { fill } { stroke } ifelse end } bind def % SDL stop % The width of the bounding box is ignored; the lines are set at 45 degrees % This shape cannot be filled % This should be used with "label = """ and "arrowhead = none, headclip = false" /sdl_stop { 7 dict begin { stop } if % make sure not asked to fill this 4 ne { stop } if % sanity-check number of sides aload pop pop pop /lry xdef /lrx xdef /lly xdef /llx xdef /uly xdef pop /h2 uly lly sub 2 div def /mx llx lrx add 2 div def newpath mx h2 add exch moveto pop mx h2 sub lly lineto mx h2 sub uly moveto mx h2 add lry lineto closepath stroke end } bind def % SDL return % The width of the bounding box is ignored; the lines are set at 45 degrees % The filled version is indistinguishable from an SDL connection /sdl_return { 9 dict begin 3 1 roll % put filled flag at end 4 ne { stop } if % sanity-check number of sides aload pop /ury xdef pop /lry xdef /lrx xdef /lly xdef /llx xdef /uly xdef pop pop pop /h2 uly lly sub 2 div 2 sqrt div def /mx llx lrx add 2 div def /my lry ury add 2 div def newpath mx my uly lly sub 2 div 0 360 arc { fill } { stroke mx h2 add my h2 add moveto mx h2 sub my h2 sub lineto mx h2 sub my h2 add moveto mx h2 add my h2 sub lineto stroke } ifelse end } bind def % SDL create % The extra lines are displaced by an eighth of the shape height % The filled version is indistinguishable from an SDL task /sdl_create { 9 dict begin 3 1 roll % put filled flag at end 4 ne { stop } if % sanity-check number of sides aload pop /ury xdef /urx xdef /lry xdef /lrx xdef /lly xdef /llx xdef /uly xdef /ulx xdef /h8 ury lry sub 8 div def newpath moveto lrx lry lineto llx lly lineto ulx uly lineto closepath { fill } { stroke ulx uly h8 sub moveto urx ury h8 sub lineto llx lly h8 add moveto lrx lry h8 add lineto stroke } ifelse end } bind def % SDL call % The extra lines are displaced by an eighth of the shape height % The filled version is indistinguishable from an SDL task % There should be a few spaces at the start and end of this shape's label /sdl_call { 9 dict begin 3 1 roll % put filled flag at end 4 ne { stop } if % sanity-check number of sides aload pop /ury xdef /urx xdef /lry xdef /lrx xdef /lly xdef /llx xdef /uly xdef /ulx xdef /h8 ury lry sub 8 div def newpath moveto lrx lry lineto llx lly lineto ulx uly lineto closepath { fill } { stroke urx h8 sub ury moveto lrx h8 sub lry lineto llx h8 add lly moveto ulx h8 add uly lineto stroke } ifelse end } bind def % SDL text symbol % The corner has a size of twice the H height /sdl_text { 10 dict begin 3 1 roll % put filled flag at end 4 ne { stop } if % sanity-check number of sides aload pop /ury xdef /urx xdef /lry xdef /lrx xdef /lly xdef /llx xdef /uly xdef /ulx xdef /h8 ury lry sub 8 div def newpath moveto /d (H) true charpath flattenpath pathbbox exch pop exch sub exch pop 2 mul def newpath urx ury d sub moveto lrx lry lineto llx lly lineto ulx uly lineto urx d sub ury lineto closepath { fill } { stroke } ifelse urx ury d sub moveto d neg 0 rlineto 0 d rlineto stroke end } bind def % SDL text extension from left % This should be used with "rank = same" /sdl_text_extension_from_left { 3 1 roll % put filled flag at end 4 ne { stop } if % sanity-check number of sides aload pop pop pop moveto lineto lineto lineto { fill } { stroke } ifelse } bind def % SDL text extension from right % This should be used with "rank = same" /sdl_text_extension_from_right { 3 1 roll % put filled flag at end 4 ne { stop } if % sanity-check number of sides aload pop pop pop 8 4 roll moveto lineto lineto lineto { fill } { stroke } ifelse } bind def % SDL comment from left % This should be used with "style = dashed" and "rank = same" /sdl_comment_from_left { sdl_text_extension_from_left } bind def % SDL comment from right % This should be used with "style = dashed" and "rank = same" /sdl_comment_from_right { sdl_text_extension_from_right } bind def % SDL connector % The width of the bounding box is ignored /sdl_connector { 7 dict begin 3 1 roll % put filled flag at end 4 ne { stop } if % sanity-check number of sides aload pop pop pop /lry xdef /lrx xdef /lly xdef /llx xdef /uly xdef pop pop pop /h2 uly lly sub 2 div def /mx llx lrx add 2 div def newpath mx uly h2 sub h2 0 360 arc { fill } { stroke } ifelse end } bind def % SDL set (extension) % The hourglass has a size of twice the H height % There should be a few spaces at the start of this shape's label /sdl_set { 10 dict begin 3 1 roll % put filled flag at end 4 ne { stop } if % sanity-check number of sides aload pop /ury xdef /urx xdef /lry xdef /lrx xdef /lly xdef /llx xdef /uly xdef /ulx xdef /my uly lly add 2 div def newpath moveto /d (H) true charpath flattenpath pathbbox exch pop exch sub exch pop def newpath llx d add my d add moveto ulx d add uly lineto urx ury lineto lrx lry lineto llx d add lly lineto llx d add my d sub lineto dup { closepath fill } { stroke } ifelse llx my d sub moveto d 2 mul dup rlineto d 2 mul neg 0 rlineto d 2 mul dup neg rlineto closepath { fill } { stroke } ifelse end } bind def % SDL reset (extension) % The cross has a size of twice the H height % There should be a few spaces at the start of this shape's label /sdl_reset { 10 dict begin 3 1 roll % put filled flag at end 4 ne { stop } if % sanity-check number of sides aload pop /ury xdef /urx xdef /lry xdef /lrx xdef /lly xdef /llx xdef /uly xdef /ulx xdef /my uly lly add 2 div def newpath moveto /d (H) true charpath flattenpath pathbbox exch pop exch sub exch pop def newpath urx ury moveto lrx lry lineto llx d add lly lineto ulx d add uly lineto closepath { fill } { stroke } ifelse llx my d sub moveto d 2 mul dup rlineto llx d 2 mul add my d sub moveto d 2 mul dup neg exch rlineto stroke end } bind def % SDL export (extension) % The store has a width of twice the H height % There should be a few spaces at the start of this shape's label /sdl_export { 10 dict begin 3 1 roll % put filled flag at end 4 ne { stop } if % sanity-check number of sides aload pop /ury xdef /urx xdef /lry xdef /lrx xdef /lly xdef /llx xdef /uly xdef /ulx xdef /my uly lly add 2 div def newpath moveto /d (H) true charpath flattenpath pathbbox exch pop exch sub exch pop def newpath llx d add my d 2 div add moveto ulx d add uly lineto urx ury lineto lrx lry lineto llx d add lly lineto llx d add my d 2 div sub lineto { closepath fill } { stroke } ifelse llx my d 2 div sub moveto d 2 mul 0 rlineto llx my d 2 div add moveto d 2 mul 0 rlineto stroke end } bind def setupLatin1 %%Page: 1 1 %%PageBoundingBox: 275 302 337 490 %%PageOrientation: Portrait 0 0 1 beginpage gsave 275 302 62 188 boxprim clip newpath 1 1 set_scale 0 rotate 279 307 translate % A gsave 1 setlinewidth 0 0 0 nodecolor [ 54 180 0 180 0 144 54 144 54 180 ] 4 false sdl_procedure_start 0 0 0 nodecolor 14 /Times-Roman set_font 21.5 156.9 moveto 11 (A) alignedtext grestore % B gsave 1 setlinewidth 0 0 0 nodecolor [ 54 108 0 108 0 72 54 72 54 108 ] 4 false sdl_save 0 0 0 nodecolor 14 /Times-Roman set_font 22 84.9 moveto 10 (B) alignedtext grestore % A->B gsave 1 setlinewidth 0 0 0 edgecolor newpath 27 143.83 moveto 27 136.13 27 126.97 27 118.42 curveto stroke 0 0 0 edgecolor newpath 30.5 118.41 moveto 27 108.41 lineto 23.5 118.41 lineto closepath fill 1 setlinewidth solid 0 0 0 edgecolor newpath 30.5 118.41 moveto 27 108.41 lineto 23.5 118.41 lineto closepath stroke grestore % n gsave 1 setlinewidth 0 0 0 nodecolor newpath 54 36 moveto 0 36 lineto 0 0 lineto 54 0 lineto closepath stroke 0 0 0 nodecolor 14 /Times-Roman set_font 25 12.9 moveto 21 (g::n) alignedtext grestore % B->n gsave 1 setlinewidth 0 0 0 edgecolor newpath 27 71.83 moveto 27 64.13 27 54.97 27 46.42 curveto stroke 0 0 0 edgecolor newpath 30.5 46.41 moveto 27 36.41 lineto 23.5 46.41 lineto closepath fill 1 setlinewidth solid 0 0 0 edgecolor newpath 30.5 46.41 moveto 27 36.41 lineto 23.5 46.41 lineto closepath stroke grestore endpage showpage grestore %%PageTrailer %%EndPage: 1 %%Trailer %%Pages: 1 %%BoundingBox: 275 302 337 490 end restore %%EOF