GrapherdocumentationRichardR.BurtonandKurtVanLehnLastrevised:December27,1983Copyright(c)1982,1983XeroxCorporationLIBRARY>GRAPHERcontainsacollectionoffunctionsandaninterfaceforlayingout,displaying,andedittinggraphs(i.e.,networksofnodesandlinks).Graphshavenodelabelsbutnotlinklabels.Linksaredrawnasstraightlines,withoutarrowheads.Nodelabelscanbeasinglelineoftextorabitmapofarbitrarysize.Therearefacilitiesforhavingactionstriggeredbyselectionofnodesingraphs.Atypicalwaytousethegrapherpackageistoimplementafunctionthatcreatesapartiallyspecifiedgraphthatrepresentssomeuserdata(orcontrol)structure.Forinstance,thebrowserpackage(BROWSER)usesgraphstorepresentfunctioncallingstructures(fromMasterscope).Suchapartiallyspecifiedgraphneedonlyhavethegraphlabelsandthelinksspecified.ItisgiventoLAYOUTGRAPH,alongwithsomeformattinginformation.LAYOUTGRAPHassignsapositiontoeachofthenodes.Thereareformatsforlayingouttrees,latticesandcyclicgraphs.LAYOUTGRAPHreturnsaGRAPHrecord,whichisusuallygiventoSHOWGRAPH.SHOWGRAPHdisplaysagraphinawindow.Displayedgraphsareoftenusedasmenus:selectinganodewiththeleftormiddlebuttoncancauseuser-providedfunctionstobecalledonthatnode.Displayedgraphscanbeeditedusingtherightbutton.Nodescanbeadded,deleted,moved,enlargedorshrunk.Linkscanbeaddedordeleted.Thisdocumentwillfirstdescribethedatastructuresr,theGRAPHandGRAPHNODErecords,thenthelayoutfunctions,thedisplayfunctions,andtheeditingfunctions.TheGraphAgraphisrepresentedbyaGRAPHrecord,whichhasthefollowingfields:GRAPHNODES,DIRECTEDFLG,SIDESFLG,GRAPH.MOVENODEFN,GRAPH.ADDNODEFN,GRAPH.DELETENODEFN,GRAPH.ADDLINKFN,GRAPH.DELETELINKFNandGRAPH.FONTCHANGEFN.GRAPHNODESisalistofgraphnodes,whicharedescribedbelow.DIRECTEDFLGandSIDESFLGareflagswhichcontrolhowlinksaredrawnbetweenthenodes.IfDIRECTEDFLGisNIL,theGrapherwilldraweachlinkinsuchawaythatitdoesnotcrossthenodelabelsofthenodesitrunsbetween.Often,thisleavessomeambiguity,whichissettledbySIDESFLG:IfSIDESFLGisNIL,theGrapherpreferstodrawlinksthatgobetweenthetopandbottomedgesofnodes.IfSIDESFLGisnon-NIL,itpreferstodrawlinksbetweenthesidesofthenodes.IfDIRECTEDFLGisnon-NIL,theedgesarefixed(e.g.,alwaystotheleftedgeofthetonode).Thiscancauselinkstocrossthelabelsofthenodestheyrunbetween.Inthiscase,ifSIDESFLGisNIL,the"from"endofthelinkisattachedtothebottomedgeofthe"from"node;the"to"endofthelinkisattachedtothetopedgeofthe"to"node.IfDIRECTEDFLGisnon-NILandSIDESFLGisnon-NIL,the"from"endofthelinkisattachedtotherightedgeofthe"from"node;the"to"endofthelinkisattachedtotheleftedgeofthe"to"node.Theremainingfieldsgivetheuserhooksintothegrapheditor,whichisdescribedbelow.TheGraphnodesTheGRAPHNODErecordhasthefollowingfieldsofinteresttotheuser:NODELABEL-thethingthatgetsprinted(usingPRIN3)asthenode.Ifthisisabitmap,bitbltisusedinsteadofPRIN3.Thisallowsiconsof q?` p q?` g_p bqm Tb `r ` _(1n &_( ]'E $] \xZ# -@\x [ [ Ys#!# )+/1r416<>,BKEEY X/  &(,/339}@kAEHEIIV U) Rof#%n *-16<>DFQJJU) S uS R# R# P >)"$G%'=.0/M47<=C.IDIDP O !$)o /0?28;8@FFO M[#m%+q15 @E/IIF D   B!#'),007| %!$3 +.:3u64?`DH*JJ>| <( ( "%[',c 2< ;r ; :q :r:: 8 8 7s >R  %),.59# CC7 5 ^+:J:J5 4  (8;;4 2 2 1 1 / f>R"')y04N/ - - ,|  ?#',/25E9?NAFKFGG,| * \F @"&"),--12:578BDHH* )v8U %8',5/ 6;@6DDHJJ#j !_"5!&%f(q*11g259J:gABEH*H*! dqdL #=( +-%/4M8?:=@yBDjFH]H] d r4N $%&; 0C179@BTH*JJ ^qdL #=&*+-269@BErFF^ r6 $Q X X  p+!|#&(-1k56=A hr h   q :oru   s vo%)C*/137    { !$).247: -< "')-05A9::  q?`2arbitrarysizestobeusedasgraphlabels.NODEID-auniqueidentifier.NODEID'sareusedinthelinkfieldsinsteadofusingpointerstothenodesthemselvessothatcircularLispstructurescanbeavoided.NODEID'sareoftenusedaspointerstothestructurerepresentedbythegraph.TONODES-alistofNODEIDS:alinkrunsfromthisnodetoeachnodeinTONODES.FROMNODES-alistofNODEIDS:alinkrunstothisnodefromeachnodeinFROMNODES.NODEPOSITION-thelocationofthecenterofthenode(aPOSITION).NODEFONT-Specifiesthefontinwhichthisnode'slabelwillbedisplayed.ItcanbeanyfontspecificationacceptabletoFONTCREATE,includingaFONTDESCRIPTOR.NODEFONTischangedbygrapheditoperationsLARGERandSMALLER.Whenthishappens,thefontfamilymaybechangedaswellasthesize.BOXNODEFLG-Ifthisfieldisnon-NIL,thenodelabelwillhaveaboxdrawnaroundit.NODEWIDTHandNODEHEIGHT-Normally,thesearesetbygraphertobethewidthandheightofthenode'sNODELABEL.However,iftheuserprovidesfixnumsforthesefields,theirvalueswillbeusedinstead.Thisfeaturecanbeusedtogiveanodealarger-than-normal"margin"arounditslabel.Graphnodescanbecreatedbythecreateoperatorfromtherecordpackageorwiththefollowingfunction:NODECREATE(IDLABELPOSITIONTONODEIDSFROMNODEIDSFONTBOXED?)ThisfunctionreturnsaGRAPHNODEwithNODELABEL=ID,NODELABEL=LABEL,NODEPOSITION=POSITION,NODEFONT=FONTandBOXNODEFLG=BOXED?.Awordonsavinggraphsonfiles:ThegrapherfunctionsuseFASSOC(i.e.,EQnotEQUAL)tofetchagraphnodegivenitsid.Hence,simplydumpingagraphontoafileandreadingitbackinwillonlyworkcorrectlyiftheid'sareatomic.Beforedumpingagraph,itiswisetosettoNILthefieldsthatarenormallycalculatedandfilledinbythegrapherfunctions.Inparticular,unlessspecialprovisionsaremade,theNODELABELandtheNODEFONTfieldswillreadbackinaslitatomswithnameslike{BITMAP}#1,23456or{FONTDESCRIPTOR}#7,2345insteadofrealbitmapsandfontdescriptors.LayingoutaGraphLAYOUTGRAPH(NODELSTROOTIDSFORMATFONTMOTHERDPERSONALDFAMILYD)LAYOUTGRAPH"laysout"apartiallyspecifiedgraphbyassigningpositionstoitsgraphnodes.ItreturnsaGRAPHrecordsuitablefordisplayingwithSHOWGRAPH.TheinputNODELSTisalistofGRAPHNODESthatpartiallyspecifiesagraph:onlytheirNODEID,NODELABEL,andTONODESfieldsneedtobefilledin.Optionalfieldsare:NODEFONT,NODEWIDTHandNODEHEIGHT.TheseoptionalfieldswillbefilledinappropriatelyiftheyareNIL.Allotherfieldswillbeignoredand/oroverwritten.ROOTIDSisalistofthenodeidentifiersofthenodesthatwillbecometheroots.Theotherargumentsareoptionalandcontroltheformatofthelayout.: gs hr h bs# $)b ` ` _c9 !!(*.l/2H4_ ]4"$&&* 273] \ #]%K+ +b2488!\ ZY&E# +-/4Z Y Y W`1a#Q$n'*/-r034W VbsV T T S"zK{%k&),I-0}4 6S Q~bs Q~ O O Nx "a#&R*,Q.2<3 ;CNx L L KrC #r$)+0R35Kr I  ^#2 + 34DI Hl , I-. 67p=[?4?:Hl F "%,-21;3::F EfE,""$')j+.Ef C C B` j u!'*-03a3gB` @ LMjiN {@ ?Z ?Z =s #$+.1L35_:<= ALGeGe4 3B3B 1r 1 0} y ;E$-: 7N;Ah0} /% /% -s x!$-l/$1=9;@A(A(- ,4 %'+._ 8H:?,4 * * ). >5?"a'.069;>aCEI J*J*). '@"G(5)R-f0136;=@oADXGZGZ' &( cXuc !$%+,1;2X368{:A.DGJJ&( $ oS ,"' ..0m 7=;@ GlII$ #"2B\&a*,/3(46v;>CIEE#" !j-F2?36;>A IgIJJoJKK%! 2r 2   PqFPrPP   u!x'Y+2D:Ahu   s i"($,8.4:<1= F\GG ,0 !' '* 457;tBPCDFHH,  *"#<'*-3 = ?FJJ & x_BZ "+D+4f7% AAXEE& r-g %'&D)O+..048\:<AFF  $<a!R$ +|-/m36u8>O@DDGG  )f$?&+,/333   6 q?`c3FORMATcontrolsthegeometryofthelayout.Itisanunorderedlistofatoms.Therearethreebasicformats:COMPACT[thedefault]-Thegraphislayedoutasaforest(asetoftrees)insuchawaythattheminimalamountofscreenspaceisused.FAST-Thegraphislayedoutasaforest,sacrificingscreenspaceforspeed.LATTICE-Thegraphislayedoutasanacyclicdirectedgraph(alattice).Thesebasicformatscomeintheobvioustwoflavors:HORIZONTAL[thedefault]-rootsatleft,linksrunleft-to-right.VERTICAL-rootsatthetop,linksruntop-to-bottom.ThedirectionscanbereversedbyincludingtheatomREVERSEinFORMAT.Thus,forexample,FORMAT=(LATTICEHORIZONTALREVERSE)laysouthorizontallatticesthathavetherootsontheright,withthelinksrunningright-to-left.FORMAT=(VERTICALREVERSE)laysoutverticaltreesthathavetherootsatthebottom,withlinksrunningbottom-to-top.FORMAT=NILlaysouthorizontaltreesthathavetherootsontheleft.LAYOUTGRAPHcreates"virtual"graphnodestoavoiddrawingatangleofmessylinesincaseswherethegraphisnotaforestoralatticetobeginwith.ItmodifiesthenodesofNODELST,whichmayinvolvechangingsomeoftheTONODESfieldstopointtonewnodes.ThemodifiedNODELSTissetintotheGRAPHNODESfieldofanewlycreatedGRAPHrecord,whichisreturnedasthevalueofLAYOUTGRAPH.ThecreationofvirtualnodesdependsonwhetherornotLATTICEisamemberofFORMAT.Theforest(i.e.,non-LATTICE)casewillbedescribedfirst.Nodesarelayedoutbytraversingtheforesttop-down,depth-first.Wheneveranalreadylayedoutnodeisfound,insteadofdrawingalinktoitthatmightcutacrossarbitrarypartsofthegraph,LAYOUTGRAPHcreatesacopyofthenode(sameNODELABEL,differentNODEID,noTONODES),laysitdownand"draws"boxesaroundbothitandtheoriginalnode(bysettingtheirBOXNODEFLGfields).Hence,aboxaroundanodemeansthatitoccursatleasttwiceintheforest.FORMATaddsfewtwiststothisbasicstrategyofusingboxes.Itcanincludeoneorbothoftheseatoms:COPIES/ONLY-onlythenew"virtual"nodesareboxed.Theoriginalisleftunboxed.NOT/LEAVES-Boxingissuppressedwhenthenodehasnodaughters.Forexamples,FORMAT=(COPIES/ONLYNOT/LEAVES)willboxnodesthatarecopiesofnodesthathavedaughters(i.e.,ifyouseeabox,thenodeshasdaughtersthataren'tdrawn).FORMAT=(NOT/LEAVES)willboxbothcopiesandoriginals,butonlywhentheyhavenodaughters.FORMAT=NILboxesoriginalsandcopiesregardlessofprogeny.IfFORMATincludesLATTICE,thenanodethatisthedaughterofmorethanonenodeisnotboxed.Instead,linksfromallitsparentsaredrawntoit.Noattemptismadetoavoiddrawinglinesthroughnodesortominimizelinecrossings.However,inHORIZONTALformat,nodesarepositionedsothat"from"isalwaysleftof"to."Similarconventionsholdfortheotherformats.InVERTICALformat,forinstance,theTONODESofanodearepositionedbeneathit,andtheFROMNODESarepositionedaboveit.Cyclicgraphscannotbedrawnusingthisconvention,ofcourse(howcananodebeleftofitself?).WhenLAYOUTGRAPHdetectsanodethatpointstoitself,directlyorindirectly,itcreatesa"virtual"nodeasdescribedabove,andboxesboththeoriginalandthecopy.IfFORMATincludesCOPIES/ONLY,thenonlythenewlycreatednodeisboxed.  gsIhrJjh bs#U"F&'4(\)+246d:;R?eAEoI*I*b `)` _/r _/ ]s*VV" &4'+O-/04J] \>PL<Y!.#&Q+02\> ZZ Y8 Y8 Wbv!#$)@ 0208W V2V2 T T S,!$3&',1S, QNQ P& P& N3p$&+dN M M K D G!$&=(,1. 6)K J1V!z$'; 00J Hr H G?s d%(S+24&:;>AG&G~G~G? E !(]+2- 4K9,;?WAEMGGIIE D9 -v #B#2h9<>CGfJ.J.D9 B WM2bX"' 1S1 ;j>?@ GXGXB A3 w? !N!!"A3 ? ? >- #')-V23809>AjBFF>- <3i/ L$}&)-S-.46;#<CHHnHn< ;' e&*,//1U4K89E<AHJ!J!;' 9 .H Ze!%*D/4m89?ACGI/I/9 8! 1S{#'-/5G69[?s@AGyII8! 6 $4')+2556W666 5 5 3_ q!%, 34:<AEGG3 2 OHR o#$%(},e.3W9 <>0@EE2 0 h"Y%* 348>@HH0 /  x,U#:&r'*N,15U7>BR, *r * ).s L T  \ o@B%\),0\). ' L T  \&B' &( &( $ L T  \ _ $y(@*.+02q$ #" L T  \ 3#" !r ! Gs r7f % /148;>BD2HrHr G   S!p$&+!-47N;T@z@GHH A Ie!)# *,}/3F6Q9; BC/I^I^A  4])t &}(- ; ;  Kz !%S(){+137:J= @AD`I IdId 5Zz!%P&(e(*01e5A6:@C`HH5 4wo !C') 2k7B;= DFII /!*!: )V,y.04:%:}< C'GJJ/ o#@"6 )5.0;25U>@ GG )(= $T('* 24)8<\?@,CEGII) "+ #$%'*}.0S4 9: ALBiGvHH #M V#'>*v,147:;0 E?GJ J _ ] T = &(+:-/b4<=@BEGG] \ l d!& 0\ Z Z Y  p3# %g+16569=CsHHY W("}R"Q+%03 9.>DGHIIW V8 %+,14I6 =><DJ+J+V T Ot2"0%s+0?58=s@CHHT S  +M!%#&*-/2`69;w<EFHH_IIE DV Oc] #M()-.4:::;=\>ADHJ}J}DV B G"$o'()i)*,-/3]59<4>"DFG%G%B AP'~ }"( *s-/l3_5y7=@@hIIAP ? @%h)#*.k039=@DF"JJ? >J I9*"#,1u39>J < < ;D  V )+~1T38:B> ?&?&;D 9 XS"%I)],-9118:=L>CHIgIg9 8>  "$&*l,.5'; ADiEFF8> 6`"q"O$(+8 6v8# E8H.H.6 58 n %L(c*,/A0^270:B2C JJ/, - ~ @ZJg!Q#(-1$2 9; =hB6EGPII- ,&7,& * * )   ;q#'*8,&/1+369:;>JCHAHA) 'K%2&)-/S178I<BtFG7JBJB' & {  g#=%*,12)5DNEJ$J$$ # XC!# ,&132P5F8;>BYEFH{H{# ! Oc"x#%s+,-/5}6:BEE! /oD "x%7(z)*Q.Z048?W@FI&I&  ;   = _")+.+2S4,6:>E(GG =x!_#*..2g6 8h<|>ACEJ J   0 &&+--/35?:z=9?FI{I{  O $k$&O(,#1^259-=CzF9F9 yN <!Y 'y  r  s").U5(9P9V *E$%)l 1 cX!C"&+  L R /")-147"7(  z q?`[5selects"Addanode"andshouldreturnaNODEorNILifnonewnodeistobeadded.Nodemovingoperationwillbecalledonthenewnodeafteritiscreatetodetermineitsposition.GRAPH.DELETENODEFN(NODEGRAPHWINDOW)calledwhenanodeisdeleted.Beforethisfunctioniscalled,allofthelinkstoorfromthenodearedeleted.GRAPH.ADDLINKFN(FROMTOGRAPHWINDOW)calledwhenalinkisadded.GRAPH.DELETELINKFN(FROMTOGRAPHWINDOW)calledwhenalinkisdeletedwhichcanbeeitherdirectlyorfromdeletinganode.GRAPH.FONTCHANGEFN(HOWNODEGRAPHWINDOW)calledwhentheuseraskedforthelabelonanodetobemadelargerorsmaller.HOWisoneofLARGERorSMALLER.MiscellaneousfunctionsGRAPHREGION(GRAPH)ReturnsthesmallestregioncontainingallofthenodesinGRAPH.LAYOUTSEXPR(SEXPRFORMATFONTMOTHERDPERSONALDFAMILYD)JustlikeLAYOUTGRAPHexceptitgetsitsgraphasas-expressionratherthanalistofGRAPHNODEs.Aformalrecursivedefinitionofitsfirstargumentis:Ifthes-exprisanatom,itsNODELABELwillbeitselfanditwillhavenoTONODEs;elseitisalistanditscarwillbetakenasitsNODELABELanditscdr,whichmustbealistofs-exprs,willbetakenasitsTONODEs.Notethatcirculars-expressionsareallowed.Forexample,thefollowingdisplaysaparsetreeforthesentence"Theprogramdisplaysatree."(SHOWGRAPH(LAYOUTSEXPR'(S(NP(DETthe)(NOUNprogram))(VP(VERBdisplays)(NP(DETa)(NOUNtree))))'(VERTICAL)NIL'(HELVETICA12]RecentChanges*GRAPHER:Extensivelyrevised;newfunctionHARDCOPYGRAPH;nodeformattingextendedGRAPHERhasbeenextensivelyrevised,sothatitusesmuchlessmemoryspacepernode.WhereastheoldGraphercreatedabitmappernode,thenewonedoesn't.Thepriceisthatscrollingmaytakealittlelonger.ToREDISPLAYWaverylargegraphtakestwiceaslongasitusedto(ifyoudon'tlikethis,setCACHE/NODE/LABEL/BITMAPS/FLGtoT).Also,theGRAPHRECORDwaschangedtousehalfasmanyconscells.ThisversionwillnotruninCaroloroldersystemsiftheuserdependsonnodefontsbeingdefaultedtotheDEFAULTFONTfontclass.(HARDCOPYGRAPHGRAPH/WINDOWFILEIMAGETYPETRANS)Producesafilefromaformatedgraph(e.g.,likeSHOWGRAPH,onlyforfiles).IfGRAPH/WINDOWisawindow,HARDCOPYGRAPHwilloperateontheGRAPHpropertyofthewindow.IfthedevicefieldofthefilenameisLPT,thefilewillautomaticallygetsenttotheappropriateprinter.IMAGETYPEiseitherPRESSorINTERPRESS,anddefaultstoINTERPRESS.TRANSisapositioninscreenpointsofthelowerleftcornerofthegraphfromthelowerleftcornerofthepieceofpaper.7( gsIhrJjh bsg$<(p)-/2 2b `}k"""z&5+111` _R@hb"C%&(,]--_ ]r] \ \ Z$b)0p48_9|9Z Y zJ8 &i',S. .&Y Wa"$*W V V T`!:#(/37~7T SS Q~ Q~ O#%+-26(99O Nx'!%*,u//Nx L\yL Kr Kr I$(b-4p8<_g >g @@6 4 24 l &(E*,3?56)8<>9@'D EE4 3V2 #%-A0+1H2358:v<?DA2E FHH3 1h5 (!#$&(]-0,2579@A0DGOGO1 0 $ H L #")7+17*8G<.?ACvII0 . D. -r - + y  #'Y+3;+ *j y P'Z1d;nE !x"O#&#'Y,c3*j ) y P'Z1d;nE !x"O#&#$%&'Y*.5<^) ' y P'Z1d;nE *. 8%;@=BFII X .(*&,5,02m =@fFQGJJX  t;N!$&}(*|.B/3 :R?@C=F_F_ Rh"$J& 137R   L u #w&/#4NL c%"9%(M 2)5+7E; ;b< HII F   %P'J).46+8>>s?AFvIIF   [= (n*-/j1 9}>k>G,HH @   &' 11r6v78>\?DHJ_J_@  O!p"D$(q*/L03=7 8= =e=k  q?`6(DISPLAYGRAPHGRAPHSTREAMCLIP/REGTRANS)PutthespecifiedgraphonSTREAM(whichcanbeanyimagestream)withcoordinatestranslatedtoTRANS.SomestreamsmightalsoimplementCLIP/REGasaclippingregion.Thisisprimarilyanefficiencyhackforthedisplay.GRAPHERnowallowsnodestobe"boxed"withbordersofarbitraryshadesandwidths.Bordersworkforregularlabelsandbitmaplabels,butnotforimageobjectlabels.TheoldgraphnodefieldBOXNODEFLGhasbeenrenamedNODEBORDER.Ittakesthefollowingvalues:NILnoborder,asbeforeTblackborder,1pixelwide,asbefore0noborder1,2,3...blackborderofthegivenwidth-1,-2...whiteborderofthegivenwidth(ws)wherewisafixpandsisatextureorashade;yieldsaborderwwidefilledwiththegivenshades.Anewgraphnodefield,NODELABELSHADE,containsthebackgroundshadeofthenode.ThisallowsGRAPHERtorememberwhenanodeisinverted.Whenanodeisdisplayed,thelabelareaforthenodeisfirstpaintedasspecifiedbyNODELABELSHADE,thenthelabelisprintedinINVERTmode.Thisdoesnotapplytolabelsthatarebitmapsorimageobjects.Thelegalvaluesforthefieldare:NIL(sameasWHITESHADE),T(sameasBLACKSHADE),atexture,orabitmap.(RESET/NODE/BORDER)(RESET/NODE/LABELSHADE)Thesefunctionsresettheappropriatefieldsinthenode.Ifisadisplaystreamorawindow,theoldnodewillbeerasedandthenewnodewillbedisplayed.Changingthebordermaychangethesizeofthenode,inwhichcasethelinestoandfromthenodewillberedrawn.TheentiregraphmustbeavailabletoRESET/NODE/BORDERforthispurpose,eithersuppliedastheargumentorobtainedfromtheGRAPHpropertyof,ifitisawindow.BothfunctionstaketheatomINVERTasaspecialvalueforand.Theyreadthenode'scurrentborderorshade,calculatewhatwouldbeneededtoinvertit,anddoso.LAYOUTGRAPHpreviouslyuseda1-pixelblackboxtomarkcertainnodesinordertoindicatewhereithadsnappedlinks.Thatisstillthedefaultaction.However,theappearanceofmarkednodescanbecontrolledbyadding(MARK....)totheFORMATargumentofLAYOUTGRAPH.Thetailof(MARK....)isapropertylist.IfthepropertylistisNIL,markingissuppressedaltogether.IfaBORDERpropertyisspecified,thevaluewillbeusedastheNODEBORDERofmarkednodes.IfaLABELSHADEpropertyisspecified,itsvaluewillbeusedonthemarkednodes.Ofcourse,youcanspecifybothaBORDERandNODELABELproperty.LAYOUTGRAPHwillread,butnotchange,thefieldsNODEBORDERandNODELABELSHADEofthenodesgivenit(exceptforthemarkednodes,ofcourse).Thus,ifoneisplanningoninstallingblackbordersaroundthenodesafterthenodeshavebeenlayedout,itsagoodideatogiveLAYOUTGRAPHnodesthathavewhiteborders.Thiswillcausethenodestobelayedoutfarenoughapartthatwhenyoublackentheborderslater,thelabelsofadjacentnodeswillnotbeoverwritten.Whenagraphnodeiscreatedbytherecordpackage,thedefaultvaluesarenowtakenfromthevalueofthefollowingvariables:DEFAULT.GRAPH.NODEBORDER,DEFAULT.GRAPH.NODELABELSHADE,andDEFAULT.GRAPH.NODEFONT.GRAPHERinitializesthesetoNIL.Togetthebenefitsofthisnewfeature,theuserwillhavetorecompilefunctionsthatcreategraphnodesFLIPNODEnowinvertsaregionthatis1pixelbiggerallaroundthanthenode'sregion.Thismakesitpossibletoseeblackbordersafterthenodehasbeenflipped.LAYOUTGRAPHtakesanewformattoken.AddingREVERSE/DAUGHTERStothelistofformatitemswillreflecthorizontalgraphsvertically,andverticalgraphshorizontally.=k gs hr h bs b `  (--` _ p!%(Q*?,1669, A GIUIU_ ]Z &./06W;%;}>?EGG] \ kM,\ Z Z Y i? -&(.?/5:m=,BB]GGY W c}at3$U&)#+= 3b78/:=KDGGW V { **+/28,4&,. 6;<? BCTFaJJHl Fy@]!#M),)-.2:3 :a<@CJEdGGF Ef  x.E1q37/8=h>DDHHHEf C p4G!u&(,22f508<?AsD~GFIIC B`( I}!~ , -'2T459B` @ @ ?Z%+18?Z ="(p.= =B9FMII9N 7 m#%(a.X2T89<=AH II7 6H"} m"(q)*, -(236n<?BEE6H 4O9"%++/e249>C*DImIm4 3Bv ?$&%(d*^,G3B 1 1 0<   /$(+>,0X59Y:>@7EII0< .  K:!%*s*13s ;`<BFPII. -6 ; n"$_*02 =>(>AJCEII-6 + M ^ "$',- 5 <='>O?lEE+ *0 !%\')) 35B:\>?V@~AA*0 ( n# "&(*.H0B27CFMII( '*!X$*'* % % $$ 77%'u+0 5X8 EGIsIs$$ "40J!&a'--1257<> DHH" !<!| W$'+~/92348;=)@@!  :"((,.l249/:<@nBDJJ  `',#'\)-/`539s;>B@0 G    f!(%+.927Z9<@CF:II    l0JJ   !!g( .24"7 7d9i;>CEGJJ ,t "(+0 7   (*J!"r#&+S- 2517<.@ATDaHII * "d%(,0 } }  !%X%*:<\>@BrFJJ w \ k/ "%P*H/ 6 w  I q?` HELVETICA ~GACHA  HELVETICA ~GACHA  # 0 ; 2Hj/KI){ERIS}HARMONY>LIBRARY>GRAPHER.TED;3SANNELLA17-Dec-84 14:59:09