ImagerandInterpressinterfacesasofFebruary13,1985Vector23ImagerTransformation5ImagerFont9ImagerPath12ImagerPixelArray15ImagerColor17Imager20ImagerOps27ImagerPD28ImagerTypeface29ImagerFontPrivate30ImagerPixelArrayPrivate31ImagerColorPrivate32ImagerColorOperatorPrivate33ImagerPrivate34ImagerState35Prop40AISFileFormat41StrikeFontFormat44PrePressFontFormat46PDFileFormat50PDFileWriter54PDFileReader57ImagerPixelMap60ImagerFrameBuffer64ImagerManhattan65ImagerScanConverter67ImagerStroke69ImagerPixelRow70ImagerSampler72ImagerDevice74p^ g"  q[ g rUxU#$S`xS`#$Px P#$Nix Ni#$KxK#$Isx Is#$FxF#$D|xD|#$BxB#$?x ?#$= x= #$:x:#$8x8#$5x5#$3x 3#$0x 0#$.&x.&#$+x +#$)/x)/#$&x&#$$8x $8#$!x !#$Ax A#$x #$KxK#$x#$TxT#$x #$]x ]#$ x #$ fx f#$TVm$2ImagerPDDevice76ImagerRasterPrivate77ImagerMaskCache79IPMaster84Interpress94RealExtras95ShortRational96IPInterpreter97IPBase104IPImage106IPImager109index111******************************************************sg/Er_7x _7#$\x\#$ZAxZA#$WxW#$UKx UK#$Rx R#$PUx PU#$Mx M#$K_xK_#$HxH#$FixFi#$CxC#$ g6TVm$i3Vector2.mesaCopyright(C)1984,1985byXeroxCorporation.Allrightsreserved.DougWyatt,February1,19852:01:50pmPSTThisinterfacedefinesatwodimensionalvectortype,andseveralusefulvectoroperations.Vector2:CEDARDEFINITIONS~BEGINVEC:TYPE~MACHINEDEPENDENTRECORD[x,y:REAL];Add:PROC[v1,v2:VEC]RETURNS[VEC];InlineAdd:PROC[v1,v2:VEC]RETURNS[VEC]~INLINE{RETURN[[v1.x+v2.x,v1.y+v2.y]]};Sum,v1+v2.Sub:PROC[v1,v2:VEC]RETURNS[VEC];InlineSub:PROC[v1,v2:VEC]RETURNS[VEC]~INLINE{RETURN[[v1.x-v2.x,v1.y-v2.y]]};Difference,v1-v2.Neg:PROC[v:VEC]RETURNS[VEC];InlineNeg:PROC[v:VEC]RETURNS[VEC]~INLINE{RETURN[[-v.x,-v.y]]};Negative,-v.Mul:PROC[v:VEC,s:REAL]RETURNS[VEC];InlineMul:PROC[v:VEC,s:REAL]RETURNS[VEC]~INLINE{RETURN[[v.x*s,v.y*s]]};Multiplicationbyascalar,sv.Div:PROC[v:VEC,s:REAL]RETURNS[VEC];InlineDiv:PROC[v:VEC,s:REAL]RETURNS[VEC]~INLINE{RETURN[[v.x/s,v.y/s]]};Divisionbyascalar,v/s.MulC:PROC[v1,v2:VEC]RETURNS[VEC];InlineMulC:PROC[v1,v2:VEC]RETURNS[VEC]~INLINE{RETURN[[v1.x*v2.x,v1.y*v2.y]]};Componentwisemultiplication.DivC:PROC[v1,v2:VEC]RETURNS[VEC];InlineDivC:PROC[v1,v2:VEC]RETURNS[VEC]~INLINE{RETURN[[v1.x/v2.x,v1.y/v2.y]]};Componentwisedivision.Dot:PROC[v1,v2:VEC]RETURNS[REAL];InlineDot:PROC[v1,v2:VEC]RETURNS[REAL]~INLINE{RETURN[v1.x*v2.x+v1.y*v2.y]};Dot(inner)product,v19v2=|v1||v2|cos(theta).Cross:PROC[v1,v2:VEC]RETURNS[REAL];InlineCross:PROC[v1,v2:VEC]RETURNS[REAL]~INLINE{RETURN[v1.x*v2.y-v1.y*v2.x]};Magnitudeofcross(outer)product,|v1Xv2|=|v1||v2|sin(theta).Square:PROC[v:VEC]RETURNS[REAL];InlineSquare:PROC[v:VEC]RETURNS[REAL]~INLINE{RETURN[v.x*v.x+v.y*v.y]};Square,v9v=|v||v|.Length:PROC[v:VEC]RETURNS[REAL];sg/Eq_:x ]x:$ ,{.2[?y #L(5*XxR &*-058< tUMxuUMUMUM tSxuSSPVxtPVPVuPVPV~tPV6uPVPVPVPV$t)PVPV)+tu-"PVPV-t0#xtG>#>#uE>#>#th>#>#uy>#>#Dt>#>#u>#>#t#7>#u>##t%>#>#&u(]>#>#(t>#,u.->#>#/t3>#>#3y6:fq<|~v9-xt9-9-u9-9-t9-9-{u)9-9-tx9-9-Uu9-9-t9-9-u9-9- t%_9-u9-%t(9-9-(tv7xt]77u[77t~77u77Zt77u<77 t"V77u#>77$t(7u7)(t+w77,^u-77.Ut72u3774t8779=3Akq5 Y3h v2xt22u22/t22 u22t 22uh22<t22uj22 =t$2u2%Tt'22(v0xt00u00t00su!00tp00Lu00t!00u"00#t(W0u0(t+ 00+u-}00-t02u3M004!t85008<@q/@+v+xt++u++t ++nu ++tY++u@++t#+u+$+t&z++&v*Ix tP*I*IuN*I*Itq*I*Iup*I*I;t *I*Iu!*I*I"zt'.*Iu*I't)*I*I*u,T*I*I,t*I0u2$*I*I2t7 *I*I7o >1 Dq( $v%Rxt|%R%Ruz%R%R"t%R%R=u%R%Rgt%R%Ru%R%Rt#Z%Ru%R#t& %R%R&ov#x t##u##t##fu##t Q##u!8##" t&#u#'#t)r##*Yu+##,Pt#0u1##2t6##7 = Dq" $vxtuftDut/ut"u#t&&}v xt&  u$  tG  uF  t  u |  !Pt& u &gt)  *hu+  ,^t 0u1  2t6  7D[qeBw=eqe "%' vxtuotMut8ut#u$ t'#'vox t/oou-ootPoouOoot oou!oo"Yt' ouo'pt*oo+qu,oo-gto1u2oo3t7oo8D}q]] & w'q(+#-/2 vxxtxxuxx@txxuxxtxxuxxt!xux!t%xx%jvx tut!u2tui =t$u%St(m)Tu*+Kt/|u01t55@q)w)q)v xt u Jt )u t& u t! u !t% %tGTVm$4Length(magnitude),|v|=SqRt[v9v].Unit:PROC[v:VEC]RETURNS[VEC];Unitvector,v/|v|.END.******************************************************sg/Eq_,7  w$_,q_,%ov[xt#[[u![[tD[[uU[[ t[[u[[_t [u[ vt"[[#(qZ6uVxtVVr g6TVm$w5ImagerTransformation.mesaCopyright(C)1983,1984,1985byXeroxCorporation.Allrightsreserved.FrankCrow,July31,19833:28pmMichaelPlass,February7,198410:44:55amPSTDougWyatt,February1,19852:13:45pmPSTDIRECTORYVector2USING[VEC];ImagerTransformation:CEDARDEFINITIONS~BEGINCreatingtransformationsVEC:TYPE~Vector2.VEC;Transformation:TYPE~REFTransformationRep;TransformationRep:TYPE~RECORD[a,b,c,d,e,f:REAL,tx,ty:INTEGER_0,integerTrans:BOOL_FALSE,--(tx=cANDty=f)form:NAT_0--identifiesspecialformsofa,b,d,e];Atwo-dimensionalaffinetransformation.Representsthe3by3matrix:ad0be0cf1Thevaluesofa,b,c,d,e,farealwayscorrect.Otherfieldsareperformanceaccelerators.Create:PROC[a,b,c,d,e,f:REAL]RETURNS[Transformation];Createsanewtransformation:ad0be0cf1Copy:PROC[m:Transformation]RETURNS[Transformation];Returnsacopyofm.Scale:PROC[s:REAL]RETURNS[Transformation];Createsatransformationwhichscalesbys:s000s0001Scale2:PROC[s:VEC]RETURNS[Transformation];Createsatransformationwhichscalesxbys.x,ybys.y:s.x000s.y0001Rotate:PROC[r:REAL]RETURNS[Transformation];sg/Eq_,x]x:v!#' 02a6/[!$Z5r $E),)X?y #L(5*uU?xtSuSStSuWSS"tSS PHxuPHPHPH!q tNxuNNvKR guHxtHHuHH~tH6uHHtHHDxuDDgtDuDDtD wC xu#C C tC u "C C t%C C Ae &KuAeAetAeAe?u?? t?f> u>>t>u7>>t!>>q">>#+$)x(Y>>)$q>+atVVu VVt\VVuDVVt"VV#.qU?j # )+-S\SS Q\QQ PH\PHPH vKR gJHxtHHuHHVtHH4;u%HH%t*HH+ qF[O!1D\D D0^C \C C 0^Ae\Ae Ae0^v>xt>>u>>:t>>=  )u+^>>,Ft-i>>u.Q>>/$t3>>4;qrv6x t66u66t 66n'u)X66*#t+6u6,tt16u62^t4665q G%S'8-23v @xt @ @u @ @t @ @h)u+R @ @,t- @ @u. @ @/\t4 @u @4st6 @ @7%TVm$8EquivalenttoTransform[Invert[m],v].InverseTransformVec:PROC[m:Transformation,v:VEC]RETURNS[VEC];EquivalenttoTransformVec[Invert[m],v].DRound:PROC[v:VEC]RETURNS[VEC];Roundsbothcomponentsofvtointegers.RoundXY:PROC[m:Transformation,v:VEC]RETURNS[VEC];EquivalenttoInverseTransform[m,DRound[Transform[m,v]]].RoundXYVec:PROC[m:Transformation,v:VEC]RETURNS[VEC];EquivalenttoInverseTransformVec[m,DRound[TransformVec[m,v]]].OtheroperationsFactoredTransformation:TYPE~RECORD[r1:REAL,s:VEC,r2:REAL,t:VEC];RepresentsCat[Rotate[r1],Scale2[s],Rotate[r2],Translate[t]].Factor:PROC[m:Transformation]RETURNS[f:FactoredTransformation];Returnsfsuchthatm=Cat[Rotate[f.r1],Scale2[f.s],Rotate[f.r2],Translate[f.t]].Invert:PROC[m:Transformation]RETURNS[Transformation];Returnsm'sinverse.CloseEnough:PROC[s,t:Transformation,rangeSize:REAL_2000.0]RETURNS[BOOL];ReturnsTRUEifforallpointspsuchthatTransform[p,s]isin[0,0,rangeSize,rangeSize],Transform[p,s]andTransform[p,t]differbyatmost1/4pixel.CloseToTranslation:PROC[s,t:Transformation,rangeSize:REAL_2000.0]RETURNS[BOOL];ReturnsTRUEifforallpointspsuchthatTransformVec[p,s]isin[0,0,rangeSize,rangeSize],TransformVec[p,s]andTransformVec[p,t]differbyatmost1/4pixel.SingularValues:PROC[m:Transformation]RETURNS[VEC];Returnsthesingularvaluesofthenon-translationportionofm.ThesearethesquarerootsoftheeigenvaluesofthesymmetricmatrixMMT,whereMisthenon-translationportion.Thexcomponentisthelargerofthetwo.Thesecorrespondtothemaximumandminimummagnitudesthattheimageofaunitvectorcanachieve.END.******************************************************sg/Eq_, I%v[xt"[[u [[tC[[!+u-[[.[t/[[u0[[1t6N[u[6t9[[9cqZ6 I'vU@xtkU@U@uiU@U@tU@U@uU@U@htU@U@uU@U@t"[U@uU@"t% U@U@%pqSl~ !t"$8vPJxtIPJPJuFPJPJtiPJPJ%u&PJPJ't)PJuPJ)t/ZPJuPJ/t2 PJPJ2oqN I%3mvKTx tKTKTuKTKT,tKTKT 2'Fu(KTKT)t+CKTuKT,t1KTuKT1t4JKTKT4qI I'7vD gj tAhxuAhAhtAh!bu"AhAh#t'AhAh(@u*rAhAh+Ft-AhAh.iu/AhAh0t29AhAh3u5HAhAh6t8bAhAh9>u:AhAh;vttAG22Aq0x00Sq0A"#') 13c46t8o9 /7\ [ n!$ ,-13m58Q:v+xtF++uD++tg++ +!+ u2Y++3-t+57u+<tA+u+BtE0++Eq*Ax*A*ASq*AA"#')4578:<0 (\ ["$&12e579x<?Mv%Kx tm%K%Kuk%K%Kt%K%Ku(7%K%K) t-%Ku%K."t0q%K%K0q#!$"%.|3'47B;$=x?!\] !c#*.x"1)q!1268z9<2 U\!#-%y)e+-T04 ;f= ?W\ !!#&?*8+-/36juxtr g6TVm$9ImagerFont.mesaCopyright(C)1984,1985byXeroxCorporation.Allrightsreserved.MichaelPlass,July31,198410:58:40amPDTDougWyatt,February3,19853:56:27pmPSTDIRECTORYAtomUSING[PropList],BasicsUSING[BYTE],ImagerTransformationUSING[Transformation],RopeUSING[ROPE],Vector2USING[VEC];ImagerFont:CEDARDEFINITIONS~BEGINCharactersandStringsBYTE:TYPE~Basics.BYTE;Char:TYPE~MACHINEDEPENDENTRECORD[set:BYTE,code:BYTE];nullChar:Char~[377B,377B];ACharisa16-bitXeroxcharactercode.SeetheXeroxCharacterCodeStandard.CharProc:TYPE~PROC[char:Char];StringProc:TYPE~PROC[charAction:CharProc];ROPE:TYPE~Rope.ROPE;MapRope:PROC[rope:ROPE,start:INT_0,len:INT_INT.LAST,charAction:CharProc];MapText:PROC[text:REFREADONLYTEXT,start:NAT_0,len:NAT_NAT.LAST,charAction:CharProc];TheseassumetheXeroxstringencoding;theytreat'\377asanescapecode.SeetheXeroxCharacterCodeStandard,section6,andtheInterpressStandard,section2.5.3.FontsVEC:TYPE~Vector2.VEC;Transformation:TYPE~ImagerTransformation.Transformation;Font:TYPE~REFFontRep;FontRep:TYPE~RECORD[name:ROPE,--universalnameofthefont(seeInterpresssection4.9.1)charToClient:Transformation,--transformsfromcharactertoclientcoordinatesimpl:REFFontImplRep,--privateimplementationdatapropList:Atom.PropList_NIL];sg/Eq_:x]x:$ ,{.2["')ZC?y #L(5*uVxtULujULULOtUL SuSStSuNSStMSSQusQQYtQ"PUu>PUPU$tPUuPUPUtPUPU_NuNNtNuWNN"tNN K_x u|K_K_FK_ tIxuIIvFh g WuCxtwCCuuCC.tCsu^CCt]CC?xud??t?uc??t??%6t*$??*u-??-t0??0u4??5rt7??8>"x+q7tu Tq#iuu#$ +.46W: tu>t q  !% /rt& u!m&&"Ut ~TVm$10FontImplRep:TYPE;--ImagerFontPrivate.FontImplRepExtents:TYPE~RECORD[leftExtent,rightExtent,descent,ascent:REAL];CorrectionType:TYPE~{none,space,mask};Find:PROC[name:ROPE]RETURNS[Font];Findthefontwiththegivenhierarchicalname.It'ssafetouseRefText.TrustTextAsRopeforthename.Modify:PROC[font:Font,m:Transformation]RETURNS[Font];Modifyafontbypost-concatenatingthegiventransformation.Scale:PROC[font:Font,s:REAL]RETURNS[Font];EquivalenttoModify[font,ImagerTransformation.Scale[s]].FindScaled:PROC[name:ROPE,scale:REAL]RETURNS[Font];Aconvenience,equivalenttoScale[Find[name],scale].Contains:PROC[font:Font,char:Char]RETURNS[BOOL];ReturnsTRUEiffthecharacterexistsinthefont.NextChar:PROC[font:Font,char:Char]RETURNS[next:Char];Returnsnextcharinthefont,ornullChar.CallwithnullChartogetfirstcharinfont.BoundingBox:PROC[font:Font,char:Char]RETURNS[Extents];Returnsatrueboundingboxforthecharactermask(notnecessarilyastightaspossible).Width:PROC[font:Font,char:Char]RETURNS[VEC];Returnswidthvectorforthecharacter.Amplified:PROC[font:Font,char:Char]RETURNS[BOOL];ReturnsTRUEiffthecharacterisan'amplifying'character.Correction:PROC[font:Font,char:Char]RETURNS[CorrectionType];Returnsthetypeofcorrection,ifany,forthecharacter.Kern:PROC[font:Font,char,successor:Char]RETURNS[VEC];Returnskerningadjustmentbetweencharandsuccessor,or[0,0].NextKern:PROC[font:Font,char,successor:Char]RETURNS[Char];Returnsnextsuccessorthatkernswithchar.Callwithsuccessor=nullChartogetfirstone.Ligature:PROC[font:Font,char,successor:Char]RETURNS[Char];Returnsaligatureformedfromcharandsuccessor,ornullChar.NextLigature:PROC[font:Font,char,successor:Char]RETURNS[Char];sg/Et_,x u_,_,Ut_,_,q_,_,t[xu[[t[Mu[[t[[+ $ ,e1u6E[[7t9_[[9XxuXXtXA"I&WvSxt#SSu!SStDSSuSStSSuSSt#`SS#qQ"! )PH])+.vLxtLLuLLatLL?[ u*LL+vt0*LL0qKR:oA&(,WvHxtHHuHHXtHH7SuHHt!HHu"HH#t(]HH(qF[ I vC x tC C u C C t/C C uC C t C C !u%C C &Wt(C C u)C C *Yt/ C C /oqAe  ?!,v'(*v7xxtI7x7xuF7x7xti7x7x4#ru'H7x7x(t,7x7x-20q5e"$4)~3 "%'v0x t00u00*t00 q"%%u)00*Xt/ 00/oq/2".$V&,0#3 9;u>@c v+xt!++u++tB++ !Ju% ++%t*+u++ t-Z++-q*;F@h! v&xt&&u&&t=&&#Fu'&&'t,&u&-t01&&0q%Ex%E%ESq%EAR#>$& - v!x t!!u!!rt!!Q m#u'!!(t-S!!-q No #$m'^)+ vXxt\XXuYXXt|XXG d &u*XX+zt0-XuX0t2XX3Bq !n&),> 2i4"6vaxtIaauGaatiaa4#Q )u-aa.gt3aa3~q!T%'~"$&)vxtu'tm"" (u,-t2S2q O#&)A /l1%v x to um t ["%w +u/ 0t5A 5^TVm$|11Returnsnextsuccessorthathasaligaturewithchar,Callwithsuccessor=nullChartogetfirstone.StringWidth:PROC[font:Font,string:StringProc]RETURNS[VEC];RopeWidth:PROC[font:Font,rope:ROPE,start:INT_0,len:INT_INT.LAST]RETURNS[VEC];TextWidth:PROC[font:Font,text:REFREADONLYTEXT,start:NAT_0,len:NAT_NAT.LAST]RETURNS[VEC];StringBoundingBox:PROC[font:Font,string:StringProc]RETURNS[Extents];RopeBoundingBox:PROC[font:Font,rope:ROPE,start:INT_0,len:INT_INT.LAST]RETURNS[Extents];TextBoundingBox:PROC[font:Font,text:REFREADONLYTEXT,start:NAT_0,len:NAT_NAT.LAST]RETURNS[Extents];END.******************************************************sg/Eq_,!T#$),]~"$&)vXx tXXuXXotXXM!j% u,XX-t2hXuX2t5XX5}vU@xt0U@U@u.U@U@tQU@U@ u$zU@U@%Nt'U@U@Su5SStSRu SS!tS#;u$SS%2t&SuS'+t*SSu*SS+t0SuS0t31SS3vQxtQQuQQtQQr u#QQ$Q&Q-t0QQPJu5PJPJtPJ.Hu!PJPJ!tPJ$u%PJPJ&t(PJuPJ(ht+LPJPJu,4PJPJ-t1PJuPJ2t4mPJPJ4vKTxt.KTKTu+KTKTtNKTKT"%* u1EKTKT2t6KTKT7/vHxtHHuHH9tHH!%4u(HH)t+HHF^u5F^F^tF^Ru F^F^!tF^#;u$F^F^%2t&F^uF^'+t*F^uF^*t0dF^F^0vDxtSDDuPDDtsDD!>$u($DD(D*D2 t5 DDCu5CCtC.Hu!CC!tC$u%CC&t(CuC(ht+LCCu,4CC-t1CC2u>xt>>r g6mTVm$n12ImagerPath.mesaCopyright(C)1984,1985byXeroxCorporation.Allrightsreserved.DougWyatt,January26,19852:39:43pmPSTDIRECTORYImagerTransformationUSING[Transformation],Vector2USING[VEC];ImagerPath:CEDARDEFINITIONS~BEGINGeneralPathsVEC:TYPE~Vector2.VEC;Transformation:TYPE~ImagerTransformation.Transformation;MoveToProc:TYPE~PROC[p:VEC];LineToProc:TYPE~PROC[p1:VEC];CurveToProc:TYPE~PROC[p1,p2,p3:VEC];ConicToProc:TYPE~PROC[p1,p2:VEC,r:REAL];ArcToProc:TYPE~PROC[p1,p2:VEC];PathProc:TYPE~PROC[moveTo:MoveToProc,lineTo:LineToProc,curveTo:CurveToProc,conicTo:ConicToProc,arcTo:ArcToProc];APathProcdefinesapathbycallingmoveTo,lineTo,...insequence.ItscallersuppliesmoveTo,lineTo,...proceduresandmaintainsp0:VEC_[0,0].moveTo[p]beginsanewtrajectoryatp;p0_p.lineTo[p1]extendsastraightlinefromp0top1;p0_p1.curveTo[p1,p2,p3]extendsacubiccurvefromp0(controlledbyp1,p2)top3;p0_p3.ThecurvesegmentisdefinedbyfourBeziercontrolpoints:p0,p1,p2,p3.Itbeginsatp0,tangentto[p0,p1],andendsatp3,tangentto[p2,p3].Thecurveisboundedbythequadrilateral[p0,p1,p2,p3].conicTo[p1,p2,r]extendsaconiccurvefromp0(controlledbyp1,r)top2;p0_p2.Letmbethemidpointof[p0,p2].Letpbethepointon[m,p1]suchthatLength[m,p]/Length[m,p1]=r.Thecurvestartsatp0,passesthroughp,andendsatp2.Itisalineifr=0;anellipseif0uU>U>tU>uWU>U>"tU>U> Qx uPQQQ tPHxuPHPHvL guIxtIIuII~tI6uIItIIHxuHHgtH$Dx u,DDtDu*DDtMDDu!uDD"@t#DD$'C x u{C C 4tC uzC C !tC C u!uC C "@t#C C $'Adx ucAdAdtAdubAdAd tAdAd"<$u'AdAd't)TAdAd)?x uB??t?uA??td??"u$??%Zt&??'u)=??*t,W??,>x u>>t>^u>>t >>q u#9>>$t%>>%:xu::t:@u::ut::S#. +0 9 #R) 16 q7v   "',124J5R] %b& -0B6ux8559q5;=?4'.TN %Z&(*+2 " $')+t-/1%0 o!S"&),. 57b9;=@ACT/0^'$>&(-,1678t:<-*P2!"%_( *-/e168%:+^_!# +.}02*9  m!%-(,- 46~8:=;>@@%A( s"$&R!m"8$'*z1 9];=%C^; x$)+!-02|#*nW K$c%+],2 3v8j9?A!^_!#(+- L#&R)+u 234 6k8:n[],--beginnewtrajectory:moveTo[lp]line=>[],--straightline:lineTo[lp]curve=>[p1,p2:VEC],--cubiccurve:curveTo[p1,p2,lp]conic=>[p1:VEC,r:REAL],--coniccurve:conicTo[p1,lp,r]arc=>[p1:VEC],--circulararc:arcTo[p1,lp]ENDCASE];ATrajectoryisanimmutablevalue.MoveTocreatesaTrajectory;otheroperationstakeaTrajectory,extenditwithastraightorcurvedsegment,andreturnanewTrajectory.Everytrajectoryhasalastpoint(lp),theendpointofthetrajectory'slastsegment.LastPoint:PROC[t:Trajectory]RETURNS[VEC];Returnt'slp.MoveTo:PROC[p:VEC]RETURNS[Trajectory];Createanewtrajectory,withasinglevertex.Theresult'slpisp0.LineTo:PROC[t:Trajectory,p1:VEC]RETURNS[Trajectory];LineToX:PROC[t:Trajectory,x:REAL]RETURNS[Trajectory];LineToY:PROC[t:Trajectory,y:REAL]RETURNS[Trajectory];LineToextendstwithastraightlinesegment.Theresult'slpisp1.LineToX[t,x]isequivalenttoLineTo[t,[x,t.lp.y]].LineToY[t,y]isequivalenttoLineTo[t,[t.lp.x,y]].CurveTo:PROC[t:Trajectory,p1,p2,p3:VEC]RETURNS[Trajectory];CurveToextendstwithacubiccurvesegment.Theresult'slpisp3.ConicTo:PROC[t:Trajectory,p1,p2:VEC,r:REAL]RETURNS[Trajectory];ConicToextendstwithasegmentofaconicsection.Theresult'slpisp2.ArcTo:PROC[t:Trajectory,p1,p2:VEC]RETURNS[Trajectory];ArcToextendstwithacirculararc.Theresult'slpisp2.MapTrajectory:PROC[trajectory:Trajectory,sg/Ev^xt^^u^^ct^^B\ "$)y 128 A6[Hg "u$D[H[H%-t&P[H[H',+2u4[H[H5t6$[H[H7u:[H[H;t[H>u@[H[H@tB![H[HBvWxtWWuWWQtWW0#%, .u0uWW1^t2WWVR "$)y 128 A6Tg "u$DTT%-t&PTT',+2u4TT5t6$TT7u:TT;tT>u@TT@tB!TTBvO g tLfx uLfLfBtLfuLfLf\tLfR Jx uJJtJpuJJt!JJI( qII" tGputD!r4uiD!D!"tBzZqBzBz  "p ( t@Qq@@# t?+[u?+?+t k?+?+ q!?+?+"$#"&* 24Mt=:u==rt==u U==!)t#n==#q=$&%)- 5 6t;yuQ;;t;;q;W$M'-,u:5t8q6 "&,J01 8<{ B5?\ m$" #U(C).B36q:;>~ 3\3 ?!v$'*,0!14 :=v0IxtS0I0IuP0I0Its0I0IC u!>0I0I"t&0Iu0I'(t)w0I0I)q.v+Sxt+S+Su+S+S)t+S+Su+S+St+S+Su+S+St"+S+S" q) D"@#u'M,:.35)6v&]xt&]&]u&]&]xt&]&]V u"'&]&]"t$v&]&]u%^&]&]&2t*&]&]+H v$xt$$u$$ut$$T u"^$$#2t%x$$u&_$$'3t+$$,I v#xt##u##kt##I u"S###'t%m##u&T##'(t+##,? q!gU9.*^$L&-/4X57[ B !"(* ! "(,vxtu?t z"%"u'(bt)u*+t0T0 q" ##'C-S046C7vxtu>t y"u%B& t'(nu)*t- u-.t3x3 q, %M&(%+138e9;ivxtDuBte4 $!xu#$t&<u'#'t,- q6#&).I/1Mv @x to @ @ul @ @t @ @ " TVm$h14moveTo:MoveToProc,lineTo:LineToProc,curveTo:CurveToProc,conicTo:ConicToProc,arcTo:ArcToProc];MapTrajectoryBackward:PROC[trajectory:Trajectory,moveTo:MoveToProc,lineTo:LineToProc,curveTo:CurveToProc,conicTo:ConicToProc,arcTo:ArcToProc];TrajectoryList:TYPE~LISTOFTrajectory;MapTrajectoryList:PROC[trajectoryList:TrajectoryList,moveTo:MoveToProc,lineTo:LineToProc,curveTo:CurveToProc,conicTo:ConicToProc,arcTo:ArcToProc];Outline:TYPE~REFOutlineRep;OutlineRep:TYPE~RECORD[SEQUENCEsize:NATOFTrajectory];MapOutline:PROC[outline:Outline,moveTo:MoveToProc,lineTo:LineToProc,curveTo:CurveToProc,conicTo:ConicToProc,arcTo:ArcToProc];TrajectoriesFromPath:PROC[path:PathProc,m:Transformation_NIL,action:PROC[Trajectory]];TrajectoryListFromPath:PROC[path:PathProc,m:Transformation_NIL]RETURNS[TrajectoryList];OutlineFromPath:PROC[path:PathProc,m:Transformation_NIL]RETURNS[Outline];END.******************************************************sg/Et_, #' /5 ]g #'u vZ6xt?Z6Z6u=Z6Z6t!`Z6Z6! ([ X #' /5 Vg #'u QxuQQtQ8uQQ~QtQ! vNxtNNuNNgtNNE'L #' /5 KTg #'u F^xuF^F^tF^cuF^F^tF^ Dx ugDD tDueDD9t SDuD tD'{u*DD+D-tD/ vAhx tAhAhuAhAhZtAhAh9Z? #' /5 >g #'u v9#xt9#9#u9#9#At9#9# #7| u"7|7|#t$(7|7|%u)7|7|*>t,7|7|- v4-xt4-4-u4-4-t!4-4-!% 2 u"22#t$(22u%22%t*22*v/7xt/7/7u/7/7t/7/7s!- u"--#t$(--u%--%t*--*u(xt((r g6TVm$15ImagerPixelArray.mesaCopyright(C)1984,1985byXeroxCorporation.Allrightsreserved.MichaelPlass,August1,19849:59:33amPDTDougWyatt,January25,198511:49:28amPSTDIRECTORYAtomUSING[PropList],ImagerTransformationUSING[Transformation],RopeUSING[ROPE];ImagerPixelArray:CEDARDEFINITIONS~BEGINThePixelArraytypeTransformation:TYPE~ImagerTransformation.Transformation;PixelArray:TYPE~REFPixelArrayRep;PixelArrayRep:TYPE~RECORD[sSize,fSize:INT,--slowandfastdimensions(InterpresscallsthesexPixels,yPixels)samplesPerPixel:NAT,--numberofsamplesforeachpixelm:Transformation,--transforms[s,f]coordinatesto"upright"[x,y]coordinatesclass:REFPixelArrayClassRep,--classoperationsdata:REF,--instancedatapropList:Atom.PropList_NIL];ThepixelarraycontainssSize*fSizepixels,sSize*fSize*samplesPerPixelsamples.Asampleisnamedbyatriple:sIN[0..sSize),fIN[0..fSize),iIN[0..samplesPerPixel).PixelArrayClassRep:TYPE;--ImagerPixelArrayPrivate.PixelArrayClassRepGetClass:PROC[pa:PixelArray]RETURNS[ATOM];ReturnsanATOMthatidentifiesthePixelArray'sclass.Sample:TYPE~CARDINAL;GetSample:PROC[pa:PixelArray,s,f:INT,i:NAT_0]RETURNS[Sample];Returnsthesamplevalueatcoordinatess,f,i.MaxSampleValue:PROC[pa:PixelArray,i:NAT]RETURNS[Sample];Returnsthemaximumsamplevaluefortheithsample.GetSample[pa,s,f,i]IN[0..MaxSampleValue[pa,i]]foralls,f.Formoreefficientaccesstosamples,seeImagerPixelArrayPrivate.CreatingpixelarraysROPE:TYPE~Rope.ROPE;FromAIS:PROC[name:ROPE]RETURNS[PixelArray];MakesapixelarrayfromanAISfile.sg/Eq_,x]x:$ ,{.2[K#(*RZ5? #Z(+>uVxtU>ujU>U>OtU> SusSSYtS"Qu>QQ$tQuQQtQQ_NxuNNN tLxuLLvI g@ $tFZxuFZFZgtFZ$C x uC C tC <uC C tC  Adx u?AdAdtAdu>AdAdt",AdAd?Tu5??t@??q??";$ + 2s58>/t>u>>t>>qi>>$&h+j-0t[class:REFConstantColorClassRep,--operationsdata:REF,--instancedatapropList:Atom.PropList_NIL],sampled=>[pa:PixelArray,--thearrayofpixelsum:Transformation,--transformsfromcolortodevicecoordinatescolorOperator:ColorOperator,--mapspixelsintocolorspropList:Atom.PropList_NIL],ENDCASE];ConstantColorClassRep:TYPE;ConstantColor:TYPE~REFColorRep[constant];SampledColor:TYPE~REFColorRep[sampled];black:READONLYConstantColor;--MakeGray[1]white:READONLYConstantColor;--MakeGray[0]MakeGray:PROC[f:REAL]RETURNS[ConstantColor];MakeCIE:PROC[x,y,Y:REAL]RETURNS[ConstantColor];MakeSampledBlack:PROC[pa:PixelArray,um:Transformation,clear:BOOL_FALSE]RETURNS[SampledColor];sg/Eq_,x]x:$ ,{.2[?y #L(5*uXxtVujVVOtV U>uU>U>utU> SusSSYtS"Qu>QQ$tQuQQtQQ_Nx uNNN tLxuLLvI gtFZxuFZFZgtFZ$Dx uDDtD<uC xtC C uC C @tC uC C tC C ?xu??t?Cu??t?>xuG>>t>uE>>t3>>u?=tB"u qt3 q q ]TVm$18MakeSampledColor:PROC[pa:PixelArray,um:Transformation,colorOperator:ColorOperator]RETURNS[SampledColor];ColorOperatorsColorOperator:TYPE~REFColorOperatorRep;ColorOperatorRep:TYPE~RECORD[samplesPerPixel:NAT,class:REFColorOperatorClassRep,data:REF,propList:Atom.PropList_NIL];ColorOperatorClassRep:TYPE;SampleMapProc:TYPE~PROC[CARDINAL]RETURNS[REAL];Mapssamplevaluesintootherarbitraryvalues.PixelProc:TYPE~PROC[NAT]RETURNS[CARDINAL];Returnstheindexedsamplevalueforapixel.ColorOperatorType:PROC[ColorOperator]RETURNS[ATOM];ReturnsanATOMthatidentifiestheColorOperator.ColorFromPixel:PROC[op:ColorOperator,s:PixelProc]RETURNS[Color];Appliesacoloroperator.GrayFromPixel:PROC[op:ColorOperator,s:PixelProc]RETURNS[f:REAL];Appliesacoloroperator,returningagrayvalue.BlackOp:PROC[clear:BOOL]RETURNS[ColorOperator];GrayLinearOp:PROC[sWhite,sBlack:REAL,mapSize:CARDINAL_0,mapProc:SampleMapProc_NIL]RETURNS[ColorOperator];GrayVisualOp:PROC[sWhite,sBlack:REAL,mapSize:CARDINAL_0,mapProc:SampleMapProc_NIL]RETURNS[ColorOperator];GrayDensityOp:PROC[sWhite,sBlack,dWhite,dBlack:REAL,mapSize:CARDINAL_0,mapProc:SampleMapProc_NIL]RETURNS[ColorOperator];ColorDensityOp:PROC[sWhite,sBlack,dWhite,dBlack:REAL,mapSize:CARDINAL_0,mapProc:SampleMapProc_NIL]RETURNS[ColorOperator];sg/Ev_,xtE_,_,uC_,_,tf_,_,!3 (d+R5f ] u[t3[[ vV g<tSx u*SStSu(SStSQxuQQXtQuQQ qt$QQPHuPHPHtPHPHNu3NNtNLuLLtNLLKR u!mKRKR"UtIF[xuF[F[gt F[F[C x uJC C tC uHC C t!kC uC !t(C C u(C C )t.tC uC .t1C C 2TqAdG#(t>x u>>t>u>>t1>u>t >>u >>!t&x>u>&t->>-uqDD$tDuDDtDD_CuCCtCuWCC"tCC p?xv??? t>$xu>$>$v: gt7xu)77t7u'77t7 5x u55Wt5u55qt 5547u34747t47q^4747 %P'x).t2u422t2q?22#'(i- t0u00tN00q*00 *t/@ u!m/@/@"Uq/@#%s*0t-*Jxu*J*Jt*J*Jq*J*J^\t(xu((t((q((?=t%Sxu%S%S_t%S%S #x u##Bt#u##\tv##u###$mt'##' u/##0t2##3GvxtuutSu#;$t(u)&t,-q x  Xq T $ &V+&vxtluit="u%&t("(u+,t-.^voxtoouoo'tooS"u%oo&t(8oou)oo)t.oo/ u1oo2t4oo4jq h[#)A*.L067<? vxtut4"uu''t***v)xt))u))rt))Q$.u()))ht+)),Fq l[ !$`&* 1A4L8=1 {!)%*-TVm$21DoSaveAllrestoreseverything.TransformationsandcurrentpositionTransformation:TYPE~ImagerTransformation.Transformation;VEC:TYPE~Vector2.VEC;--RECORD[x,y:REAL];metersPerInch:REAL~0.0254;metersPerPoint:REAL~0.0003514598;metersPerMica:REAL~0.00001;pointsPerInch:REAL~72.27;pointsPerMica:REAL~0.028452756;micasPerInch:REAL~2540.0;micasPerPoint:REAL~35.14598;inchesPerPoint:REAL~0.013837;inchesPerMica:REAL~0.00039370079;Handyconversionfactors;thefirstthreeareusefulforScaleT.ConcatT:PROC[context:Context,m:Transformation];Premultipliesthecurrenttransformationbym.ScaleT:PROC[context:Context,s:REAL];Scalesthecurrenttransformationbys.EquivalenttoConcatT[context,ImagerTransformation.Scale[s]].Scale2T:PROC[context:Context,s:VEC];EquivalenttoConcatT[context,ImagerTransformation.Scale2[s]].RotateT:PROC[context:Context,a:REAL];EquivalenttoConcatT[context,ImagerTransformation.Rotate[a]].Angleaisindegreescounterclockwise.TranslateT:PROC[context:Context,t:VEC];EquivalenttoConcatT[context,ImagerTransformation.Translate[t]].Move:PROC[context:Context];Translatestheorigintothecurrentposition.Trans:PROC[context:Context];Translatestheorigintothegridpointnearestthecurrentposition.SetXY:PROC[context:Context,p:VEC];SetXYI:PROC[context:Context,x,y:INTEGER];Setsthecurrentposition.SetXYRel:PROC[context:Context,v:VEC];SetXYRelI:PROC[context:Context,x,y:INTEGER];Addsarelativedisplacementtothecurrentposition.sg/Eq_,XD vZ5 gRtVxuVVgtV$uU?xtU?U?uU?U?~tU?6uU?U?tU?U?u {U?U?!Ot%iU?U?%'Yu)U?U?)t,!U?U?,Qx u QQtQ5PHxuPHPHVtPH  Nx uVNN*tNLx uLLtL[KQx u KQKQtKQ4 Ix uoIICtI Hx uHHtHFZxuLFZFZ tFZwDx u DDtDK qC   {"%)+U/D1lv?xt??u??Jt??(v#%-q>  (*v:xt::u::Lt::+x"u#::$^t&::'q9 $&7v I#v4'xtW4'4'uU4'4'tx4'4')"u$:4'4'%t&4'4'&q2 I#v/0xtm/0/0uk/0/0t/0/0?"u$r/0/0%Ft'/0/0'q- I#+x}v(x t((u((t1(($ru%((&t(-(((q& I##v!xt!!u!!zt!!Xq L [J!;%vxtut oqU [J!;$'~, .l3v^xtd^^ub^^ t^^6!u#^^$Ut%^^&<vxtut l"I#u%%t*+'qytvxtjuht<#u%y&Dt'(,vxtutr$P%u''t,-.q p% !#%*ytTVm$r22SetXRel:PROC[context:Context,x:REAL];SetXRelI:PROC[context:Context,x:INTEGER];EquivalenttoSetXYRel[context,x,0]SetYRel:PROC[context:Context,y:REAL];SetYRelI:PROC[context:Context,y:INTEGER];EquivalenttoSetXYRel[context,0,y]TextandspacingcorrectionFont:TYPE~ImagerFont.Font;Char:TYPE~ImagerFont.Char;StringProc:TYPE~ImagerFont.StringProc;ROPE:TYPE~Rope.ROPE;SetFont:PROC[context:Context,font:Font];SetsthefontforsubsequentShowoperations.SetAmplifySpace:PROC[context:Context,amplifySpace:REAL];Setsthescalefactorforwidthsof`amplified'characters.Show:PROC[context:Context,string:StringProc,xrel:BOOL_FALSE];Showsastringofcharactersinthecurrentfont,startingatthecurrentposition.Ifxrel~TRUE,everyothercharmeansSetXRel[context,char.code-128].ShowChar:PROC[context:Context,char:CHAR];Showsan8-bitcharacter(inCharacterSet0).ShowXChar:PROC[context:Context,char:Char];Showsa16-bitXeroxCharacterCode.ShowRope:PROC[context:Context,rope:ROPE,start:INT_0,len:INT_INT.LAST,xrel:BOOL_FALSE];ShowscharactersfromaROPE,usingtheXeroxStringEncoding.ShowText:PROC[context:Context,text:REFREADONLYTEXT,start:NAT_0,len:NAT_NAT.LAST,xrel:BOOL_FALSE];ShowscharactersfromaREFTEXT,usingtheXeroxStringEncoding.StartUnderline:PROC[context:Context];Remembersthestartingxpositionforanunderline.MaskUnderline:PROC[context:Context,dy,h:REAL];MaskUnderlineI:PROC[context:Context,dy,h:INTEGER];DrawsanunderlinefromtheStartUnderlinepointtothecurrentposition.Theunderline'stopisdybelowthecurrentposition;itsheightish.Example:StartUnderline[ctx];ShowRope[ctx,"underlined"];MaskUnderline[ctx,3,1];sg/Ev_,xtw_,_,uu_,_,t_,_,I"u$_,_,%Zt'_,_,(v]xt]]u]]t]]#]u% ]]%ut*K]]*q[ I$c&vXxtmXXujXXtXX>"u$|XX%Pt'XX'vVxtVVuVVtVVu#Ru%VV%jt*@VV*qU> I$c%vPH gYA tLxuNLLtLLKQxudKQKQtKQcIx uIIotI(uHxtHHuHH@tHuHHtHHvDxt@DDu=DDt`DD"&qC y !%@ v?xt??u??2t??"^' u0??1t3??4bq>y"#S$ + v9xt99u99Xt996!%c ,u/990tt93ju4995t8998q7vj !#%*z-2496;35xZ55q}55Z Y#j'2 v2xt22u22;t22g#u'22(Kt*22+<q0!(@*v-xt--u--9t--e$(~q+$@v(xt((u((gt((E$#u'(((t*((&u5&&t&Ru &&!t&#;u$&&%2t&&u&'+t*&&*u.'&&.t&1u3d&&4t7&&7eq%C 2px%C%C pq"%C%C#'<)-1v!xt!!u~!!&t!!R#u'!!'!)!0t3!! Lu5 L Lt L.Hu! L L!t L$u% L L&t( Lu L(ht+L L L,)u/d L L0t L3u4 L L5Yt8> L L8q 2px p"gq%g&C),&0?4fvx tKuItl!q  H%W'~)q vx tuHt'!u')Xu++t.6.vx t'u%tH!')u+, t01Dqg"- +d.027zM m#}%*x0157d# ,[ 5CApBTVm$23CorrectMask:PROC[context:Context];CorrectSpace:PROC[context:Context,v:VEC];Note"correctionspace"opportunitiesforCorrect;seeCorrect,below.Usually,fontcharacterscalltheseimplicitlywithinShow.Space:PROC[context:Context,x:REAL];SpaceI:PROC[context:Context,x:INTEGER];UseSpaceratherthanSetXReltomakecorrectablespacesinsideCorrect.Equivalentto{SetXRel[ctx,x];CorrectSpace[ctx,[x,0]]}.SetCorrectMeasure:PROC[context:Context,v:VEC];SetstheexpectedlinemeasureforsubsequentCorrectoperations.SetCorrectTolerance:PROC[context:Context,v:VEC];SetsthelinemeasuretoleranceforsubsequentCorrectoperations.SetCorrectShrink:PROC[context:Context,correctShrink:REAL];SetstheallowablefractionofspaceshrinkforsubsequentCorrectoperations.Correct:PROC[context:Context,action:PROC];Ensuresreasonablespacingoftext(orothermasks)eveniftheimagerapproximatesfonts.LikeDoSave[context,action],butadjusts"correctionspace"ifnecessarytoensurethatthenetchangeincurrentpositioniswithincorrectToleranceofcorrectMeasure.NotethatCorrectmay(ormaynot)invokeactiontwice.SeetheInterpressStandard,section4.10,andtheIntroductiontoInterpress,section10.DontCorrect:PROC[context:Context,action:PROC,saveCP:BOOL_FALSE];Disablescorrection,callsaction,thenrestorescorrectionstate.IfsaveCP~TRUE,alsosavesandrestorescurrentposition.Forrelevantexamples,seetheIntroductiontoInterpress,section10.6.ColorColor:TYPE~ImagerColor.Color;ColorOperator:TYPE~ImagerColor.ColorOperator;PixelArray:TYPE~ImagerPixelArray.PixelArray;black:READONLYColor;white:READONLYColor;SetColor:PROC[context:Context,color:Color];Setsthecurrentcolor.SetGray:PROC[context:Context,f:REAL];EquivalenttoSetColor[context,MakeGray[f]]SetSampledColor:PROC[context:Context,pa:PixelArray,m:Transformation_NIL,colorOperator:ColorOperator];EquivalenttoSetColor[context,MakeSampledColor[pa,Concat[m,T],colorOperator].sg/Ev_,x tO_,_,uM_,_,tp_,_, !v]x t|]]uy]]!t]] M%u']](Vt)]]*=q[ - '8)_.061Z5 !% +/!vU?xtU?U?uU?U?t!U?U?!au#U?U?#t&)U?U?&vSxtSSuSS*tSSV!u#SS#t(SS)7qQ@8=]#%g) /47PH I" " $S/?1P3avKRxtKRKRuKRKRt:KRKR#){u+)KRKR+t-xKRKR-qIyM#7%_ ,*1 vF[xtF[F[uF[F[tF[F[e$*Bu+F[F[,t.?F[F[.qDyi#{% ,n1O vAextAeAeuAeAetAeAeh"(E u1HAeAe2t4bAeAe4q?y "_%*1,X 3$8 v:xt::u::t::w"Tu&::'t* ::*lq9 I! "%'+=/24:6; CM7x"%) 046@<6=B5\2 %'[+x57X4) #&~*.2 l !&_),I. 6a8 >C$v/2x t/2/2u/2/2t/2/2z%Xu)/2/2*t- /2/2-u35/2/23t/26u8q/2/29+t</2/267M; !$')*.12j :3xo:3:3q:3:3H!n')-05:8xo88(q88n '(,/27v5=xt5=5=u 5=5=t/5=5=#)p 0 6u;i5=5=<"t5=?u@5=5=A^tDC5=5=Dq3 !" v0GxtU0G0GuS0G0Gtv0G0G"'',2/u60G0G7Yt0G:Ou;0G0G<t?z0G0G?q. !#v+Px t+P+Pu+P+P_t+P+P>!'(*5,u-+P+P.t0+P+P1Pv)x t>))u<))t_))"'),*,u.X)).t3))3q($ %*U.b0tv$xt=$$u;$$t^$$#&q# $ (,16:L!d  #m%vnx tnnunnt3nn!'t u/nn0t2nn3Bq |u &htwx uwwztw3 .#vqH!U$*-125 (,S#5&1(}!}" *@,.c 6t2x u;22t29!Xq ;n"%(,0"4H7;S> X 3#%v -&ATVm$e25StrokeStyle:TYPE~RECORD[end:StrokeEnd,joint:StrokeJoint];SetStrokeStyle:PROC[context:Context,strokeStyle:StrokeStyle];Establishesendpointandjointtreatmentforsubsequentstrokes.MaskStroke:PROC[context:Context,path:PathProc,closed:BOOL_FALSE];FillswiththecurrentcolorastrokewithcurrentstrokeWidthandstrokeStylealongapath.Ifclosed~FALSE,putsendpointsoftypestrokeStyle.endatbothendsofeachtrajectory.Ifclosed~TRUE,closeseachtrajectorywithalineifnecessary;therearenoendpoints.MaskStrokeTrajectory:PROC[context:Context,trajectory:Trajectory,closed:BOOL_FALSE];Fillsastrokealongatrajectory.MaskVector:PROC[context:Context,p1,p2:VEC];MaskVectorI:PROC[context:Context,x1,y1,x2,y2:INTEGER];Fillsastrokealongthelinejoiningp1andp2.MaskPixel:PROC[context:Context,pa:PixelArray];Usesapixelarrayasamask;pamusthaveonebitperpixel.MaskBits:PROC[context:Context,base:LONGPOINTER,wordsPerLine:NAT,sMin,fMin,sSize,fSize:NAT,sOffset,fOffset:INTEGER_0];Clip:PROC[context:Context,path:PathProc,parity,exclude:BOOL_FALSE];Clipssubsequentmaskstotheinteriorofaregiondescribed(asforMaskFill)byapath.Ifexclude~TRUE,clipstotheexterioroftheregioninsteadoftheinterior.Thisregionisitselfclippedbyanyclippingregionpreviouslyinforce.ClipOutline:PROC[context:Context,outline:Outline,parity,exclude:BOOL_FALSE];Clipstoanoutline.ClipRectangle:PROC[context:Context,x,y,w,h:REAL,exclude:BOOL_FALSE];ClipRectangleI:PROC[context:Context,x,y,w,h:INTEGER,exclude:BOOL_FALSE];Clipstotherectangle[x,y],[x+w,y],[x+w,y+h],[x,y+h].PrivateaccesstoimagervariablesNotallContextsimplementthese.Tobedevice-independent,clientsshouldavoidthem.IntKey:TYPE~{--forSetInt,GetIntpriorityImportant,noImage,strokeStyle,correctPass,int1,int2,int3--spares};sg/Et_,x u;_,_,t_,u9_,_, t '_,_, # *. v[x tn[[uk[[t[[!?& .N qZ5 |"(+ 1vVx tVVuVVotVVN%+(/u3VV4atV7Wu8VV9t "*&9)5- 587 ?6BS\QxQQ?q@QQ$%(1369;^> PHxPHPHHqPHPHe! '*+.l/ 629;= vLxtLLuLLt LL %+` 1 8u=LL>ItLA?uKQtJKQKQqI vF[x tF[F[uF[F[ptF[F[O%,'u)F[F[*t,DF[F[,vDx tODDuMDDtpDD !%'*+,hu.DD/0t4DD4iqC !&'*v>xt>>u>>t>>f$C& q-/2(v9xt399u099tS99#u''99'9+t05991 u:I99;2t<997va ,u$ 7v7v$t&7v7v'^,^u1t7v7v1t7v788v2xt22u22t22f C#*.gu3224t27u9)229t<22=*q0  "')M*.4z68?'AB6/0xy/0/02q/0/0x 7"')4+/4<58,-+s!"%x*. 56v*:x t]*:*:u[*:*:t~*:*:/$)/73u9 *:*:9t*:<u>H*:*:?tA*:*:BIq(v%Cx t%C%Cu%C%Cmt%C%CL &)')C+u,%C%C-t/%C%C0u6]%C%C7t%C: u;%C%CC##>tA##BEq!!&(,h0u2v g$g qx1+n#%'3g7;?tt_xu___t_q__RPx"th  qt qTVm$r26RealKey:TYPE~{--forSetReal,GetRealDCScpx,DCScpy,mediumXSize,mediumYSize,fieldXMin,fieldYMin,fieldXMax,fieldYMax,strokeWidth,underlineStart,amplifySpace,correctShrink,correctMX,correctMY,correctTX,correctTY,real1,real2,real3--spares};SetInt:PROC[context:Context,key:IntKey,val:INT];SetReal:PROC[context:Context,key:RealKey,val:REAL];SetT:PROC[context:Context,m:Transformation];GetInt:PROC[context:Context,key:IntKey]RETURNS[INT];GetReal:PROC[context:Context,key:RealKey]RETURNS[REAL];GetT:PROC[context:Context]RETURNS[Transformation];GetFont:PROC[context:Context]RETURNS[Font];GetColor:PROC[context:Context]RETURNS[Color];GetCP:PROC[context:Context,rounded:BOOL_FALSE]RETURNS[VEC];END.******************************************************sg/Et_,xu_,_,\t_,q_,_,PMu#t]\[  Z6   % X VU@ S Q  PJ d NIqoNNtLvHxt,HHu*HHtMHH!$)u,_HH,t.kHH.vF^xt*F^F^u(F^F^tKF^F^"%+u.ZF^F^/.t1tF^F^1vDxtgDDueDD tDD9 "vAhxtcAhAhuaAhAhtAhAh5!$u)AhAh*t/rAhuAh/t1AhAh2Dv?xta??u_??t??3"%u+??,t1m?u?1t4??5Mv>xt>>u>>Dt>>"pu! >>!t&>>&v'xt>'>'u>'>'Rt>'>'0~v:xt::u::jt::I#&&,u1l::2%t:5u6::7at:F::;"u@::A`t:DWu91tJ9191v7xt77u77Pt77/#}) *,&.u/770/t5775u;f77<t7?u@77A[tD@77Dq5 _"%v2x t22u22t!22 &a'u)22*t.22/?v/Ex t/E/Eu/E/Et?/E/E!'u)D/E/E*t+/E/Eu,z/E/E-Nt2/Eu/E2dt4/E/E5v-x t--u--t?--!'u)D--*t+--u,z---Nt2-u-2dt4--5v*Ox t*O*Ou*O*O2t*O*O"^'u)*O*O*}t,*O*Ou,*O*O-t2p*Ou*O2t5"*O*O5v(x t((u((2t(("^'u)((*}t,((u,((-t2p(u(2t5"((5v%Yxt<%Y%Yu:%Y%Yt]%Y%Y#(u*b%Y%Y+-t,%Y%Yu-%Y%Y.lt3 %Yu%Y3t5%Y%Y65v#xt<##u:##t]###(u*b##+-t,##u-##.lt3 #u#3t5##65u cxt c cr g6OTVm$28ImagerPD.mesaCopyright(C)1983,1984,1985byXeroxCorporation.Allrightsreserved.MichaelPlass,December2,19833:17pmDougWyatt,January24,19854:16:00pmPSTDIRECTORYImagerUSING[Context],RopeUSING[ROPE];ImagerPD:CEDARDEFINITIONS~BEGINROPE:TYPE~Rope.ROPE;Context:TYPE~Imager.Context;Printer:TYPE~{nil,raven,hornet,gnat,plateMaker,reticleMaker,puffin,colorVersatec,spare1,spare2,spare3};Create:PROC[name:ROPE,printer:Printer]RETURNS[Context];CreateFromParameters:PROC[name:ROPE,deviceCode:CARDINAL,sResolution,fResolution:CARDINAL,--pixelsperinchimageSSize,imageFSize:CARDINAL,--pixelsnColors:CARDINAL,leftovers:BOOL,bandSSize:NAT,maxLoadWords:INT]RETURNS[Context];NewPage:PROC[Context];Close:PROC[Context];END.******************************************************sg/Eq_:x ]x:v!#' 02a6/[!$'ZD? #Z(C*uVxtUNu;UNUN!tUN Su>SS$tSuSStSS_PXxuPXPX_PX* tNxuNNKbxtKbKbuKbKb@tKbuKbKbtKbKbIxu)IItI'FlxuFlFlGtFl$' / 7'xtL>'>'uI>'>'t l>'>' u%>'>'%t(>'>'( u0>'>'1t7>'>'< x u$[<<%&t*<QQ$tQuQQtQQ_NxuNNN tLxuLLL<tL IxuIItIKuIItI Hx uOHHtHuMHH!t!;HHF^3 DuDDtNDDC u!mCC"UtAh>x u>>t>Zu>>t>*.606 <6?2vxtquotu\tvu ,!t#=#qiREt$ vxt#u!tDutut#`# qs;u%xt%%r g6TVm$30ImagerFontPrivate.mesaCopyright(C)1985byXeroxCorporation.Allrightsreserved.DougWyatt,February13,19854:46:51pmPSTDIRECTORYImagerUSING[Context],ImagerFontUSING[Char,CorrectionType,Font],ImagerTypefaceUSING[Typeface];ImagerFontPrivate:CEDARDEFINITIONS~BEGINOPENImagerFont;FontImpl:TYPE~REFFontImplRep;FontImplRep:TYPE~RECORD[typeface:ImagerTypeface.Typeface,widthX:REFWidths_NIL,widthY:REFWidths_NIL,info:REFInfo];Char8Code:TYPE~[0..256);Widths:TYPE~ARRAYChar8CodeOFREAL;Info:TYPE~PACKEDARRAYChar8CodeOFInfoRec;InfoRec:TYPE~RECORD[exists:BOOL,amplified:BOOL,correction:CorrectionType];MaskChar:PROC[font:Font,char:Char,context:Imager.Context];END.******************************************************sg/Eq_:x]x:Z r (+%.[?y #(+0uXxtVu;VV!tV UN uUNUNtUN] *S uSStS PXxuPXPXjPX4 tNxuNNN<tN Kbxu&KbKbtKbu%KbKbtKb Ix uIIUtI uIInt!IIHrFluFlFltFluFlFlt!FlFlDuDDtDu DDt!DDCuCCtCAv<x u:<<t<8:xu::tt:,u::t:`u$::%:&t)::91xu9191t91gu919191Dt91 u(39191)t91*L7xu?77t7u=77t+77u"77#ut%77& u-g77. t0771n 8_v2xt22u22\t22; W#',u/Ext/E/Er g6TVm$31ImagerPixelArrayPrivate.mesaCopyright(C)1985byXeroxCorporation.Allrightsreserved.DougWyatt,January25,198511:09:39amPSTDIRECTORYAtomUSING[PropList],ImagerPixelArrayUSING[PixelArray,Sample];ImagerPixelArrayPrivate:CEDARDEFINITIONS~BEGINOPENImagerPixelArray;Val:TYPE~[0..377B];--asamplevalue,8bitsRow:TYPE~REFRowRep;RowRep:TYPE~RECORD[PACKEDSEQUENCEsize:NATOFVal];Samples:TYPE~RECORD[PACKEDSEQUENCECOMPUTEDCARDINALOFSample];UnsafeGetSamples:UNSAFEPROC[pa:PixelArray,s,f:INT,i:NAT,base:LONGPOINTERTOSamples,startIndex:INT_0,count:INT_INT.LAST]RETURNS[nSamplesRead:INT];PixelArrayClass:TYPE~REFPixelArrayClassRep;PixelArrayClassRep:TYPE~RECORD[type:ATOM,MaxSampleValue:PROC[pa:PixelArray,i:NAT]RETURNS[Val],GetSample:PROC[pa:PixelArray,s,f,i:NAT]RETURNS[Val],GetRow:PROC[pa:PixelArray,row:Row,s,f,i:NAT],propList:Atom.PropList];GetRow:PROC[pa:PixelArray,row:Row,s,f,i:NAT_0];FORk:NATIN[0..MIN[row.size,pa.fSize-f])DOrow[k]_GetSample[pa,s,f+k,i];ENDLOOP;END.******************************************************sg/Eq_,x]x:Z r (+%.[? #Z(+>uXxtVujVVOtV U@uU@U@utU@ 'mQxuQQQ" tPJxuPJPJPJ<tPJLxu|LL5tL{ qLL B#'(tKTxu8KTKTtKTu6KTKT tKTIxuIIftIuIItIuII$MtI+u.6II/I1/tI3IF^xu`F^F^tF^u^F^F^2tLF^uF^F^#F^*F^1F^8tF^:vCxtCCuCCCt# CC#p% - .ku/CC0Lt1CC2u4+CC5t6CCAhu?AhAhAh0Ah!tAh#) u0AhAh1 tAh3246Lu:AhAh;tAh=,u>AhAh?#t@AhuAhAtDAhAhu?t3?? u$_??$t&k??&xtf>>ud>>t>ub>>6tP>u>t>>ud>t>7u>t>u >>!t#>>$Gq%E>>%&) 0v46_8Dt:x u$::t:u"::t:9#xu9#9#Rt9# u9#9#kt"9#9#7|53"'$u'H7|7|(t*a7|7|q+>7|7|+, 3^57mt5\:C!$u'H55(q5*,\ 368(t4-u0xt00u00t0cu00t00A.u 00!t$ 00$pq%m00%&)-u/7xt/7/7u/7/7t/78u/7/7t/7/7u /7/7!t#/7/7$Eq%C/7/7%&) 0_u-xt--u--nt-&u--t--u i--!=t#--#q$--%]&[)K 0v*Axt1*A*Au.*A*AtQ*Au*At *A*Au!*A*A"t'=*Au*A't)*A*A)v(xt1((u.((tQ(u(t((u ((!^t&(u(&tt)(()v%Kx t %K%Ku%K%Kt+%K%Ku%K%K\t!%K%K!$ +u-@%K%K.(t/K%K%Ku03%K%K1t5%Ku%K6t8 %K%K8nv#x t ##u##t+##u0##t ## # *u,Z##-Ct.f##u/M##0!t4#u#58t7##8v Ux t U Uu U UKt Uu U)t U Uu U U `t% Uu U%vt' U U(*vx tuKtu)tyua 5t$u%Kt'(*v_x t__u__?t_u_t__u__ Tt%_u_%kt'__( vx tu?tut\uC t$u%.t'( vix tiiuiit3iuitiiu ii!ct&iui&yt(ii)vx tut3uB (t!"]u&'t)*u,:-t1u2%t565usxtssussts uxtr g6TVm$r33ImagerColorOperatorPrivate.mesaCopyright(C)1984,1985byXeroxCorporation.Allrightsreserved.DougWyatt,January25,19852:31:50pmPSTDIRECTORYAtomUSING[PropList],ImagerColor;ImagerColorOperatorPrivate:CEDARDEFINITIONS~BEGINOPENImagerColor;ColorOperatorClass:TYPE~REFColorOperatorClassRep;ColorOperatorClassRep:TYPE~RECORD[type:ATOM,ColorFromPixel:PROC[op:ColorOperator,s:PixelProc]RETURNS[Color],GrayFromPixel:PROC[op:ColorOperator,s:PixelProc]RETURNS[REAL],propList:Atom.PropList_NIL];SampleMap:TYPE~REFSampleMapRep;SampleMapRep:TYPE~RECORD[SEQUENCEsize:CARDINALOFREAL];BlackDataRep:TYPE~RECORD[clear:BOOL];GrayLinearDataRep:TYPE~RECORD[sWhite,sBlack:REAL,map:SampleMap_NIL];GrayVisualDataRep:TYPE~RECORD[sWhite,sBlack:REAL,map:SampleMap_NIL];GrayDensityDataRep:TYPE~RECORD[sWhite,sBlack:REAL,dWhite,dBlack:REAL,map:SampleMap_NIL];ColorDensityDataRep:TYPE~RECORD[sWhite,sBlack:REAL,dWhite,dBlack:REAL,map:SampleMap_NIL];MapDataRep:TYPE~RECORD[SEQUENCEsize:CARDINALOFConstantColor];BuildMapDataRep:TYPE~RECORD[op:ColorOperator,size:CARDINAL,samples:SEQUENCEnSamples:CARDINALOFCARDINALsg/Eq_,x]x:$ ,{.2[? #Z(C*uXxtVujVVOtV U? Qxu zQQ!EQ% tPHxuPHPHPH<tPH Lxu8LLtLu 7LL! tL#KRxuKRKRgtKR!u"KRKR#t'KRKRIuIItIIvH tHHuHHt9HH! *,. u2HH3t87HH8vF[ tF[F[uF[F[ZtF[F[8 *I+ u2LF[F[3 t7F[uF[86t;PF[F[;D u!mDD"UtC ?x u??Wt?u??pt?g >x u>>t>u>>t#>u>#ct>*'u-L>>.>4>6!t9:>>9:x u ::t:|u ::t!::"Zu&%::&t)P::)7xxu7x7xat7xu 7x7x!{t%7x7x5uQ55%tk554)uV4)4)?t2/2xu}/2/26t/2u {/2/2!Ot%i/2/2-uQ--%tk--+uV++?t*;&xuZ&&t&u!X&&",t&F&&%EuQ%E%E%tk%E%E#u##t##!uV!!?t Nxukt #u!"t&XuQXX%tkXXut uV  ?tax u?tuYt!su!t(u+,2zt4xu{t3u t$ tu t tyt t t u. t u# $l *\ ,v6TVm$]34nSamples=op.samplesPerPixel*size];END.******************************************************sg/Eq_,t]uXxtXXr g6^TVm$*35ImagerPrivate.mesaCopyright(C)1984,1985byXeroxCorporation.Allrightsreserved.DougWyatt,January24,19856:41:23pmPSTDIRECTORYAtomUSING[PropList],ImagerUSING[Color,ColorOperator,Context,Font,IntKey,Outline,PathProc,PixelArray,RealKey,StringProc,StrokeStyle,Transformation,VEC];ImagerPrivate:CEDARDEFINITIONS~BEGINOPENImager;Clipper:TYPE~REFClipperRep;--forSetClipper,GetClipperClipperRep:TYPE~RECORD[rest:Clipper,outline:Outline,parity:BOOL,exclude:BOOL];StrokeDashes:TYPE~REFStrokeDashesRep;StrokeDashesRep:TYPE~RECORD[begin,repeat,end:DashPattern_NIL];DashPattern:TYPE~LISTOFDashSpec;DashSpec:TYPE~RECORD[style:StrokeStyle,width,length,stretch:REAL];Class:TYPE~REFClassRep;ClassRep:TYPE~RECORD[type:ATOM_,DoSave:PROC[context:Context,action:PROC,all:BOOL]_,SetInt:PROC[context:Context,key:IntKey,val:INT]_,SetReal:PROC[context:Context,key:RealKey,val:REAL]_,SetT:PROC[context:Context,m:Transformation]_,SetFont:PROC[context:Context,font:Font]_,SetColor:PROC[context:Context,color:Color]_,SetClipper:PROC[context:Context,clipper:Clipper]_,SetStrokeDashes:PROC[context:Context,strokeDashes:StrokeDashes]_,GetInt:PROC[context:Context,key:IntKey]RETURNS[INT]_,GetReal:PROC[context:Context,key:RealKey]RETURNS[REAL]_,GetT:PROC[context:Context]RETURNS[Transformation]_,GetFont:PROC[context:Context]RETURNS[Font]_,GetColor:PROC[context:Context]RETURNS[Color]_,GetClipper:PROC[context:Context]RETURNS[Clipper]_,GetStrokeDashes:PROC[context:Context]RETURNS[StrokeDashes]_,ConcatT:PROC[context:Context,m:Transformation]_,Scale2T:PROC[context:Context,s:VEC]_,RotateT:PROC[context:Context,a:REAL]_,TranslateT:PROC[context:Context,t:VEC]_,Move:PROC[context:Context,rounded:BOOL]_,SetXY:PROC[context:Context,p:VEC]_,SetXYRel:PROC[context:Context,v:VEC]_,GetCP:PROC[context:Context,rounded:BOOL]RETURNS[VEC]_,Show:PROC[context:Context,string:StringProc,xrel:BOOL]_,sg/Eq_:x]x:$ ,{.2[? #Z(C*uXxtVujVVOtV UMu;UMUM!tUM '-@06;YS # + 2u$x u>$>$?t>$u>$>$Xt>$O<|xu<|<|t<|mu<|<|t#<|<|$K(n,0% 7u9<|<|:tt;<|<|;:x u::t:<u:::t: 9-xuT9-9- t9-uR9-9-&tA9-9-#M */)3u89-9-9yt;9-9-<"5xu55>t5u55Wt5N46xu4646t46lu4646t46462u22t2v0t%00u#00tF00$u)00)t,;00-u/000:t2003v/@t=/@/@u;/@/@t^/@/@#&+u.p/@/@.t0|/@/@1cv-t;--u9--t\-- $'-u0l--1?t3--4mv+tx++uv++t++J"%/ v*ItQ*I*IuN*I*Itq*I*I"$(+v(t((u(({t((Y%7)--pv& t&&u&&nt&&L &)+@0v%St%S%Su%S%Sct%S%SB$* 2 ;v#tt##ur##t##F#&u+##,t1#u#1t3##4v"tr""up""t""D$'u-"".t3~"u"3t6""7v \t \ \u \ \Ut \ \3u# \ \#t( \ \)3%vtu-t Yu$%t*{*.v t   u   t-  u%y  &Mt+  +c/ve teeueet ee u&kee'?t+ee,V1vtuty$u*a+5t/0K 9Cvtu[t9%'>1^vothooufootoo:$u&Koo't(oo)vtu|$tP$u&'Wt)*v  t"  u   tC   &u'  (t*>  +&vxtxxuxxtxxi#Fu)Exx)t,pxx-WvtuustG#u%&ft'(v)t|))uy))!t)) M%u'))(Vt)))*v t u ;t h#u) *t- u. .t3 u 3t6A 7)v t u it H#%'t .u1 2t4 58TVm$36ShowText:PROC[context:Context,text:REFREADONLYTEXT,start,len:NAT,xrel:BOOL]_,StartUnderline:PROC[context:Context]_,MaskUnderline:PROC[context:Context,dy,h:REAL]_,CorrectMask:PROC[context:Context]_,CorrectSpace:PROC[context:Context,v:VEC]_,Space:PROC[context:Context,x:REAL]_,SetCorrectMeasure:PROC[context:Context,v:VEC]_,SetCorrectTolerance:PROC[context:Context,v:VEC]_,Correct:PROC[context:Context,action:PROC]_,DontCorrect:PROC[context:Context,action:PROC,saveCP:BOOL]_,SetGray:PROC[context:Context,f:REAL]_,SetSampledColor:PROC[context:Context,pa:PixelArray,m:Transformation,colorOperator:ColorOperator]_,MaskFill:PROC[context:Context,path:PathProc,parity:BOOL]_,MaskRectangle:PROC[context:Context,x,y,w,h:REAL]_,MaskRectangleI:PROC[context:Context,x,y,w,h:INTEGER]_,MaskStroke:PROC[context:Context,path:PathProc,closed:BOOL]_,MaskVector:PROC[context:Context,p1,p2:VEC]_,MaskPixel:PROC[context:Context,pa:PixelArray]_,MaskBits:PROC[context:Context,base:LONGPOINTER,wordsPerLine:NAT,sMin,fMin,sSize,fSize:NAT,sOffset,fOffset:INTEGER]_,Clip:PROC[context:Context,path:PathProc,parity:BOOL,exclude:BOOL]_,ClipRectangle:PROC[context:Context,x,y,w,h:REAL,exclude:BOOL]_,ClipRectangleI:PROC[context:Context,x,y,w,h:INTEGER,exclude:BOOL]_,propList:Atom.PropList_NIL];SetClipper:PROC[context:Context,clipper:Clipper];SetStrokeDashes:PROC[context:Context,strokeDashes:StrokeDashes];GetClipper:PROC[context:Context]RETURNS[Clipper];GetStrokeDashes:PROC[context:Context]RETURNS[StrokeDashes];END.******************************************************sg/Ev_,t_,_,u_,_,7t_,_, c%u)#_,_,)_,+_,3 t6 _,_,6:Nu=_,_,>t?_,_,@lu]t]]v[ t][[uZ[[t}[[#.(vZ6 tZ6Z6uZ6Z6ZtZ6Z68#)+iu-.Z6Z6.t0GZ6Z61/vX t`XXu^XXtXX"2'vV tVVuVV2tVV"^'u)VV*gt+VV,vU@tU@U@uU@U@t2U@U@#su%!U@U@%t(:U@U@)"vSt+SSu(SSt KSS %+u-:SS.t/SS0pvQtQQuQQt!QQ!v&,Su.QQ.t0PQQ18vPJtPJPJuPJPJt%PJPJ$fu(PJPJ)t,PJPJ-vN tNNuNNt(NN!'iu+NN,t/NN/u5FNN6t8qNN9YvLtrLLupLLtLLD$u&JLL't)dLL*KvKTtKTKTuKTKTtKTKTc$*A, I" ,G 5vHtHHuHHt HHo%L(/!u3HH4Kt6HH7vF^ tF^F^uF^F^qtF^F^O#),*,F. u/F^F^0t2F^F^3vD tPDDuMDDtpDD$!)+=,.u0iDD0t5DD6vC tCCuCCtCC_!'<*1u5CC6rt8CC9vAh tAhAhuAhAhtAhAh`!'=)u,AhAh,t.UAhAh/<v?t??u??t??w &T( /v>tD>>uA>>td>> %u)9>>)>-)t2F>>3" u>=Ct>>>9v9# t9#9#u9#9#t9#9#]"(:)+T-.u.9#9#/t2 9#9#2u8n9#9#9't;9#9#<v7| t^7|7|u[7|7|t~7|7|#/(*K+-u/w7|7|/t47|7|5u;7|7|;t>C7|7|?+5 u!m55"Ut4-v/7x t/7/7u/7/7]t/7/7;$)/v-xt--u--Rt--1"~( 0 v*Ax t*A*Au*A*At*A*Aru$Z*A*A%.t)*A*A*Ev(xt((u((t((h"u(P(()$t-((.: u%Kxt%K%Kr g6TVm$37ImagerState.mesaCopyright(C)1984,1985byXeroxCorporation.Allrightsreserved.DougWyatt,January23,198510:30:48pmPSTDIRECTORYBasicsUSING[BITAND,BITOR],ImagerUSING[Color,ColorOperator,Context,Font,IntKey,PathProc,PixelArray,RealKey,Transformation,VEC],ImagerPrivateUSING[Clipper,StrokeDashes];ImagerState:CEDARDEFINITIONSIMPORTSBasics~BEGINOPENImager,ImagerPrivate;Flags:TYPE~RECORD[T:BOOL_FALSE,clipper:BOOL_FALSE,font:BOOL_FALSE,color:BOOL_FALSE,priorityImportant:BOOL_FALSE,strokeWidth:BOOL_FALSE,strokeStyle:BOOL_FALSE,strokeDashes:BOOL_FALSE,amplifySpace:BOOL_FALSE,unused:[0..177B]_0];noFlags:Flags~[];OrFlags:PROC[f1,f2:Flags]RETURNS[Flags]~INLINE{RETURN[LOOPHOLE[Basics.BITOR[LOOPHOLE[f1],LOOPHOLE[f2]]]];};AndFlags:PROC[f1,f2:Flags]RETURNS[Flags]~INLINE{RETURN[LOOPHOLE[Basics.BITAND[LOOPHOLE[f1],LOOPHOLE[f2]]]];};PersistentVariables:TYPE~RECORD[cp:VEC_[0,0],--currentposition,viewcoordscorrectMeasure:VEC_[0,0],--targetlinemeasureforCorrect,viewcoordscorrectMaskCount:INT_0,--tallynumberofCorrectMaskcallsinpass1correctSum:VEC_[0,0],--tallyadjustablespacefromCorrectSpacecallsinpass1correctMask:VEC_[0,0],--spaceinsertedbyeachCorrectMaskcallinpass2correctSpace:VEC_[0,0]--adjustmentfactorsforeachCorrectSpacecallinpass2];NonPersistentVariables:TYPE~RECORD[flags:Flags_[],priorityImportant:INT_0,--ifnonzero,priorityofmasksisimportantmediumSize:VEC_[0,0],--sizeofmedium,inmetersfieldMin:VEC_[0,0],--minimumxandyoffield,inmeterssg/Eq_:x]x:$ ,{.2[? #Z(+>uXxtVuVVtVuNVVtVVuVVat"4VV"UMu;UMUM!tUM '-@06<6 Su&SS't)*SS)Q u^QQDtQ#c Nx uNN^N( MxtM(K`xuK`K`K`<tK` HxuHHTtH uHHmtHHFiunFiFi(tFiuFiFidtIFiFiDuDDYtDOuDDtzDDCuCCtCu-CCtCCAsuAsAs9tAs/uAsAsutZAsAs?u??t?u!2??!t$??>$ u>$>$t>$u>$>$t!>$>$<| u <|<|t<|uE<|<|t <|<|: uT:: t:u::It".::9- u9-9-:t9-0u9-9-vt"[9-9-7o52xRv/@xtL/@/@uJ/@/@tm/@/@u /@/@ t%/@/@%*u+/@/@+t/@0(u-tr-u-t#--u q--!*t#-u-$at*--+u-|--.5t3--4.+v(xt((u((t'((u ((!t&K((&*u,G((,t(0u&tr&u&t#&&u q&&!*t$&u&%Rt+&&,u.m&&/&t4&&5%S \xu \ \ct \u \ \ }t$ \ \utI9q)!N&)t u  vt ~  q"  #d$b(F*002X7:teueete q"/ee"#&+-? 5p8:0=t uMt q !"% +l/ 2I :=?]BKt ut0 q!!"&&++-0, 8]:<?to u ootoiYq oo!j"h )@-/2 ;K=?BttxxuOxxtx u"Mxx#!t';xx>s)u))_t) q!))"#$l).0N4h5t  u t ;+q! !"%3&,J-t u ~t q l j&r'*`+-.020TVm$38fieldMax:VEC_[0,0],--maximumxandyoffield,inmetersnoImage:INT_0,--ifnonzero,don'timagemasksstrokeWidth:REAL_0,--strokewidth,clientcoordsstrokeStyle:INT_0,--strokeendandjointtreatmentunderlineStart:REAL_0,--startingxpositionforunderline,clientcoordsamplifySpace:REAL_1.0,--multiplieswidthofamplifiedcharacterscorrectPass:INT_0,--whichpass,duringCorrectcorrectShrink:REAL_0.5,--allowablespaceshrinkcorrectTolerance:VEC_[0,0]--tolerabledeviationfromcorrectMeasure,viewcoords];ContainsnoREFs,socanbecopiedwithblocktransfers.State:TYPE~REFStateRep;StateRep:TYPE~RECORD[flags:Flags_[],p:PersistentVariables_[],--persistentvariablesnp:NonPersistentVariables_[],--non-persistentvariablesotherthanREFsbelowT:Transformation_NIL,--currenttransformation(mutable!)font:Font_NIL,--current"showVec"color:Color_NIL,--currentcolorclipper:Clipper_NIL,--currentclippingoutlinestrokeDashes:StrokeDashes_NIL--currentdashpatternforstrokes];StateDoSave:PROC[context:Context,action:PROC,all:BOOL];StateSetInt:PROC[context:Context,key:IntKey,val:INT];StateSetReal:PROC[context:Context,key:RealKey,val:REAL];StateSetT:PROC[context:Context,m:Transformation];StateSetFont:PROC[context:Context,font:Font];StateSetColor:PROC[context:Context,color:Color];StateSetClipper:PROC[context:Context,clipper:Clipper];StateSetStrokeDashes:PROC[context:Context,strokeDashes:StrokeDashes];StateGetInt:PROC[context:Context,key:IntKey]RETURNS[INT];StateGetReal:PROC[context:Context,key:RealKey]RETURNS[REAL];StateGetT:PROC[context:Context]RETURNS[Transformation];StateGetFont:PROC[context:Context]RETURNS[Font];StateGetColor:PROC[context:Context]RETURNS[Color];StateGetClipper:PROC[context:Context]RETURNS[Clipper];StateGetStrokeDashes:PROC[context:Context]RETURNS[StrokeDashes];StateConcatT:PROC[context:Context,m:Transformation];StateScale2T:PROC[context:Context,s:VEC];StateRotateT:PROC[context:Context,a:REAL];StateTranslateT:PROC[context:Context,t:VEC];StateMove:PROC[context:Context,rounded:BOOL];StateSetXY:PROC[context:Context,p:VEC];StateSetXYRel:PROC[context:Context,v:VEC];StateGetCP:PROC[context:Context,rounded:BOOL]RETURNS[VEC];StateStartUnderline:PROC[context:Context];StateMaskUnderline:PROC[context:Context,dy,h:REAL];StateCorrectMask:PROC[context:Context];StateCorrectSpace:PROC[context:Context,v:VEC];sg/Et_,u_,_,t_,?/q_,_, &(?*, -1 2t]u]]t]Bq\]])$( ,t[ u[[t[yq[[ ! %),tZ5 u Z5Z5stZ5&qZ5Z5,*#9%(k+tXuXXtX1q XX!7"5'$(o-~/ 59tV uVVUtVq!@VV!" (,.*4 tU? uU?U?~tU?1qU?U?75#&^*tS uSS`tS*q!LSS!"(,StQuqQQ<tQD!q#YQQ#$*V03T=*@.tPHqNA4b "x&)-M tKRxueKRKRtKRudKRKR8tKR.IxuIItILuIItIIH>sF[Nq!6F[F[!" (tD!r"q$DD%& .4S7:>tC n +uC C tC C q C C !"& / tAeMuAeAetAeAeqAeAe<9!t?`u??t??q??NL"t>u->>t8>>q>> %:*RteQQ>vPJxtPJPJuPJPJtPJPJq#)N*,h.Bu0PJPJ0t3 PJPJ3u9PJPJ:;tvCxtCCuCCPtCC.7!)u$8CC% t&~CCu'fCC(:t,CC-Pu0CC0t2MCC2qAv $! x$AvAv$qAv&',"x/]AvAv0(qAv2788>Bv>'xt/>'>'u,>'>'tO>'>'!u$>'>'%t'>'>'u'>'>'(t-q>'>'- q<"%)-V 45 =x@<pixelsgotowardtherightofthepage,scanlinestowardthebottom0,8=>pixelsgotowardthetopofthepage,scanlinestowardtherightsg/Eq_,x]x:$ ,{.2[? #Z(+>tXx uXXLX tVxuVVtSx uSStSoqSS %z&(+W/379;tQx uQQtQMq QQ !"'I(+tNxuNNtNKqRNN '<*M,t-/tKQx ubKQKQ-tKQu KQKQ!ct&KQKQ'[HxuAHHtHu?HHQH$eH,t1HHFZuFZFZt"FZFZq"FZFZ#j$g*z-1e tDuDDqD "K&i(+-26.<>C j9n!#M tAc?xuh??Pt?au?? t"i??"htNu NN!ZqN'K(,.:3R479(=+?4@B}LW &KR\2tIHx uHHtHuHHAt HH Dx uDDtDquDDD##D*t/DDC uC C tC C qC C !&+'+m-tAeuyAeAet AeAe?u??>t ??q ??!j"h% &*-/t>u#>>t@B#t! Oxu O Ot Ou~ O O t! O O"\x u$tu"4!Ht(XqXXGEtqsq t q   tbqObbs tq:7k t q  tk qkkWUx tq30|jtq30Zu ut u u~q u u^\ !'W(*u t9 q !& +f,.TVm$d43CMYB(102),--cyan,magenta,yellow,blacksamples,4perpixelYxy(103),--Y,x,y(CIE)samples,3perpixelcomments(177776B),--specifiedincommentsundefined(177777B)--undefined};ScaleType:TYPE~MACHINEDEPENDENT{nil(0),--undefinedreflectance(1),--reflectanceortransmittancedensity(2),--opticaldensitycomments(177776B),--specifiedincommentsundefined(177777B)--undefined};Value:TYPE~MACHINEDEPENDENTRECORD[sample(0:0..15):INTEGER,--1000*(actualreflectanceordensity)level(1:0..15):CARDINAL--correspondingdigitalsamplevalue];SpotType:TYPE~MACHINEDEPENDENT{nil(0),--undefinedrectangular(1),--spotWidthbyspotLengthcircular(2),--diameter=spotWidth,spotLengthisundefinedcomments(177776B),--specifiedincommentsundefined(177777B)--undefined};histogramScale:INTEGER~32767;CommentPart:TYPE~BCPLStringBody;sizeCommentPart:NAT~SIZE[CommentPart];--maximumBCPLStringBody:TYPE~PACKEDARRAY[0..256)OFCHAR;IfsisaPOINTERTOBCPLStringBody,lengthisORD[s[0]],textiss[1..length]END.******************************************************sg/Eu_,t_,_,lq_,_,LJ"'*0!1V3t]q]]LJ$ &M')t[qk[[$Q%tZ6qZ6Z6tXU@x uU@U@CtU@uU@U@U@ tU@([SqSS tQqkQQ !#[ tPJ qCPJPJ tNqkNN$Q%tLqLLtKTHxuHHtHZuHHH H%t*HHF^uF^F^tF^F^q F^F^!" * 02tDu%DDqD!W ).2tC?xu2??t?u1??B? Vt?(>q>> t2~@NKRx x=KRKRqKRxKRKRKR"KR*q/eKRKRI_H  Z#,)F[>D=i3 %'+t;u;jx ujjAtjujjj"j)t.jj/ 6 x r"W txu3 t tt tu t t^tx tu t t% t, t3|t t5 x TVm$45******************************************************sg/Er_/ g68TVm$46PrePressFontFormat.mesaCopyrightc1984,XeroxCorporation.Allrightsreserved.DougWyatt,October9,19849:35:05amPDTDIRECTORYPrincOpsUSING[zEXCH],ScaledUSING[Value];PrePressFontFormat:CEDARDEFINITIONS~BEGINBYTE:TYPE~[0..377B];BCPLDOUBLE:TYPE~MACHINEDEPENDENTRECORD[highbits,lowbits:CARDINAL];ABCPLdoubleword;orderofthehalvesisthereverseoftheMesaconvention.CardFromDouble:PROC[BCPLDOUBLE]RETURNS[LONGCARDINAL]~TRUSTEDMACHINECODE{PrincOps.zEXCH};FractionFromDouble:PROC[BCPLDOUBLE]RETURNS[Scaled.Value]~TRUSTEDMACHINECODE{PrincOps.zEXCH};BCPLREAL:TYPE~MACHINEDEPENDENTRECORD[w0,w1:CARDINAL];ABCPLfloatingpointnumber;useRealConverttoconverttoMesaREAL.IXType:TYPE~MACHINEDEPENDENT{end(0),--endofindexpartname(1),--NameIndexEntryfollowsspline(2),--StdIndexEntryfollowscharacter(3),--CharacterIndexEntryfollowswidth(4),--StdIndexEntryfollowsorbit(5),--CharacterIndexEntryfollowsmultipleCharacter(6),--MultipleCharacterIndexEntryfollows(17B)};IXHeader:TYPE~MACHINEDEPENDENTRECORD[type(0:0..3):IXType,--typeofentrylength(0:4..15):[0..7777B]--lengthofentry,includingthisheader];NameIndexEntry:TYPE~MACHINEDEPENDENTRECORD[--ix.type=namecode(0:0..15):CARDINAL,--numericcodeforthisnamechars(1):PACKEDARRAY[0..20)OFBYTE--nameasaBCPLstring:firstbyteislength];StdIndexEntry:TYPE~MACHINEDEPENDENTRECORD[--ix.type=spline,widthfamily(0:0..7):BYTE,--familyname,usinganamecodeface(0:8..15):BYTE,--faceencodingbc(1:0..7):BYTE,--beginningcharacterec(1:8..15):BYTE,--endingcharactersg/Eq_:x]w]q]Z s (+&.[?b"')uXxtVuVVltVUMuUMUMtUM.QxuQQ}Q H tPVxuPVPVMxtwMMuuMM.tMs uIx t0IIu.IItIu,II>I"RI)t.II/P4u:"II:t@YII@qH [ !y#%i)w*-/13O59D vDx tDDuDDhtDuDG t$DDu%DD&t+mDuD+D/t5DDCuCCCC*tC!#) .&v?xt??u??t?u?x t'0??u(??(t-??. >#u>#>#>#>#*t>#!#) .&u:xtw::ut::-t:us::: :(Ft-4::-0!u2::3t9::9gq9- [T$)& .Q/46Rx99-9-:q=9-9-t46xu4646t46yu464646,t46&2q<22At0qD00 "kt/@ q/@/@ !6t- qm--&t+qf++ !t*Iq*I*I[X$]t(q((?<17t&%R"xu_""t"u]""n" "(0t-"" \ ?q \ \&$" #t q l !&'+t1W3t xut8u$,t1q2m238L:1t u&t]q : !&),&.tou:oootoo u#oo$o%qo)j*.0>1s5: <?A*txx u,xxtxu*xx<x#Px*t/xxq0xx1L2J68<tur,tqqN"&*}+/Vt) u))|t))q)) t  u t q jg"t  u ]t q !VTVm$47size(2:0..15):CARDINAL,--sizeinmicasrotation(3:0..15):CARDINAL,--rotationinminutesofarcanticlockwisesegmentSA(4:0..31):BCPLDOUBLE,--startingaddressinfileofthesegment(inwords!)segmentLength(6:0..31):BCPLDOUBLE--lengthofthesegment(inwords!)];CharacterIndexEntry:TYPE~MACHINEDEPENDENTRECORD[--ix.type=character,orbitfamily(0:0..7):BYTE,--familyname,usinganamecodeface(0:8..15):BYTE,--faceencodingbc(1:0..7):BYTE,--beginningcharacterec(1:8..15):BYTE,--endingcharactersize(2:0..15):CARDINAL,--sizeinmicasrotation(3:0..15):CARDINAL,--rotationinminutesofarcanticlockwisesegmentSA(4:0..31):BCPLDOUBLE,--startingaddressinfileofthesegment(inwords!)segmentLength(6:0..31):BCPLDOUBLE,--lengthofthesegment(inwords!)resolutionX(8:0..15):CARDINAL,--10*resolutioninscanlinesperinchresolutionY(9:0..15):CARDINAL--10*resolutioninbitsperinch];MultipleCharacterIndexEntry:TYPE~MACHINEDEPENDENTRECORD[--ix.type=multipleCharacterfamily(0:0..7):BYTE,--familyname,usinganamecodeface(0:8..15):BYTE,--faceencodingbc(1:0..7):BYTE,--beginningcharacterec(1:8..15):BYTE,--endingcharactersize(2:0..15):CARDINAL,--sizeinmicasrotation(3:0..15):CARDINAL,--rotationinminutesofarcanticlockwiseresolutionX(4:0..15):CARDINAL,--10*resolutioninscanlinesperinchresolutionY(5:0..15):CARDINAL,--10*resolutioninbitsperinchnumSegs(6:0..15):CARDINAL--numberofsegments--segs:ARRAY[0..numSegs)OFDatedSegmentEntry];DatedSegmentEntry:TYPE~MACHINEDEPENDENTRECORD[segmentSA(0:0..31):BCPLDOUBLE,segmentLength(2:0..31):BCPLDOUBLE,expirationDate(4:0..31):BCPLDOUBLE];CharacterSegment:TYPE~RECORD[charData:CharacterDataArray[ec-bc+1],directory:DirectoryArray[ec-bc+1]--followedbyrasters,pointedtobythedirectory];CharacterData:TYPE~MACHINEDEPENDENTRECORD[wx(0:0..31):BCPLDOUBLE,--xwidth(signedfraction)wy(2:0..31):BCPLDOUBLE,--ywidth(signedfraction)bbox(4:0..15):INTEGER,--xoffsetforboundingboxbboy(5:0..15):INTEGER,--yoffsetforboundingboxbbdx(6:0..15):INTEGER,--widthofboundingbox(scanlines)sg/Et_, u_,_,Vt_,_,q_,_, !#%\t]u ]]t!B]]q"]]"#(*W/_13W t[u[[t$[[q%[[&', 02p46g8=@tZ5u|Z5Z5 5qZ5')/-M.1=6p8tXU?xuU?U?tU?hu U?U?"U?'U?.t3U?U?q4U?U?56:|Ktx uX>>t>uV>>h>#|>+)t0>>55!"#%@';(,t4)q!>4)4)!"#%@';(e,t2~ q 22 !0q x00Xq0 x(00)q0,x-00.q01G/2P x/2/27q/2 l x(/2/2)Aq/2,Sx-/2/2.Jq/21t-*;x u*;*;Vt*;u*;*;ot *;u*; *;'*;.*;5*;7t<*;*;=K&x u&&t&ju&&t%F&&%q%E 9 "$ ( Nx x* N Nq Nx, N Nq" N N  XM' %'^)8+tax uaatau aaa!3a(t-aa utqf d$%',.N t utqf d$%&tk ugkk!tfkkq Bkk !$'5(.t ug!tfq B !&E)`+0t uMtq n !%/(I)/t tuD t tq t ">$')Q/4t ITVm$f49missingSpline:BCPLREAL~[w0:0,w1:CARDINAL.LAST];valueofwxinSplineDataforamissingcharacterSplineDataArray:TYPE~RECORD[SEQUENCECOMPUTEDCARDINALOFSplineData];SplineCode:TYPE~MACHINEDEPENDENT{moveTo(1),drawTo(2),drawCurve(3),endDefinition(177776B),newObject(177777B)};SplineCommand:TYPE~MACHINEDEPENDENTRECORD[code:SplineCode];SplineCoords:TYPE~MACHINEDEPENDENTRECORD[x(0:0..31):BCPLREAL,y(2:0..31):BCPLREAL];END.******************************************************sg/Et^x u^^_t^("$Qu&^^'t-4^u^-t0p^^0q\ "$(tYxuvYY/tYutYYHt#bYuY#Y*Y1Y8gtY: VRx u[VRVRtVRuZVRVRkVR!tVR)-T   SQ\N x uvN N /tN utN N N $N ,Gt15N N 15X Jx uzJJ3tJuxJJJ"J*Kt/9JJI uIItIIGp uGpGptEu@xt@@r g6TVm$$50PDFileFormat.mesaCopyright(C)1983,1984,1985byXeroxCorporation.Allrightsreserved.CreatedMarch14,1983MichaelPlass,April29,198311:01amDougWyatt,January4,19851:36:27pmPSTPDFileFormat:DEFINITIONS~BEGINpasswordValue:CARDINAL~125252B;versionValue:CARDINAL~1B;DeviceCode:TYPE~MACHINEDEPENDENT{invalid(0),raven(1),hornet(2),gnat(3),mig(4),reticleMaker(5),puffin(6),colorVersatec(7),last(LAST[CARDINAL])};Herald:TYPE~MACHINEDEPENDENTRECORD[password(0):CARDINAL_passwordValue,version(1):CARDINAL_versionValue,deviceCode(2):DeviceCode_invalid,sResolution(3):CARDINAL,fResolution(4):CARDINAL,imageSSize(5):CARDINAL,imageFSize(6):CARDINAL,bandSSize(7):CARDINAL,maxLoadWord(8):LONGCARDINAL,copies(10):CARDINAL];Typ:TYPE~MACHINEDEPENDENT{control(0),imaging(2)};ImagingCom:TYPE~MACHINEDEPENDENT{maskSamplesRef(0),maskRunGroupRef(1),maskRectangle(2),maskTrapezoid(3),maskRunGroup(4),maskSamples(5),colorSamples(6)};ControlCom:TYPE~MACHINEDEPENDENT{startImage(0),setPriority(1),setColorInk(2),sg/Eq_,x]x:v!#' 02a6/[9Z5(e"&jX?d"')tU?x uU?U? tU? >u!U?U?"tQx ubQQ-tQ PHx u,PHPHtPHtLx uLLmtL%uLLL!tL)KR IH F[DC Ae ?>u>>t>u>Ft}>>[com(0:2..7):ImagingCom,addrHighBits(0:8..15):[0..256)_0],addrHighBitsisusedbythemaskSamplesRefandmaskRunGroupRefcommands.control=>[com(0:2..7):ControlCom,rest(0:8..15):[0..256)_0]restisusedbythesetPriorityandsetColorTilecommands.ENDCASE];SampleArray:TYPE~MACHINEDEPENDENTRECORD[sSize(0):CARDINAL,fSize(1):CARDINALFollowedbytheactualscanlines,eachpaddedouttoaword.];Tile:TYPE~MACHINEDEPENDENTRECORD[phase(0):CARDINAL,sMin(1):CARDINAL,fMin(2):CARDINAL,sSize(3):CARDINAL,fSize(4):CARDINALFollowedbytheactualscanlines,eachpaddedouttoaword.];RunGroup:TYPE~MACHINEDEPENDENTRECORD[sSize(0):CARDINALFollowedbytheRuns.];Run:TYPE~MACHINEDEPENDENTRECORD[fMin(0):CARDINAL,lastRun(1:0..0):BOOLEAN,fSize(1:1..15):NAT];MaskRectangle:TYPE~MACHINEDEPENDENTRECORD[sMin(0):CARDINAL,sSize(1):CARDINAL,fMin(2):CARDINAL,fSize(3):CARDINAL];sg/Et_,][ Z5X VU?QxPHx qYLxuLLntL'uLLL L(tL-KR uKRKRtKR $u'KRKR(tIq "~ +8=?CqH  v!#a% 02>xtF[M ! *@ 2778qDD &v) 0uC tAe>x uB>>t>uA>>R>"g>*t>/U@U@&tU@U@S uSSxtSSQ uQQt'QQPJ uPJPJtNKTx uKTKTYtKTuKTKTKT KT(qtKT-IuFIII7t$nIIH uHHqF^DjptDu?xt??r g6TVm$54PDFileWriter.mesaCopyright(C)1984,1985XeroxCorporation.Allrightsreserved.MichaelPlass,April9,19849:57:08amPSTDougWyatt,January19,19853:09:47pmPSTThisinterfaceprovidesawayofcreatingapd(printer-dependent)imagefile.DIRECTORYPDFileFormatUSING[DeviceCode,Toner],RopeUSING[ROPE];PDFileWriter:CEDARDEFINITIONS~BEGINPDState:TYPE~REFPDStateRec;PDStateRec:TYPE;DeviceCode:TYPE~PDFileFormat.DeviceCode;Toner:TYPE~PDFileFormat.Toner;LoadReference:TYPE~NAT;LoadReferenceRep:TYPE~RECORD[assignedLoadAddress:INT_-1,sSize,fSize:CARDINAL,data:SELECTtag:*FROMsamples=>[],tile=>[],runGroup=>[],ENDCASE];TFlag:TYPE~{opaque,transparent};CreatinganewPDfile.Create:PROC[fileName:Rope.ROPE,deviceCode:DeviceCode,sResolution,fResolution,imageSSize,imageFSize:CARDINAL,bandSSize:CARDINAL_16,copies:CARDINAL_1,leftOverMode:BOOLEAN_TRUE,maxLoadWords:INT_60000]RETURNS[pdState:PDState];SetPriorityImportant:PROC[pdState:PDState,priorityImportant:BOOLEAN]RETURNS[previousValue:BOOLEAN];priorityImportantisinitiallyFALSETonerSet:TYPE~PACKEDARRAYTonerOFInitiallyFalse;InitiallyFalse:TYPE~BOOLEAN_FALSE;StartImage:PROC[pdState:PDState,toners:TonerSet_[black:TRUE],feed,strip:BOOLEAN_TRUE];ThisinterfacemaybeusedtocreatecolorPDfileseitheronelayeratatime,oralllayerssimultaneously.Thetonersparameterspecifieswhichlayersaretobecreatedinthecurrentpass;feedappliestothefirstofthelayers,andstriptothelast.ThecalltoStartImagemaybeomittedifthedefaultparameterssuffice.sg/Eq_,x]x:"6 *,0[(!&).Z5? #Z(C*VxI~ ?!'(H*-59uSxtQ uQQtQ &}PHu>PHPH$tPHuPHPHtPHPH_Lx uLLeL0 tKQxuKQKQtHxuVHHtHuTHH(tH FZx uFZFZXtFZFZDx uDDmtD%C xu C C tC {Acx uAcAc<tAcuAcAcjtAcAc?xu??t?ju?? t?%i>uS>>t> "pu#t#x u)##*t#0u1##2Vt4##5 u@##@t#B!u!!t!!"'vtut!'~-;u89`t>Gutu"#>t(%(qUIx#UU$^tutgu!Dt%u**t,^u=^^t^u;^^t^$`u%^^&t)^^v t+u)t!'k,13u8 8t;9;cV\Wn"o'(+L.H1o4B59=?ADU@\ Dl!&O'+.902=4:=>AgvQtQQuQQtQ";u#QQ$ptQ'ovN t|NNuzNN3tNu xNN! tN$(c,8u0NN0t6PNN6vKRtDKRKRu BKRKR tKR#u%@KRKR%tKR(vHtHHuHHWtH"u#HH$DtH'Du'HH(`H+t0HH1qDx 8 "vAet AeAeuAeAetAe!u'kAeAe(>tAe-v1u6AeAe6t t>>u>>t>%+@u.>>/t2>>2eqt>>!u%{>>&Ft+>>,u1n>>2'>5_t:{>>u;c>><7tNN$tNuNNtNN_KRx uKRKRKR tIxuIIF[tF[F[uF[F[QtF[ uF[F[t 0F[F[qDxC tC uC C tC TuC C tC AeuAeAetAenuAeAetAem?X> Ct?##! uH!!t!Y!!!q O $&2)6+1pvtuEt &2) 1$ 8l u@#@tB/ uHt!Y!X uXXtXNqt bk t  vTVm$58warnings:wrongFormatVersion,unreasonableResolution,unreasonableBandSSize,unreasonableImageSize,unreasonableLoadSize,unreasonableNumberOfCopies,objectOutOfBand,emptyRunGroup,nonZeroFill,imageBoundsExceedPageBounds,tooFewBands,unknownColorTileFlag};FilecontrolOpen:PROC[fileName:ROPE]RETURNS[Handle];MayraiseFileIO.OpenFailed,PDFileReader.Error,orPDFileReader.WarningFromStream:PROC[stream:IO.STREAM]RETURNS[Handle];MayraisePDFileReader.ErrororPDFileReader.WarningClose:PROC[handle:Handle];ReadingoperationsGet:PROC[handle:Handle,scanning:BOOLEAN_FALSE]RETURNS[REF];ReturnsoneofthedatatypesbelowMayraisePDFileReader.ErrororPDFileReader.WarningIFscanning=TRUE,largeGetBlockswillnotbedoneforruns,loads,...Keep:PROC[handle:Handle,ref:REF]RETURNS[REF];Normally,storagereturnedbyacallonGetissubjecttore-useonlatercalls.CallingKeeppreventsre-useofthespecifiedstorage.ColorTileFromLoad:PROC[handle:Handle,colorTileLoadAddress:INT,scratch:REFImagerPixelMap.PixelMapRep_NIL]RETURNS[colorTile:ImagerPixelMap.Tile];DatatypesreturnedbyGetMaskRectangle:TYPE~REFMaskRectangleRep;MaskRectangleRep:TYPE~RECORD[sMin,fMin,sSize,fSize:CARDINAL];MaskTrapezoid:TYPE~REFMaskTrapezoidRep;MaskTrapezoidRep:TYPE~RECORD[sMin,fMin,fMinLast,sSize,fSize,fSizeLast:CARDINAL];MaskRunGroup:TYPE~REFMaskRunGroupRep;MaskRunGroupRep:TYPE~RECORD[sMin,fMin,sSize,fSize:CARDINAL,fOffset:CARDINAL,--addthistofMinofeachrunrunCount:INT,--numberofrunspointer:LONGPOINTERTOPDFileFormat.Run,loadAddress:INT,---1ifnotintheloadref:REF--forgarbagecollectionhacks];sg/Eq_:t][ZCXVUMSQ PV NM K`IqFix:vDtDDuDD_tD_ uArAr*tAr/Iq?%b'v>#t>#>#u>#>#ut>#tq:x v9-t9-9-u9-9-at9-a!u(%9-9-(.//mt3 9-9-u39-9-4t9-9u:a9-9-;5t<9-9-= q79)!/$5%b'46 #E),T.0359M="v2t22u22)t2("u%d22&8t'22u(22)ft2.u/22/t1G221q0"$&(*-.348:=A/@m !$)tv-tm--uk--t-!&u+u9--:9t;--<uA--Bt+)u+(++,t-4++u.++.t+4' *Iq&xJt%S u%S%SXt%Su%S%S qt%S"h#u%##t#"u$$##$t#)"a ,u$ ""$t \ uxt1u t" uF  t "u$D  %t )fa"&*A u0ff1lt uP tu N!"t#ouoo to#Hu$oo%to*Ga ,u$ $t*D u  t  q   !N"L$'z),.+1Rtxuqxxt|xxqYxx$&Xtu#t%) u))gt))q)) ^!\# $`&(i*t uL  q " (t TVm$59MaskSamples:TYPE~REFMaskSamplesRep;MaskSamplesRep:TYPE~RECORD[loadAddress:INT,---1ifnotintheloadsamples:ImagerPixelMap.PixelMap];ColorSamples:TYPE~REFColorSamplesRep;ColorSamplesRep:TYPE~RECORD[samples:ImagerPixelMap.PixelMap];DeviceCommand:TYPE~REFDeviceCommandRep;DeviceCommandRep:TYPE~RECORD[SEQUENCEwordCount:NATOFCARDINAL];StateChange:TYPE~REFStateChangeRep;StateChangeRep:TYPE~RECORD[whatChanged:WhatChanged,loadChangeStart,loadChangeLength:INT];WhatChanged:TYPE~{imageStart,imageEnd,priorityChange,colorChange,bandChange,loadChange,documentEnd};END.******************************************************sg/Et_, u_,_,et_,u_,_,~t_,!u]u2]]t]!u#1]]$t]([ u[[gt[[q[[ ^!\# $`&(i*tZ6QXV uVVtV>uVVtV!U@uSU@U@ tU@!u#RU@U@$&tU@(SQQPJ uPJPJtPJQu PJPJ!tPJ#Nu eNN!tN#u%dNN&8tN*uLtLp u#'LL$L& L(:tKTI uIItIouIItI HuHH=tH u"HH#VtH'F^  Dhu+DD,tCAh u3AhAhtAh!#1? $. 6 > $ +------------+|--||^|--|||fMin|--|sOrigin|vlines|--|<-------->+----------------------------+--|^originofbuffer--||--||fOrigin--||--||--|v--+-------------------------------------------->--DevicespaceoriginsAPixelMapdescribesawindowintoabuffer,andthebufferitselfmaybepositionedanywhereinaglobaldevicespace.ThewindowinginformationisstoredinthePixelMaprecord,sothatitmaybeeasilychangedtoaccomplishtranslationandclippingbyrectangles.Thetranslationfeaturemaybeusedfordestinationmapstoconvenientlyimplementbandbuffers.sg/Eq_,x]x:v!#' 02a6/[! $Q'`Z6?d"')Vx" $(*>uSxtQuQQtQ PIuPIPIltPI!2LxuSLLL L&tL+/u1]LL2qI#Z!#=% -a/3m8F:@CH\> 7#)+025<879 ?BF\\ v"#$v),Q. 58>?CdED\Ksv "$(+C,L//06D;\>AC \P!!#^%( .y0C qC 147T:=@\Af\'" #t>z>>t#t 9z 9 9 9 { !$&tztz{stCzCCCtztztLzLL.tz{2/'t,;qV T/$&',F.155#8l;\=, \S.:"=&)|0$ 7u8<>\! "$&*/1n 8V ?A `\6 c& #(r+b-20C2j 9C<>g \<gTVm$61PixelMap:TYPE~RECORD[Theseparametersdefineawindowwithinthebuffer,aswellaswherethebufferispositionedindevicespace;theyarefairgameforclientstomodify.sOrigin,fOrigin:INTEGER,sMin,fMin:INTEGER,sSize,fSize:NAT,refRep:REFPixelMapRep];DeviceRectangle:TYPE~RECORD[sMin,fMin:INTEGER,sSize,fSize:NAT];Intersect:PROC[a,b:DeviceRectangle]RETURNS[DeviceRectangle];Computestheintersectionofdevicerectangles.Create:PROC[lgBitsPerPixel:[0..4],bounds:DeviceRectangle]RETURNS[PixelMap];Allocatesanewpixelmap.CreateFrameBuffer:UNSAFEPROC[pointer:LONGPOINTER,words:LONGCARDINAL,lgBitsPerPixel:[0..4],rast:CARDINAL,lines:CARDINAL,ref:REF_NIL]RETURNS[PixelMap];Tocreateadescriptionofapre-allocatedframebufferasaPixelMap.Therefmaybeusedforfinalization,ifdesired;otherwisetheclientisresponsibleformakingsurethestoragedoesnotgoawaywhilethePixelMapisstillinuse.Clear:PROC[pixelMap:PixelMap];Averyfastwaytoclearawholebuffer.Theeffectisnotlimitedtothewindowedarea.Reshape:PROC[refRep:REFPixelMapRep,lgBitsPerPixel:[0..4],bounds:DeviceRectangle]RETURNS[PixelMap];MakesaPixelMapfromrecycledstorage.Copy:PROC[p:PixelMap,scratch:REFPixelMapRep_NIL]RETURNS[PixelMap];CopiesthewindowedpartofaPixelMap.ShiftMap:PROC[p:PixelMap,s,f:INTEGER]RETURNS[PixelMap];TranslatesthepixelMapindevicespace.ShiftWindow:PROC[p:PixelMap,s,f:INTEGER]RETURNS[PixelMap];Translatesthewindowindevicespace.Clip:PROC[p:PixelMap,bounds:DeviceRectangle]RETURNS[PixelMap];Furtherrestrictsthewindow.SetWindow:PROC[p:PixelMap,bounds:DeviceRectangle]RETURNS[PixelMap];Changesthewindow.Window:PROC[p:PixelMap]RETURNS[DeviceRectangle];BufferBounds:PROC[p:PixelMap]RETURNS[DeviceRectangle];Returnsarectangledescribingtheactualboundsofthebuffer.BoundedWindow:PROC[p:PixelMap]RETURNS[DeviceRectangle];sg/Et^xu&^^t^u$^^t^q\l JE z%O)m+/146>: t#XOO#'u+OO+t0OO15yu9ZOO:Bt;OO<2vLfxtLfLfuLfLfStLfS8u&LfLf'tLf,qJ L!% vGpxtdGpGpubGpGp tGp  $V)u4GpGp5`tGp: qE]VvBzxtBzBzuBzBzBz tBz#u)dBzBz*Bz-Tt2qBzBz3Nu7BzBz8Bz;tABzBz@!u$@@%{t*@@+u/x@@0Ct5@@6u9,@@:t@;u=@@>lt?@@u@v@@AJt?+ q=  @!u )p-H1624$;J> @C;\m \$\*F,0A1 8:?Bz:5\ mR $M&,.N02v6xt66u66Nt6M S q5? I? t$K)+/{y05?5?1q3P5?5?379t;Av1xtl11uj11t1u11^t1 U )V26A;u0It0I q.-v$v+Sxt|+S+Suz+S+S"t+S!Iu#+S+S$t+S& /au0+S+S1t2+S+Su3+S+S4t+S9 q):[ 5!# v&]xt&]&]u&]&]t&]!u"u$M&]&]$t)&]&]u*t&]&]+Ht&]0 q$ [m!%v!gx t-!g!gu*!g!gt!g#$u&]!g!g&t+!g!gu,!g!g-Yt!g2 q [1#vqxtqquqqtq;#u.qqq/Etq4| qwv{xtE{{uC{{t{"'u2{{3t{8 qSvxtJuHtu !t&v6x t66u666t66]u#66$t6*q  "%?)O-/1v @x tu @ @us @ @t @Bu% @ @&t @+TVm$g62p.Window.Intersect[p.BufferBounds]GetPixel:PROC[source:PixelMap,s,f:INTEGER]RETURNS[CARDINAL];Raisesboundsfaultifthepointisnotinthewindow.ThefollowinginlineversionsofGetPixelassumethattheclientalreadyknowsthenumberofbitsperpixel.Theydonoboundscheck,sincetheworstthatcanhappenisanaddressfault.GetBit:PROC[source:PixelMap,s,f:INTEGER]RETURNS[CARDINAL]~TRUSTEDINLINE{RETURN[LOOPHOLE[source.refRep.pointer+Basics.LongMult[(s-source.sOrigin),source.refRep.rast],LONGPOINTERTOPACKEDARRAY[0..0)OF[0..2)][f-source.fOrigin]]};Get2Bits:PROC[source:PixelMap,s,f:INTEGER]RETURNS[CARDINAL]~TRUSTEDINLINE{RETURN[LOOPHOLE[source.refRep.pointer+Basics.LongMult[(s-source.sOrigin),source.refRep.rast],LONGPOINTERTOPACKEDARRAY[0..0)OF[0..4)][f-source.fOrigin]]};Get4Bits:PROC[source:PixelMap,s,f:INTEGER]RETURNS[CARDINAL]~TRUSTEDINLINE{RETURN[LOOPHOLE[source.refRep.pointer+Basics.LongMult[(s-source.sOrigin),source.refRep.rast],LONGPOINTERTOPACKEDARRAY[0..0)OF[0..16)][f-source.fOrigin]]};Get8Bits:PROC[source:PixelMap,s,f:INTEGER]RETURNS[CARDINAL]~TRUSTEDINLINE{RETURN[LOOPHOLE[source.refRep.pointer+Basics.LongMult[(s-source.sOrigin),source.refRep.rast],LONGPOINTERTOPACKEDARRAY[0..0)OF[0..256)][f-source.fOrigin]]};Get16Bits:PROC[source:PixelMap,s,f:INTEGER]RETURNS[CARDINAL]~TRUSTEDINLINE{RETURN[LOOPHOLE[source.refRep.pointer+Basics.LongMult[(s-source.sOrigin),source.refRep.rast],LONGPOINTERTOPACKEDARRAY[0..0)OFCARDINAL][f-source.fOrigin]]};Equal:PROC[a,b:PixelMap]RETURNS[BOOLEAN];Testsforequality.IsAll:PROC[pixelMap:PixelMap,value:CARDINAL_0]RETURNS[BOOLEAN];Testsforaconstant.Trim:PROC[pixelMap:PixelMap,background:CARDINAL_0]RETURNS[PixelMap];Shrinkstheboundingboxtoremoveunneededbackground.Fill:PROC[dest:PixelMap,area:DeviceRectangle,value:CARDINAL,function:Function_[null,null]];Function:TYPE~RECORD[dstFunc:PrincOps.DstFunc,srcFunc:PrincOps.SrcFunc];[null,null]makeszerobitswhite,onebitsblack[or,null]makeszerobitstransparent,onebitsblack[and,null]makeszerobitswhite,onebitsblack[and,complement]makeszerobitstransparent,onebitswhite[xor,null]makeszerobitstransparent,onebitsinvertedetcetera.Transfer:PROC[dest,source:PixelMap,function:Function_[null,null]];DoesaBITBLTfromthesourcetothedest,throughtheintersectionofthetwowindows.Doestherightthingifthesourceanddestoverlapinthesamebuffer.sg/Eq_,"v[xt[[u[[^t[]$%wu&[['Wt,.[[u-[[-t[3!u3[[4Ot9[[:qZ5W -#%'s)+eVM !y#VV$qV)h.0316;?BU?\ "'k+.1H47:<>@TBGS\vQtQQuQQ0tQ0\$&Iu'QQ(*t-QQu-QQ.tQ3u4VQQ5!t:QQPHu'PHPHPHtPHuaPHPH 5tPH$u%1PHPH%t+PHPH+9>;#N#u/NN0FN3}N9N;8N@tLu?LLtLX# $vKRtKRKRuKRKRptKRp&('u)KRKR)jt.@KRKRu/'KRKR/tKR53u5KRKR6at;KRKRIu'IIItIuaII 5tI$u%1II%t+II+9>;#H#u/HH0FH3}H9H;8H@tF\u?F\F\tF\X# $vDtDDuDDptDp&('u)DD)jt.@DDu/'DD/tD53u5DD6at;DDC u'C C C tC uaC C 5tC $u%1C C %t+C C +9>;#Ae#u/AeAe0FAe3}Ae9Ae;8Ae@t?u???t?X #$v>t>>u>>pt>p&('u)>>)jt.@>>u/'>>/t>53u5>>6at;>>;#:#u/::0F:3}:9:;8:@t9 u?9 9 t9 X $i%gv7xt{7x7xuy7x7x!t7x  L&(9u)7x7x*t.7x7xu/7x7x0t7x5u6F7x7x7t<}7x7x5u'555t5ua55 5t5$u%155%t+55+9>;#4)#u/4)4)0F4)3}4)94);84)@t2u?222Xt$22$&S'Qv/3xt/3/3u/3/3t/3i-u /3/3!t/3&u'3/3/3't,/3/3-7q- 0v*<xtE*<*D?xutKutJ%u1D6qXIzi $'r) <m\ '[),u 'XG $'P)a  "% ,/24# ("*-<vxtu(t' '-248qx%qi#%>'*/2 93:=#? t\Y2!~%(Q+/1n37$TVm$63Tile:TYPE~RECORD[sOrigin,fOrigin:INTEGER,sSize,fSize:NAT,phase:INTEGER,refRep:REFPixelMapRep];AtileissimilartoaPixelMap,butthewindowspecificationsaremoreprimitive,andthereisanadditionalphasespecification.Atileisreplicatedtofilltheplane,withtileshiftedbyphasepixelsinthefdirectioneverysource.sSizelines.CreateTile:PROC[pixelMap:PixelMap,phase:INTEGER_0,fSizeHint:NAT_100,scratch:REFPixelMapRep_NIL]RETURNS[tile:Tile];ThepixelMapisturnedintoatile.Thismayinvolvereplicatingthepatterntomakealargertilethatwillspeedthecoloringoperation,sothesizeoftheresultwillnotingeneralbethesameasthesource.ThefSizeHintisusedtohelpdecidehowbigtomakethemacro-tile.Theclientmaysupplysomescratchstorageforre-use.TileFromStipple:PROC[stipple:CARDINAL,scratch:REFPixelMapRep_NIL]RETURNS[tile:Tile];Makesa4-by-4one-bit-per-pixeltilefromthestipplebits.TileFromConstant:PROC[pixelValue:CARDINAL,lgBitsPerPixel:[0..4]_0,scratch:REFPixelMapRep_NIL]RETURNS[tile:Tile];Makesatilewithaconstantvalue.TransferTile:PROC[dest:PixelMap,tile:Tile,function:Function_[null,null]];Transfersfromthetiledplanetodest.Rotate:PROC[pixelMap:PixelMap,scratch:REFPixelMapRep_NIL]RETURNS[PixelMap];MakesapixelMapthatisrotated90degreescounterclockwise.Repeattogetotherrotations.Reflect:PROC[pixelMap:PixelMap,scratch:REFPixelMapRep_NIL]RETURNS[PixelMap];MakesapixelMapthatisreflectedaboutthefaxis.PixelMapRep:TYPE~RECORD[ref:REF,pointer:LONGPOINTER,words:LONGCARDINAL,lgBitsPerPixel:[0..4],--logarithmbasetwoofbitsPerPixelrast:CARDINAL,lines:CARDINALStoredcontiguously,witheachlinepaddedtoawordboundary,rastwordsperline.Therefisforgarbagecollectionhacks;thelongpointerpointstotheactualbits.Musthaverast*lines<=words.Clientsshouldtrytoavoiddealingdirectlywiththisrecord.];END.******************************************************sg/Et_,xu_,_,t_,;u_,_,t_,:]u ]]ut K]][Tu5[[t[[Z6uZ6Z6Nt$Z6Z6XuXXstXj VqU@ aI##&&(r-G 5}7;: A1S\3& u"6 *,E.0 6'79<5@/C*Q\J+ #$)-# 4vNx tNNuNNitNi o&u+VNN+tN1244 u:NN;tN=?SLuLLtL %7u&LL't(LLu)LL*tL/2qKTM_ !#&7)G,70 7h9>X?CI\Ho "() .x012}569<?[AH\9[!&)w/1458<?AF^\ U !Y%','/418;vCxt*CCu'CCtCu"CC"t(SCC)/u.FCC/tC1 9u;GCC<0t=SCCu>:CC?tAhq?-[$&*,`0vx; Q1#%)&1(),i/l2uQxtPH uPHPHtPH5LxuLLL tL&u(]LL)qKQxtIu}II6tI {xHqH@x "HH q%NHH&+*x-HH.q0CHH0tDuZDDtDuXDDDXtD rqC (]5 "&b(*T,073^Ac3xAcAc jqAc"'.)x-AcAc.dqAc0 :a<x?q> !+v:ts::up::t: @u%::&t:, q9Z,x C%'g t7vu#7v7v#t'"7v7vq5xv4& t4&4&u4&4&Mt4&M2u.22tQ22q922 #&%t0u00ct00A"u#00#t(X00)5u-00-t/00/q1N00126t9<'?eC=t/0uT/0/0tw/0/0u+/0/0,t.D/0/0q//0/00)1'47:<-@<Aqt-+u++Vt+ q*9^fj"F$&*,.8V9;F>6@D(m,`"+v%B t%B%Bu %B%Bt%B)u4%B%B5bt%B: q#x v!t0!!u.!!t!u"!!#!%t!'q L"%2&(.M158=?Tm #0&+:,o.25K7:?-@ma W$&(.3 9;=>/Um x_(ev_t__u__3t_2u^__t)__u#__$t_) vt1u/tu":#t(F v tu>t=#u%&ut+ v q t q qu q qVt qV;u$ q q%t q* 2TVm$66ModifyingexistingPolygonsShift:PROC[polygon:Polygon,sShift,fShift:INTEGER];Canonicalize:PROC[rectangleList:LISTOFDeviceRectangle]RETURNS[Polygon];TurnsalistofarbitraryrectanglesintoavalidPolygon.Re-usesthestorage,socopyfirstifrectangleListmightbeshared.ExtractinginfofromPolygonsBoundingBox:PROC[polygon:Polygon]RETURNS[DeviceRectangle];CountBoxes:PROC[polygon:Polygon]RETURNS[INT];CountRuns:PROC[polygon:Polygon]RETURNS[INT];MapRuns:PROC[polygon:Polygon,run:PROC[sMin,fMin:INTEGER,fSize:NAT]];Visibility:TYPE~{visible,partlyVisible,invisible};IsVisible:PROC[mask,clipper:Polygon]RETURNS[Visibility];SELECTIntersection[mask,clipper]FROM=empty=>invisible,=mask=>visible,ENDCASE=>partlyVisible;N.B.willreturninvisibleifmaskisempty.END.******************************************************sg/Eq_,x v]tl]]ui]]t]9#(#u,s]],t1]]2vZ6 tZ6Z6uZ6Z6tZ6u%Z6Z6&rZ6(tZ6*u5Z6Z66tZ6; qX!< '*S+.49<1A2BVm< #%SU@x 8;vS tSSuSS<tS;#du)SS)tS/*vPJ tPJPJuPJPJktPJj"u(MPJPJ)!tPJ.Yu.PJPJ/&t0PJPJ1+vLt+LLu(LLtL!u'LL(tL-u.!LL.t0-LL0vItNIIuLIItI!&u)II*tI-1u5II6&t:II;u?II@tB.IIBF^ uF^F^tF^P!5 ) vCtCCuCCDtCC#u)bCC*6tC/n qAh#(?! >'x t1>>u.>>tQ>>T/2/2?q- g6) %S)+i.0`2v*<x t*<*u$OO%tO*=uN tN _ u!N N !N $tN &)LfJuJJftJuJJJJ'~tJ,qI S! "c$&*-f.tGpu#GpGp tGpGpquGpGp!PtE D!Bz u"BzBztBz # @ u@@@wt@!u#u@@$It@&??+uE?+?+?+ t?+$1u%?+?+&t?++1u0G?+?+1/t2?+?+3u6?+?+7&t?+=K u===t!==!s; u;;;t;" u#;;$jt;) :5 u:5:5t:5:5q:5:5 B!@ '),a03-59;>B8t6  5? u5?5?tN5?5?q*5?5?#%*(<+d.614+t3u33t10Iu0I0I0It0I u!0I0I"ct0I'.Cu..mtC..q .. !#<'?t,u,,,tc,,+Su+S+St+S+S) u))t))q)) B!@ '),a03-59;>B(t&] u&]&]t &]&]q &]&]!e"c'H(+/&15T7t$  #u##st!##!gu!g!gt!g!gut ut quqqq !$G +]-0w1_# !L#1&24t{u-xt--r g6TVm$69ImagerStroke.mesaCopyright(C)1984,1985byXeroxCorporation.Allrightsreserved.MichaelPlass,February6,19841:34:15pmPSTDougWyatt,January21,198510:24:09pmPSTDIRECTORYImagerPathUSING[PathProc],ImagerScanConverterUSING[DevicePath,DeviceRectangle],ImagerTransformationUSING[Transformation],Vector2USING[VEC];ImagerStroke:CEDARDEFINITIONS~BEGINVEC:TYPE~Vector2.VEC;Transformation:TYPE~ImagerTransformation.Transformation;PathProc:TYPE~ImagerPath.PathProc;DevicePath:TYPE~ImagerScanConverter.DevicePath;DeviceRectangle:TYPE~ImagerScanConverter.DeviceRectangle;DevicePathFromStroke:PROC[path:PathProc,closed:BOOL,width:REAL,style:INT,dashes:REF_NIL,clientToDevice:Transformation,clipBox:DeviceRectangle,scratch:DevicePath_NIL--forre-useofstorage]RETURNS[devicePath:DevicePath];Bezier:TYPE~RECORD[b0,b1,b2,b3:VEC];--BeziercontrolpointsforacubiccurveSubdivide:PROC[bezier:Bezier,vertex:PROC[VEC],tolerance:REAL_0.5];FlatBezier:PROC[bezier:Bezier,epsilon:REAL]RETURNS[BOOLEAN];Split:PROC[bezier:Bezier]RETURNS[firstHalf,secondHalf:Bezier];StrokeDashes:TYPE~REFStrokeDashesRep;StrokeDashesRep:TYPE~REF;Thisisopaquesowecanexperimentwiththespecification.Stroke:PROC[path:PathProc,closed:BOOL_FALSE,m:Transformation_NIL,width:REAL,style:StrokeStyle_[square,miter],dashes:StrokeDashes_NIL,moveTo:MoveToProc_,lineTo:LineToProc_,curveTo:CurveToProc_,conicTo:ConicToProc_NIL,arcTo:ArcToProc_NIL];Producestheoutlineofastroke,givenapathforthecenterline.END.******************************************************sg/Eq_,x]x:$ ,{.2[r $E).+yZ6? #Z(+>uVxtU@ uU@U@tU@1 SuSStS"E *JQusQQYtQ"PJuPJPJtPJuWPJPJ"tPJPJ Lx uzLLDL tKTxuKTKTHxtHHuHH~tH6uHHtHHF^xuF^F^gtF^$DxuDDtD@Ahx u;AhAhtAh9?xuk??$t?j$vL__Kxq;qh "U#(-!1 :kx;<q=K #e *,2T :iK &xiioq ii!%,x.Lii/)q0gii0Q$^'),1.X0 usxtssr g6TVm$70ImagerPixelRow.mesaCopyright(C)1984,1985byXeroxCorporation.Allrightsreserved.MichaelPlass,August6,19849:07:08amPDTDougWyatt,January19,19853:06:59pmPSTDIRECTORYImagerPixelMapUSING[PixelMap,PixelMapRep],ImagerTransformationUSING[Transformation];ImagerPixelRow:CEDARDEFINITIONS~BEGINPixelMap:TYPE~ImagerPixelMap.PixelMap;PixelMapRep:TYPE~ImagerPixelMap.PixelMapRep;Transformation:TYPE~ImagerTransformation.Transformation;Pixel:TYPE~CARDINAL;PixelRow:TYPE~REFPixelRowRep;PixelRowRep:TYPE~RECORD[sOrigin:INTEGER,fOrigin:INTEGER,fSize:NAT,pixel:SEQUENCEmaxSize:NATOFPixel];CreatePixelRow:PROC[sMin,fMin:INTEGER,fSize:NAT]RETURNS[new:PixelRow];ClearPixelRow:PROC[pixelRow:PixelRow];CopyPixelRow:PROC[pixelRow:PixelRow,scratch:PixelRow_NIL]RETURNS[new:PixelRow];AddByColumn:PROC[dest,source:PixelRow];SubtractByColumn:PROC[dest,source:PixelRow];LoadPixelRow:PROC[pixelRow:PixelRow,source:PixelMap];StorePixelRow:PROC[pixelRow:PixelRow,dest:PixelMap];TransferSamples:PROC[dest,source:PixelMap,transformation:Transformation,tile:BOOLEAN_FALSE,multiplier:CARDINAL_1,lgScale:INTEGER_0];UnderSample:PROC[pixelMap:PixelMap,transformation:Transformation,tile:BOOLEAN_FALSE,background:CARDINAL_0,scratch:REFPixelMapRep_NIL]RETURNS[PixelMap];BoxFilter:PROC[pixelMap:PixelMap,sSizeBox,fSizeBox:NAT];BoxTooBig:ERROR;ChangeBitsPerPixel:PROC[pixelMap:PixelMap,newLgBitsPerPixel:[0..4],scratch:REFPixelMapRep_NIL]RETURNS[PixelMap];Renormalize:PROC[pixelMap:PixelMap,oldmin,oldmax,newmin,newmax:REAL];sg/Eq_,x]x:$ ,{.2[K#(*RZ5? #Z(C*uVxtU? uU?U?tU?5 &$ SusSSYtS"PHxuSPHPHPH tNxuNNtLxu&LLtL$KRx uKRKRTtKR IxuIIgtI$HxucHHtHubHH-tHHF[xu%F[F[tF[u$F[F[tF[ Dx uDDTtD uDDmtD" C uC C Jt C C AeuAeAe?tAeAe?uj??St??>uj>> t>.u!>>!>$t>&(/22>0 v-x t--u--t --# v*<xt*<*XX?tXDutJ& u!+!t')s+u00t2 ;u=>t?$u@ @t  vxt'u%tHN%+u2,3t45 u3tEvxtfuc t%,8?;uAAt Uut u!"t'\' v x t u t d!',17u=k >?t@ @TVm$71END.******************************************************sg/Eu_lxt_l_lr g6<TVm$72ImagerSampler.mesaCopyright(C)1984,XeroxCorporation.Allrightsreserved.MichaelPlass,August7,19843:17:05pmPDTDougWyatt,October18,19849:22:40amPDTDIRECTORYImagerPixelMapUSING[PixelMap],ImagerPixelRowUSING[PixelRow],ImagerTransformationUSING[Transformation],ScaledUSING[Value];ImagerSampler:CEDARDEFINITIONS~BEGINPixelMap:TYPE~ImagerPixelMap.PixelMap;Transformation:TYPE~ImagerTransformation.Transformation;Pixel:TYPE~CARDINAL;PixelRow:TYPE~ImagerPixelRow.PixelRow;Sampler:TYPE~REFSamplerRep;SamplerRep:TYPE~RECORD[m:Transformation,x,y:INTEGER,sPixels,fPixels:NAT,sStart,fStart:Scaled.Value,--InverseTransform[m,[x+0.5,y+0.5]]MOD[sPixels,fPixels]sDelta,fDelta:Scaled.Value,--InverseTransformVec[m,[0,1]]sDeltaLine,fDeltaLine:Scaled.Value--InverseTransformVec[m,[1,0]]];CreateSampler:PROC[m:Transformation,x,y:INTEGER,sPixels,fPixels:NAT]RETURNS[sampler:Sampler];SetSamplePosition:PROC[sampler:Sampler,x,y:INTEGER];Incremental,assumingsampleHandleisalreadycorrect.ObtainPointSamples:PROC[pixelRow:PixelRow,source:PixelMap,sampler:Sampler,multiplier:CARDINAL_1,lgScale:INTEGER_0];Uses[pixelRow.sOrigin,pixelRow.fOrigin]toset[sampler.x,sampler.y]Fetchesonlysamplepointsthatfallwithinsource.BoundedWindowUnfetchedsamplesareunchangedinthebufferPixelvaluesaremultipliedbymultiplier*2**lgScaleObtainInterpolatedSamples:PROC[pixelRow:PixelRow,source:PixelMap,sampler:Sampler,multiplier:CARDINAL_1,lgScale:INTEGER_0];InterpolatesfoursurroundingpixelstogetresultPixelvaluesaremultipliedbymultiplier*2**lgScalebeforeinterpolationHalftoneLine:PROC[dest:PixelMap,pixels:PixelRow,thresholds:PixelRow,invertOutput:BOOLEAN_FALSE,transparent:BOOLEAN_FALSE];Eachthresholdistheminimumpixelvaluethatshouldbedisplayedaswhite.White=IFinvertOutputTHEN1ELSE0sg/Eq_,x]K! )l+/[K#(*RZ5? #X(A*uVxtU? uU?U?tU?5 S uSStS4 QusQQYtQ"PHuPHPHtPH.Lx uLLXL# tKRxuKRKRtHxu&HHtH$F[xuF[F[gtF[$DxucDDtDubDD-tDDC xu%C C tC $?xu`??t?u^??2t?) >x u>>t>Gu>>t>!Fl5\t4)& q"W4)4)"#24t2  F q'l22'(79t0v-x tB--u?--t-q(*u+--,+t1--16u;--<t>--u>--?t+KSv(xt((u((Zt(Z$b*(+u-c((-t2((3q& lN '(~-<v#xt##u##Xt#X &^,18?=!K u%!!t!mu%!!%t!*,lq O'*+- 4 lh #&*9R%&)X, "v xt  u  Ot #O *T05<6bK ubbtb"$4%u*bb+Ltb023q  "Z&;'* , "/3 vx tdua t%U)0F 7X= uKtputw u###t)Hu*+t.s.q u J#&*-V13l9=: x~ q / x  q #x% %q (TVm$73DotScreen:PROC[r:REAL_0.5,sSize:NAT_16,fSize:NAT_16,maxPixelValue:CARDINAL]RETURNS[pixelMap:PixelMap];CreatesapixelMapwiththresholdsderivedfromtwocrossedcosines,uncorrectedTRC.ApplyTRC:PROC[thresholds:PixelMap,trc:PROC[x:REAL]RETURNS[y:REAL],maxPixelValue:CARDINAL];AdjuststhevaluesinthepixelMapsotheyturnonaccordingtothegiventransferfunction.Thexvaluesoftrcspecifytheinputs,asfractionsofmaxPixelValue.Theyvaluesoftrcspecifytheoutputs,as(numberofblackpixels)/(sSize*fSize)Bothxandyrangeover[0.0..1.0]Trcshouldbeanondecreasingfunction.Identity:PROC[x:REAL]RETURNS[y:REAL];Justreturnsy.END.******************************************************sg/Ev^xt^^u^^rt^quV^^*t^ #u'^^'t^)+-u1^^2t^46,8i u\Kt\\ui\\=t\u #{ q[Hj &*-0m5: xAF[H[HBvWxtWWuWW^tW^ '`u)WW*t-xWW-u/WW0]t2WWu3WW4^tW9u;WW<{t>WW?$VRK u)VRVRt_VRVRqTTU%'l*]-Q/E5f7 9W<S\Q\MJ^ #'o)(.0U OMv(< "( )/!04nN ) LfZ*^ #vIxt IIuIItIuIItIIuIItI#u%II&t(II)YqGpZuD!xtD!D!r g6TVm$74ImagerDevice.mesaCopyright(C)1984,1985byXeroxCorporation.Allrightsreserved.DougWyatt,January19,19853:07:39pmPSTDIRECTORYImagerColorUSING[Color],ImagerPixelMapUSING[DeviceRectangle],ImagerTransformationUSING[Transformation],Vector2USING[VEC];ImagerDevice:CEDARDEFINITIONS~BEGINColor:TYPE~ImagerColor.Color;DeviceRectangle:TYPE~ImagerPixelMap.DeviceRectangle;Transformation:TYPE~ImagerTransformation.Transformation;VEC:TYPE~Vector2.VEC;HalftoneParameters:TYPE~RECORD[dotsPerInch:REAL,angle:REAL,--degreesanticlockwisefrom+xaxisshape:REAL--0.5iscircular];RunProc:TYPE~PROC[sMin,fMin:INTEGER,fSize:NAT];Device:TYPE~REFDeviceRep;DeviceRep:TYPE~RECORD[class:Class,--classoperationsdata:REF,--instancedataclipBox:DeviceRectangle,--boundingrectangle,indevicecoordinatessurfaceToDevice:Transformation,--transformationfromsurfacetodevicecoordinatessurfaceUnitsPerInch:VEC,--xandyscalefactorssurfaceUnitsPerPixel:NAT--surfaceresolutionmaybeamultipleofpixelresolution];Class:TYPE~REFClassRep;ClassRep:TYPE~RECORD[type:ATOM,SetColor:PROC[device:Device,color:Color,viewToDevice:Transformation],SetPriority:PROC[device:Device,priorityImportant:BOOL],SetHalftone:PROC[device:Device,halftone:HalftoneParameters],MaskRuns:PROC[device:Device,runs:PROC[RunProc]]];SetColor:PROC[device:Device,color:Color,viewToDevice:Transformation]~INLINE{device.class.SetColor[device:device,color:color,viewToDevice:viewToDevice]};Establishthecolorforfollowingmasks.SetPriority:PROC[device:Device,priorityImportant:BOOL]~INLINE{device.class.SetPriority[device:device,priorityImportant:priorityImportant]sg/Eq_:x]x:$ ,{.2[? #Z(C*uXxtV uVV|tVUM uUMUMtUM5SusSSYtS"QuQQtQuWQQ"tQQ Nx uNNNQ tMxuMMtIxuIItICHxukHH$tHjFixuFiFigtFi$uDxtDDuDD~tD6uDDtDDArxu;ArArtAru 9ArAr! t%'ArAr? u??xt??>#u>#>#t>#>#q>#># '*V-t<|u<|<|q<|6t:7xu77rt7*u77^t77=!u%77%~t*T77+0u/77/t177146xu4646Gt46u4646at46W 2x u22t2uu22t2203q00 t/@u/@/@tN/@/@q*/@/@t-q --!N"K(. .R/3 t+qq%++%& 03R79= t*Iu*I*Idt*I*Iq *I*I!>"<#&+'T*t(u((q( "K& -#0138T9=T t&#xu##>t#u##Wt#N"xu""t"lu""t"" \u \ \t \ \vtu{tY$ (,; 5v  t  u  t6   W%Lu0  1qt3  4Fve teeueejteeI!%+vtut l *%u()Zt+,9vxtujtH!%** 3ut)Y-15 x q]8$ v x t u t$ E#:u. /`t1 u t *y/:"TVm$75};Declarewhetherpriorityorderisimportantforfollowingmasks.SetHalftone:PROC[device:Device,halftone:HalftoneParameters]~INLINE{device.class.SetHalftone[device:device,halftone:halftone]};Sethalftoningparameters.MaskRuns:PROC[device:Device,runs:PROC[RunProc]]~INLINE{device.class.MaskRuns[device:device,runs:runs]};Applythecurrentcolorwithinthespecifiedruns.END.******************************************************sg/Et_,q]c"$W*,2vZ6x tZ6Z6uZ6Z6YtZ6Z68#)XuXXtX+6/5;vqV j vSxtSSuSS|tSS[#u&SS'It)SS*'QuQQtQ*x/26&qPJuo"%@*uKTxtKTKTr g6TVm$76ImagerPDDevice.mesaCopyright(C)1984,1985byXeroxCorporation.Allrightsreserved.DougWyatt,January19,19853:08:27pmPSTDIRECTORYImagerDeviceUSING[Device],PDFileWriterUSING[PDState];ImagerPDDevice:CEDARDEFINITIONS~BEGINCreate:PROC[pdState:PDFileWriter.PDState,sSize,fSize,sPixelsPerInch,fPixelsPerInch:CARDINAL]RETURNS[ImagerDevice.Device];END.******************************************************sg/Eq_:x]x:$ ,{.2[? #Z(C*uXxtV uTVV9tVUN u2UNUNtUN| QxuQQxQB tPXxuPXPXvM xtdM M ubM M  tM M cKbT!u+KbKb+t1VKbKbuItIItuFlxtFlFlr g6TVm$77ImagerRasterPrivate.mesaCopyright(C)1984,1985byXeroxCorporation.Allrightsreserved.DougWyatt,January19,19853:12:20pmPSTDIRECTORYBasicsUSING[BITAND,BITNOT,BITOR],ImagerDeviceUSING[Device],ImagerManhattanUSING[DeviceRectangle,Polygon],ImagerScanConverterUSING[DevicePath],ImagerTransformationUSING[Transformation];ImagerRasterPrivate:CEDARDEFINITIONSIMPORTSBasics~BEGINDevice:TYPE~ImagerDevice.Device;DevicePath:TYPE~ImagerScanConverter.DevicePath;Transformation:TYPE~ImagerTransformation.Transformation;ManhattanPolygon:TYPE~ImagerManhattan.Polygon;DeviceRectangle:TYPE~ImagerManhattan.DeviceRectangle;Flags:TYPE~RECORD[clientToDevice:BOOL_FALSE,--clientToDeviceisvalidcharToDevice:BOOL_FALSE,--charToDeviceisvalidclientClipper:BOOL_FALSE,--clientClipMaskandclientClipBoxarevaliddeviceColor:BOOL_FALSE,--colorlastsetbySetColor[device,...]isvaliddevicePriority:BOOL_FALSE,--prioritylastsetbySetPriority[device,...]isvalidunused:[0..3777B]_0];noFlags:Flags~[];OrFlags:PROC[f1,f2:Flags]RETURNS[Flags]~INLINE{RETURN[LOOPHOLE[Basics.BITOR[LOOPHOLE[f1],LOOPHOLE[f2]]]];};AndFlags:PROC[f1,f2:Flags]RETURNS[Flags]~INLINE{RETURN[LOOPHOLE[Basics.BITAND[LOOPHOLE[f1],LOOPHOLE[f2]]]];};NotFlags:PROC[f:Flags]RETURNS[Flags]~INLINE{RETURN[LOOPHOLE[Basics.BITNOT[LOOPHOLE[f]]]];};Data:TYPE~REFDataRep;DataRep:TYPE~RECORD[device:Device_NIL,--aparticularrasterdevicedevicePath:DevicePath_NIL,--scratchstorageforscanconvertervalid:Flags_[],viewToDevice:Transformation_NIL,--alwaysvalidviewClipMask:ManhattanPolygon_NIL,--devicecoords;alwaysvalidviewClipBox:DeviceRectangle_[0,0,0,0],--devicecoords;alwaysvalidsg/Eq_:x]x:$ ,{.2[? #Z(C*uXxtVuVVtVuNVVtVVuVVat#VVu#VV$t'kVV'UM uTUMUM9tUMSuSStS+2QuQQtQ"E PVusPVPVYtPV"MxuMM]M ' K`xtK`(IxuIItFixuFiFiGtFiDx u;DDtD9CxuCCgtC$ArxuArArztAr2?xuk??$t?j<|xu<|<|Tt<| u<|<|mt<|<|:u~::7t:.u:: tt#X::q$5::$% .0At9- u9-9-t9-}u 9-9-t"9-9-q#9-9-#$ -.t7 u?77t7u{774t"77q"77#o$l -0 9;et5 u55\t5Ru55t!}55q"Z55"#'8)+-79;t46u4646{t46ru4646t"4646q#y4646#$),F.Y03;a=\>t2 0-xRv*IxtL*I*IuJ*I*Itm*I*Iu *I*I t%*I*I%*u+*I*I+t*I0(u(tr(u(t#((u q((!*t#(u($at*((+u-|((.5t3((4.&v#xt##u##t'##u ##!t&K##&*u,G##,t#0u"tr"u"t#""u q""!*t$"u"%Rt+"",u.m""/&t4""5 \v xt  u  t  tu  t#~  #'u)z  )t .uetreuet#eeu qee!*t$eue%/t+}ee+oxuOootouMoo!toxu}t6utGuqYt|qY! '1*tx  =u xx!t"xxq#xx$,%)).r03tj)  #u%B))&+t'N))q(*))()-t  %u'_ (Ht)k q*G *+/4t8t  #%"'(*,q, ,-16I:7TVm$78clientToDevice:Transformation_NIL,--validiffvalid.clientToDeviceclientClipMask:ManhattanPolygon_NIL,--devicecoords;validiffvalid.clientClipperclientClipBox:DeviceRectangle_[0,0,0,0],--devicecoords;validiffvalid.clientClippercharToDevice:Transformation_NIL--validiffvalid.charToDevice];CreateData:PROC[Device]RETURNS[Data];END.******************************************************sg/Et_,~ $;u%_,_,&t'_,_,q(_,_,))*&-m/2t]&Xu']](t)]]q*]]+F,D0G48?:t[ $%')%*q,[[-.26:;tZ6  #u%Z6Z6&qZ6'),d.)tXvU@x tRU@U@uOU@U@trU@U@uU@U@t$]U@U@$uQxtQQr g6~TVm$79ImagerMaskCache.mesaCopyright(C)1984,1985byXeroxCorporation.Allrightsreserved.CreatedMay1,1984MichaelPlass,August23,198410:32:54amPDTDougWyatt,January26,19855:36:29pmPSTDIRECTORYBasicTimeUSING[GMT],PDFileFormatUSING[Run],ScaledUSING[Value],ImagerTransformationUSING[Transformation],RopeUSING[ROPE];ImagerMaskCache:CEDARDEFINITIONS~BEGINOverviewThisistheinterfacetotheglobalcacheofcharactermasks.Thiscachelivesonthelocaldiskunderthename"[]<>FontCache.dontDeleteMe".Normallyatmostonecacheisinactiveuseatanygiventime.Thecachemaybeinoneofthefollowingstates:disabled-notinuseatall.readOnly-filemaybeopenforread,butnothingwillbeaddedtothefile.extendable-fileisopenforwrite;newmasksmaybeadded.(normalstate)transition-movingbetweenstates.Thefileformatconsistsofafixed-lengthheaderatthebeginning,alargenumberofvariablelengthrecords,andawordofzerosasatrailer.Thefileformatissimpleenoughandhasenoughredundancysothatitshouldbescavangableevenifleftinasomewhatinconsistentstate.Sinceitisjustacache,itshouldalwaysbecorrecttothrowawaythefontcachefileandstartover,butinpracticeitmayprovetobesomewhatcostlytorebuildittoausablestate.Thereisahashtableinvirtualmemorythatmapseachfont/transformation/charcodetoanindextothemaskinthecache.Thishashtableisrebuiltwheneverthefontcacheisopened,andmaintainedasnewmasksareaddedtothecache.Eachentryinthehashtablealsocontainsausecount,whichismergedbackintothefontcachefilewhenitisclosed;thesestatisticsmaybehelpfulforutilitiesforofflineprocessingofthecache,suchascullingrarely-usedentries,groupingfrequently-usedentriestogether,orcalculatingbit-tunedversionsofthemasks.Eachmaskisidentifiedbythetriple[fontID,transformation,charCode]wherefontIDisauniqueidentifer(i.e.,hierarchicalnameandtimestamp)forthefontthatwasthesourceofthemasktransformationisthe(affine)transformation(charactercoordinates=>devicecoordinates),togetherwithacodedescribingthetypeofscanconversionused.charCodeisthe32-bitcharactercode.ThefontcachefilecontainsentriesthatmapfontIDsandtransformationsonto16-bitcodes,sothatthe[fontID,transformation,charCode]identifieris4wordslong.sg/Eq_,x]x:$ ,{.2[RZ4K #)h+X? #Z(C*uU<xtSu7SStSuSStSSQ uQQtQPDuPDPDtPD.NusNNYtN"Lu>LL$tLuLLtLL_IxuIITI tGxuGGvD gqA]x@o"&(-.369<>A$?K.I/57z:=GA Bu>K$)M!2#'*,w.02O4:nj /(K\kp!#'\+-237u:=3@C-K S[!h"%)O*,268c<>B?A+K(x[-'!n&)e,0 AC&K0|#&*)],.2c8::=XA%;K- "H&c(,.<05'8<=@CB#Kl"$c),_/&1r4D8:Z=?3@!K *!g#(\*. 5/69=9@VB EK 1 ).235 <_KdTMx !|T%xU v!g$l +/q2 9;)=u@GC\{  Y" +3 1 8;C_\ D!|"% ,$.p1U26 <K-$x;$x#&).1B:=A gK"%]+g,Y 23{48TVm$80FontCacheFileRecordDefinitionsCoefficients:TYPE~MACHINEDEPENDENTRECORD[a,b,c,d,e,f:REAL];denominatorisalwayspositivepasswordValue:CARDINAL~0FCACH;Header:TYPE~MACHINEDEPENDENTRECORD[password:CARDINAL,numberOfEntries:LONGCARDINAL,numberOfWords:LONGCARDINAL,totalUsage:LONGCARDINAL];EntryType:TYPE~MACHINEDEPENDENT{trailer,unused,fontIDCode,transformationCode,mask};EntryPrefix:TYPE~MACHINEDEPENDENTRECORD[entryType:EntryType,entryLengthInWords:[0..8192)notincludingtheprefixword];FontIDCodeEntry:TYPE~MACHINEDEPENDENTRECORD[codeValue:CARDINAL,createdTime:BasicTime.GMT,name:PACKEDSEQUENCEchars:CARDINALOFCHARThenameisstoredusinglower-caseletters,withslashesseparatingthecomponents.];TransformationCodeEntry:TYPE~MACHINEDEPENDENTRECORD[codeValue:CARDINAL,coefficients:Coefficients,scanConversionType:ScanConversionType];ScanConversionType:TYPE~MACHINEDEPENDENTRECORD[rasterAlignment:{unaligned,aligned}_unaligned,tuning:{none,quick,slow,hand}_none,sSpread,fSpread:[0..4)_0,spare:BOOLEAN_FALSE,algorithmCode:CHAR_'\000];MaskRepresentation:TYPE~MACHINEDEPENDENT{raster,runs};MaskEntry:TYPE~MACHINEDEPENDENTRECORD[fontIDCode:CARDINAL,transformationCode:CARDINAL,charCode:INT,usage:CARDINAL,sWidth,fWidth:Scaled.Value,sMinBB,fMinBB:INTEGER,sg/Ev_, go t[x u[[@t[u[[[![)Yt[.02T35n6u8g[[9;t;[[;qZ6 UtVx ubVV-tVz VV!tU?xuU?U?tU?CuU?U?U?U?&tU?,SuSStQuQQQt&QQPH uPHPHaPHt%PHPHN uNNNtLIx uIItI=uIII tH "/Dx uODD tDuNDD_D!tD)!tD.C   Adq?-!t>:xuh::!t:ug:: x:%:-:t:29 u99t997w  uf7w7w Ut"7w7w5u55j5t5 u$55%5+5-q4(^nf! (,/4V := t2/2xu%/2/2t/2"u$#/2/2%5/2*I/21t/27i- u--t--+ 6 *;(%Dxu %D%Dt%D}u! %D%D"%D'/%D.t%D4O# "() !]!y%'5 N u[tuS t uh2tDWxuatu !&t.z3Mx uttu!'(t.F utjuljj7t#jju8tCut s 9u ht!> TVm$81sSizeBB,fSizeBB:CARDINAL,flag:PACKEDARRAY[0..12)OFBOOLEAN,--forpaddingandexpansionamplified:BOOLEAN,correctSpace:BOOLEAN,correctMask:BOOLEAN,data:SELECTrepresentation:MaskRepresentationFROMraster=>[bits:SEQUENCECOMPUTEDCARDINAL--sSize*Ceiling[fSize/16.0]--OFWORD],runs=>[nRuns:CARDINAL,run:SEQUENCECOMPUTEDCARDINALOFRun],ENDCASE];Run:TYPE~PDFileFormat.Run;[fMin:CARDINAL,lastRun:BOOLEAN,fSize:NAT]fMinisrelativetofMinBBFontCacheOperationsStatus:TYPE~{disabled,readOnly,extendable,transition};Mask:TYPE~REF;Transformation:TYPE~ImagerTransformation.Transformation;ROPE:TYPE~Rope.ROPE;GetStatus:PROC[waitDuringTransition:BOOLEAN_TRUE]RETURNS[Status];DoUnderLock:PROC[action:PROC];Callstheactionprocedure.Untiltheactionprocedureterminates,nootherprocesseswillbeallowedtoalterthestatusofthecache.Disable:PROC;Turnsthefontcacheoff,aftercompletinganypendingwrites.MakeReadOnly:PROC;Makesthecacheread-only,aftercompletinganypendingwrites.Updatestousecountsarestillallowed.Enable:PROC;MakesthecacheextendableFontCacheInconsistency:ERROR[reason:ATOM,wordOffset:INT];TransID:TYPE~REFTransformationCodeEntry;Canonicalizedatcreation.ThecodeValuefieldmaychangewhenthecacheistrimmed.TransIDFromTransformation:PROC[transformation:Transformation,scanConversionType:ScanConversionType,hint:TransID_NIL]RETURNS[TransID];Thehintmaybesuppliediftheclienthasagoodideaofwhattheidprobablyis.TheScanConversionTypeischosenbythedevice.TransformationFromTransID:PROC[transID:TransID]RETURNS[Transformation];sg/Et_,#u_,_,t" _,_,]u]]a] t]u!]]"]#t)]]q*]]+e,b.36Ft[ u,[[t[[Z5 u Z5Z5tZ5Z5X uXXtpXXVuVVtV"Ku/VV/tU?euyU?U?U?#=U?*_qU?12AuU?CASt~SSQJuQQXt#QQ$u'QQ(OQ.tQ5QkuPItNKRxu KRKRtKR~ qIxIIqIIx!XII"q&II'x+II,qH^vC g t?xu ??t?} $ ,* >xu>>jt>"u>>t>>q  DbM$['*)-/Wvxtu !t$.8l"%z*u,ll-tt.llu/~ll0Rtl5 qM !m#'h)+.X1;26(8t: ?M !x%'*v xt u !t $*vu0] 11t 6hTVm$82FontID:TYPE~REFFontIDCodeEntry;Canonicalizedatcreation.ThecodeValuefieldmaychangewhenthecacheistrimmed.FontIDFromRopeAndGMT:PROC[name:ROPE,createdTime:BasicTime.GMT]RETURNS[FontID];RopeFromFontID:PROC[fontID:FontID]RETURNS[name:ROPE];GMTFromFontID:PROC[fontID:FontID]RETURNS[createdTime:BasicTime.GMT];InsertMask:PROC[fontID:FontID,transID:TransID,charCode:INT,sWidth,fWidth:Scaled.Value,mask:Mask,amplified,correctSpace,correctMask:BOOLEAN_FALSE]RETURNS[ok:BOOLEAN];Choosestherepresentation.Mayrefusetoaddamaskifitistoobigorifthecacheisfull.MaskDesc:TYPE~RECORD[ref:REF,maskEntryPtr:LONGPOINTERTOMaskEntry];Forsafety'ssake,don'tdroptherefuntilyouaredonewiththelongpointer.GetMask:UNSAFEPROC[fontID:FontID,transID:TransID,charCode:INT]RETURNS[MaskDesc];ReturnsaNILmaskEntryPtrifthecharacterisnotinthecacheorthecacheisdisabled.RopeOrRefText:TYPE~REF;StringBodyDesc:TYPE~RECORD[stringBody:RopeOrRefText,start:INT_0,length:INT_INT.LAST,fontSet:[0..256)_0];ThestringisencodedusingtheInterpressstring-bodyencoding,i.e.,acharacterof'\377istreatedasanescapecodethatprecedesabytecontainingthehigh-order8bitsofanewcharactercodeoffset.Current:PROC[stringBodyDesc:StringBodyDesc]RETURNS[charCode:INT];Advance:PROC[stringBodyDesc:StringBodyDesc]RETURNS[StringBodyDesc];GetStringBodyMasks:PROC[fontID:FontID,transID:TransID,stringBodyDesc:StringBodyDesc,maskProc:UNSAFEPROC[MaskDesc]]RETURNS[StringBodyDesc];CallsthemaskProcforeachcharactercodeintheStringBody,untilthelengthisexhaustedoruntilanunavailablemaskisencountered.ThereturnedStringBodyDescwillhaveanupdatedstart,length,andfontSet.FlushingthecacheTrimCache:PROC[maxNumberOfMasks:INT,maxNumberOfWords:INT];Discardsunpopularmasksfromthecacheuntilthespecifiedlimitsaremet.Maskswithzerousagearealwaysdiscarded.sg/Et^xu^^t^cu^^t^q\ D[HM$['*)-/WvWxtWWuWW tW#u("WW(t+3WW, 4l u:WW;t=WWu>WW?atVRvSx tSSuSStS#.u(SS)etS.u38SS4 t6JSS6vOx ttOOuqOOtO#u(OO)tO. 7 u>6OO?$t@OOARvLex tELeLeuCLeLetLeY$*50u6LeLe7*t8LeLe9>J )!6%M + 4- ut; q:4 "$&T,?-01479{;?@t6x u66t6u66t W665=xu5=5=t5=yu5=5=t5=#y +E 5u9G5=5=9t5=;=d>uC5=5=D t3u933tD3u3t33]!&q'q1M!C# ) 069b:@B%E0G\ #)*<-! 36 <=@`BC8.\Gbv+Qxt +Q+Qu+Q+Qt+Q"^u,+Q+Q-t+Q2 u9+Q+Q:_t<+Q+QQQ$tQuQQtQQ_NxuNNNy tMxuMMvI g@btFix uFiFiotFi()8*kq;FiFi;<>mtDxuDDRtD!9Asx uAsAsGtAsuAsAsAs#tAs+_q,AsAs- . /t?>$qR>$>$t: q::,*t9- q?9-9-t7 q77t5 q55t46 q4646?=t2 q22?=t0 q00dat/@q~/@/@t-q--ZXt+q++.,t*Iq*I*Iqnt(q((EBt&q&&75t%S q%S%St#q\##t" q""tqB /t q   !#teq eet qrpt q=toq(ootqDAt  q  0.t qxt q JHt  q igTVm$85makecompiledimage(116),--fulldosavesimplebody(120),--2.0dobody(121),--fulldosavebody(122),--fulldosaveallbody(123),--fullshowandxrel(146),--2.0findfont(147),--2.0modifyfont(148),--2.0finddecompressor(149),--2.0findfontvec(150),--fullsetfont(151),--2.0setcorrectmeasure(154),--2.0setcorrecttolerance(155),--2.0correctmask(156),--2.0correctspace(157),--2.0getcp(159),--2.0maket(160),--fullopent(161),--fulltranslate(162),--2.0rotate(163),--2.0scale(164),--2.0concat(165),--2.0scale2(166),--2.0invert(167),--fullconcatt(168),--2.0move(169),--2.0trans(170),--2.0transform(174),--fulltransformvec(175),--fullroundxy(176),--fullroundxyvec(177),--fullpop(180),--2.0dup(181),--2.0copy(183),--2.0roll(184),--2.0exch(185),--2.0mark(186),--2.0unmark(187),--2.0count(188),--2.0unmark0(192),--2.0abs(200),--2.0add(201),--2.0and(202),--2.0sg/Et_,q _,_,!"t[qF[[ tZ5 qZ5Z5_]tXqeXXtVqVVJHtSqSSXUtQ q>QQtPHq PHPHtNqNNr ptLq/LLtKR qlKRKRtHqHHs qtF[qsF[F[ tDqDDtC qC C " t? q?? t> q>>tt:qj::t9 q99KIt7x q77x7xt5 q655t4) q4)4)a^t2 q22VSt0 q00t/2 q/2/2t- qM--t*;q0*;*;t(q!((t& q_&&t%EqO%E%Et!q!!,*t Nq N N86t q7tX qpXXt q!t  qy  ta qaa}t q63tk qkk0-tqZt tq t tt q ;TVm$U86ceiling(203),--2.0div(204),--2.0eq(205),--2.0floor(206),--2.0ge(207),--2.0gt(208),--2.0mod(209),--2.0mul(210),--2.0neg(211),--2.0not(212),--2.0or(213),--2.0sub(214),--2.0trunc(215),--2.0rem(216),--2.0round(217),--2.0eqname(218),--fulltype(220),--2.0atan(221),--fullcos(222),--fullexp(223),--fulllog(224),--fullsin(225),--fullsqrt(226),--fullmax(227),--fullmin(228),--fulldo(231),--2.0dosave(232),--2.0dosaveall(233),--2.0if(239),--2.0ifcopy(240),--2.0ifelse(241),--2.0loop(242),--fullframe(250),--fullpoolop(253),--fullpool(254),--fullpget(255),--fullpset(256),--fullmakepool(257),--fullnopool(258),--fullenv(260),--fullmakeveclu(282),--2.0makevec(283),--2.0shape(285),--2.0openvec(286),--fullsg/Et_, qJ_,_,t]qD]]t[q[[OMtZ5 qAZ5Z5tXqXX97tVqVVtU?qU?U?tSqSS75tQqQQtPHqZPHPHtNqNN# tLq|LLtKR qKRKRtIqII74tH qHHwutF[ qF[F[tC  qC C oltAe qAeAecat?qD??t>q>>tt  qI TVm$b87getprop(287),--2.0getp(288),--fullmergeprop(289),--fulldround(300),--fullgetcprounded(301),--fullcurveto(402),--fullarcto(403),--fullconicto(404),--fullmaskfillparity(408),--full?maskfill(409),--2.0maskrectangle(410),--2.0masktrapezoidx(411),--2.0masktrapezoidy(412),--2.0startunderline(413),--2.0maskunderline(414),--2.0makeoutline(417),--2.0clipoutline(418),--fullcliprectangle(419),--fullfindcoloroperator(421),--2.1findcolormodeloperator(422),--2.1findcolor(423),--2.0setgray(424),--2.0makegray(425),--2.0makesampledblack(426),--2.0makesampledcolor(427),--2.1excludeoutline(430),--full?excluderectangle(431),--full?maskstrokeclosed(440),--fullmaskvector(441),--2.0makepixelarray(450),--2.0extractpixelarray(451),--2.1maskpixel(452),--2.0joinpixelarrays(453),--full?error(600),--2.1(17777B)};SequenceType:TYPE~MACHINEDEPENDENT{--5bitsnil(0),sequenceString(1),sequenceInteger(2),sequenceReal(3),--full?sg/Et^ q^^ust\ q\\olt[Hq[H[HZXtW qWW><tVRqVRVR tS qSSIGtQ\ qXQ\Q\tO qOO(&tLfqLfLf {tJ qJJtIqIIJHtGpqGpGp'$tEqEE'$tD!qD!D!tBzq)BzBzt?+q?+?+64t=q==/,t;q;;dat8q88F Dt6q"66"#t5?q5?5?FDt3 q33t1 q$11t0Iq0I0I #! t.q}.. t+Sq+S+S!t)qI))"6t&]q&]&]/ -t$q$$t!gq!g!gtqItq\tqqqq! t" qW""t,x u!tu1#Et*q,',-.t6   @q$ @ @TVm$.88sequenceRational(4),sequenceIdentifier(5),sequenceComment(6),sequenceContinued(7),sequenceLargeVector(8),sequencePackedPixelVector(9),sequenceCompressedPixelVector(10),sequenceInsertFile(11),sequenceAdaptivePixelVector(12),--2.1(37B)};Encoding-independenttypesVersion:TYPE~RECORD[major,minor:CARDINAL];--InterpressversionnumbercurrentVersion:Version~[3,0];--latestversionsupportedbythisinterfaceOp:TYPE~{nil,--BASEprimitivesget,makeveclu,makevec,shape,openvec,getprop,getp,mergeprop,frame,fget,fset,poolop,pool,pget,pset,env,makepool,nopool,makeco,makesimpleco,do,dosave,dosaveall,dobody,dosavebody,dosaveallbody,dosavesimplebody,makecompiledimage,pop,copy,dup,roll,exch,mark,unmark,unmark0,count,nop,error,if,ifelse,ifcopy,loop,eq,eqname,gt,ge,and,or,not,type,add,sub,neg,abs,floor,ceiling,trunc,round,mul,div,mod,rem,max,min,sqrt,exp,log,sin,cos,atan,--IMAGEprimitivesiget,iset,dround,maket,opent,translate,rotate,scale,scale2,concat,invert,transform,transformvec,roundxy,roundxyvec,concatt,move,trans,show,showandxrel,setxy,setxyrel,setxrel,setyrel,getcp,getcprounded,makepixelarray,extractpixelarray,joinpixelarrays,finddecompressor,makegray,findcolor,findcoloroperator,findcolormodeloperator,makesampledcolor,makesampledblack,setgray,moveto,lineto,linetox,linetoy,curveto,conicto,arcto,makeoutline,maskfill,maskfillparity,maskstroke,maskstrokeclosed,maskrectangle,maskvector,startunderline,maskunderline,masktrapezoidx,masktrapezoidy,maskpixel,clipoutline,excludeoutline,cliprectangle,excluderectangle,findfont,findfontvec,modifyfont,setfont,correctmask,correctspace,correct,setcorrectmeasure,setcorrecttolerance,space,--SymbolsbeginBody,endBody,beginBlock,endBlock,pageInstructions,noPages,metricMaster,environmentMaster,--sparesspare1,spare2,spare3};sg/Et_,][Z5XVU?"SQq%[QQ%&tNLvH gtDxuDDtDxuDDtDDV"u'5DD(t-lDD-q.DD/F0D 6;tC xLa q"C C #h$f',247t?xuP?? t?O>q #_' +c0 & , % %Ex!Y #_t#&') !}%8. N `(y(#).:2 X &1 ;  #>-^7~   !8 )a:  %[  %0<qtk  %o$ )qt t1 TVm$489TypeCode:TYPE~MACHINEDEPENDENT{null(0),number(1),identifier(2),vector(3),operator(4),--Basetypestransformation(5),pixelArray(6),color(7),trajectory(8),outline(9),--Imagetypes(CARDINAL.LAST)--roomforlotsmore};ImagerVariable:TYPE~MACHINEDEPENDENT{DCScpx(0),DCScpy(1),correctMX(2),correctMY(3),T(4),priorityImportant(5),mediumXSize(6),mediumYSize(7),fieldXMin(8),fieldYMin(9),fieldXMax(10),fieldYMax(11),showVec(12),color(13),noImage(14),strokeWidth(15),strokeStyle(16),underlineStart(17),amplifySpace(18),correctPass(19),correctShrink(20),correctTX(21),correctTY(22),spare1(23),spare2(24),spare3(25)--spares(correctExpand?strokeDashes?clipper?)};StrokeStyle:TYPE~MACHINEDEPENDENT{square(0),butt(1),round(2),--standard,allwithmiteredjoints(CARDINAL.LAST)--roomforexpansion(roundjoints,probably)};Errors,UtilitiesBYTE:TYPE~[0..377B];CARD:TYPE~LONGCARDINAL;ROPE:TYPE~Rope.ROPE;STREAM:TYPE~IO.STREAM;NATLAST:NAT~NAT.LAST;INTLAST:INT~INT.LAST;theseareherebecausetheinterpretercan'thandleXXX.LASTasadefaultargumentErrorCode:TYPE~{nil,bug,unimplemented,overflow,invalidHeader,invalidVersion,invalidSkeleton,invalidToken,invalidRational,invalidIdentifier,invalidString};Error:ERROR[code:ErrorCode,explanation:ROPE];OpFromEvArray:TYPE~PACKEDARRAYEncodingValueOFOp;GetOpFromEv:PROCRETURNS[REFREADONLYOpFromEvArray];sg/Et^xu^^Yt^u^^^ t^(q\[H   % q-=[H[H-.1tY $* 2% q8YY9A:?>otWuWWt:WuWtvWWqtWW j"%tVQSxuSS\tSuSSS#tS+tQ[  u (a O +N  = ! + Le  $ J $0nIG%| . Go   q%"GoGo%&*4 =xtEBxx u;BxBxtBxu9BxBxKBx!_tBx) @ q!@@"c#`)5+0.,3t?)u?)?)t:?)u?)tv?)?)qt?)?) j"(-K1Qt=v8 gu5=xtw5=5=uu5=5=.t5=s u3xt33u33t3?u333t!33u1xt11u11@t1u11t11u0GxtB0G0Gu@0G0Gt0Gu?0G0Gt0Gu0Gt0G0Gu,xt,,u,,t,uV,,?t,u,#t,,u+Pxti+P+Puf+P+Pt+Pu+P+Pt+Pu+Pt+P+Pq)HC: '*qx.))/q10)x)1q)567[body:Body],block=>[block:Block],sg/Et_,x u_,_,Yt_,u_,_,F_,#t_,(u*_,_,+t_,- v]x t,]]u*]]]t!Y]u]!]$t]+vZ5xtaZ5Z5u_Z5Z5t Z5Z5 u#Z5Z5${t).Z5Z5)qX)]v!!$&P(C*/13T vU?xtaU?U?u_U?U?t U?U? u*U?U?+t0lU?U?0qS)d >!V'vPHx tPHPHuPHPH,tPHPH uPHPHt#TPHuPH#t&PHPH'+qN)x]NN(qN!=&)f.w01 vKRx tKRKRuKRKR,tKRuKR tKRKRuKRKRt$KRKR$qI)d x>II q aII!=x&NII'*qI(*C-vF[xtF[F[uF[F[rt!F[F["Qu,eF[F[-9t1F[uF[2Pt5aF[F[5qD) !#jx$DD%jq'DDv?xt??u??t??u,?? t"=??#u&??' t?)3*,Mu/??/t?1u36??3t8&??u9??9t>?u?>tB#??Bv>x t;>>u9>>t[>>uh>><t y>>!Vu$>>%It>'o(*u-V>>-t>/u1r>>1t6c>>u7J>>8t<>u>=4t@`>>@vtA<::Av7xxt7x7xu7x7x\t7x7x:u7x7xt7x7x u$[7x7x$t7x&(x*u,7x7x-;t7x/au07x7x1Xt57x7x5u=55t`55u W55!+t#h55$E'u*z55*t,55u-m55.At2553Wu6557nt5:du;55<t?55?u4)t34)u4)t4)4)$q2@g$5%' -_1[ 9;dAXC309  W ')-D /2x/2/2Sq/2A -$?x(/2/2)q+/2/2v+x tx++uu++t++u++ yt"++#u'++'t+)+9,u/++/t+2"u3++4t8++u*<t3*<u*<*<*<t"*<*<#$q(s " (V+-.12 v%Ext<%E%Eu:%E%Et]%E%Eu!i%E%E"=t${%E%E%Wu(%E%E)Jt%E+p,.u1W%E%E1t%E3u5s%E%E5t:d%E%Eu#t3##q!!#' v gtxuItubtY xu  t wu  t  U#xu(+  (t*7  *xuyt2utxu6tu4t"ku_kktkkkEq< #%stutupt u Z&TVm$A91ENDCASE];Block:TYPE~REFBlockRep;BlockRep:TYPE~RECORD[index,length:INT,noPages:BOOL,preamble:Node,nodes:SEQUENCEsize:NATOFNode];Skeleton:TYPE~REFSkeletonRep;SkeletonRep:TYPE~RECORD[instructions:Body,--maybeNILtopBlock:Block];GetHeader:PROC[stream:STREAM,prefix:ROPE_NIL,maxLength:INT_100]RETURNS[ROPE];Readsuptothefirstspace;leavesthestreampositionedafterthespace.ReturnstheheaderasaROPE,omittingthespace(Example:"Interpress/Xerox/2.1").Ifprefixissupplied,thebeginningoftheheadermustmatchit.!Error[invalidHeader]iftheprefixdoesn'tmatchorlengthexceedsmaxLength.GetSkeleton:PROC[stream:STREAM]RETURNS[Skeleton];Parsestheskeletonstructureofthemaster.!Error[invalidSkeleton]iftheskeletonismalformed.SkipToEndOfBody:PROC[stream:STREAM];Skipstotheendoftheenclosingbody.Leavesthestreampositionedatthetokenfollowingthebody.SetIndex:PROC[stream:STREAM,index:INT];SameasIO.SetIndex[stream,index].Hereforconvenience.CopyBytes:PROC[to:STREAM,from:STREAM,count:INT]RETURNS[copied:INT];Copiesbytestoanoutputstreamfromaninputstream.Returnstheactualnumberofbytescopied.CopySegment:PROC[to:STREAM,from:STREAM,start,length:INT];DoesSetIndex[from,start],thencopieslengthbytes.!IO.EndOfStream[from]iftoofewbyteswerecopied.TokenType:TYPE~{nil,num,op,seq};Token:TYPE~RECORD[index:INT_0,type:TokenType_nil,num:ShortNumber_ShortNumber.FIRST,ev:EncodingValue_nil,seq:SequenceType_nil,sg/Eu_et]ZnxuZnZntZnCuZnZntZnXxuGXXtXuFXXt4XXWu_WWtkWWUxuZUxUxtUxUxSR)uR)R)tR)uR)R)R)!tR)#PM2xuM2M2PtM2uM2M2itM2` Kx u KKtK~u KKt KKI bqYII "tH;FvAxtAAuAAt%AAurAAt#N}!n=!U%B'+ 2F5y7<Bx0<<q"S<<#/(*.z5 :pL%~'!)m-15'9Wa"%*{.0G4e9P v6x t66u66t66duM66t$66u$66%t*66* q4`a"#%28 "(") v/jxt/j/ju/j/j]t/j/j;u#%/j/j#t'/j/j(Rq-I:k$,R " #%)/1v(xt((u((it((Gu1((t!(("u'(('t)'(()q'$Kx'$'$q]'$'$"-&*,; v#xt##u##ht##Gun##t 9##!u$##%t)##*u.##/Vt0##u1##2t7g##7u<##=t>##?#q"-X /$')-A  "%v6x t66u66At66 uG66t"66"u&66'nt+66,u/u4664t6666q H!,$6(9,W!6#&)j,tx uDtC\!$OIxu@IItIu>IIt-IIu7t]eR>  u'(RR't*wRR  y x 4PTVm$92len:INT_0];GetToken:PROC[stream:STREAM,flushComments:BOOL_TRUE]RETURNS[Token];ReadsfromthestreamatokenintheXeroxencoding.(SeeInterpress,section2.5.1.)Iftoken.type=seq,callermustreadtoken.lendatabytesfromstreamtoreachnexttoken.SkipBytes:PROC[stream:STREAM,len:INT];Skipslenbytesinthestream.IntFromData:PROC[text:REFREADONLYTEXT,start:NAT_0,len:NAT_NATLAST]RETURNS[INT];RealFromData:PROC[text:REFREADONLYTEXT,start:NAT_0,len:NAT_NATLAST]RETURNS[REAL];Theseinterprettext[start..start+len)asatwo'scomplementbinaryinteger.WritingamasterPutOp:PROC[stream:STREAM,op:Op];Appendsaprimitiveoperatororsymbolliteral;choosestheshortestencoding.PutInt:PROC[stream:STREAM,n:INT];AppendsaNumberliteral;choosestheshortestencoding.PutBool:PROC[stream:STREAM,bool:BOOL];Appendsa1forTRUE,0forFALSE.PutRational:PROC[stream:STREAM,n,d:INT];AppendsaNumberliteral,n/d.!Error[invalidRational]ifdiszero.PutReal:PROC[stream:STREAM,val:REAL];AppendsaNumberliteral.Choosesarationalapproximationifnecessary.PutIdentifier:PROC[stream:STREAM,rope:ROPE,start:INT_0,len:INT_INTLAST];AppendsanIdentifierliteral.!Error[invalidIdentifier]iftheropeisnotalegalidentifier.PutString:PROC[stream:STREAM,rope:ROPE,start:INT_0,len:INT_INTLAST];Appendstheencodingnotationforastring.Treats'\377asanescapecode.SeetheCharacterCodeStandard,chapter6,andInterpress,section2.5.3.!Error[invalidString]iftheropeisnotalegalstring.PutComment:PROC[stream:STREAM,rope:ROPE,start:INT_0,len:INT_INTLAST];Appendsacommenttoken.PutInsertFile:PROC[stream:STREAM,rope:ROPE,start:INT_0,len:INT_INTLAST];AppendsasequenceInsertFile.PutName:PROC[stream:STREAM,rope:ROPE,start:INT_0,len:INT_INTLAST];ParsesastructurednameandappendstokenstobuildaVectorofIdentifiers.sg/Et_,uV_,_,t_,s]vZ5xtuZ5Z5usZ5Z5tZ5Z5uZ5Z5t"Z5Z5# u-Z5Z5.tZ51u3Z5Z53t6IZ5Z5u71Z5Z58t/"'#(g,138v:xtM::uK::tm::u::Yt ::!au#%::#t%1::%q9 /i %',v5xta55u_55t55u55nt!55"uu&55&t)?55)q4)/cx4)4)Dq4)4)x!4)4)"q%4)4)v0x t00u00Nt00,u00t#00$&`u($00(t*000*q/2/i -! w!#v*<xtK*<*;"foo"produces.SeeInterpress,section3.2.1.!Error[invalidIdentifier]ifthenamecontainsaninvalididentifier.PutBits:PROC[stream:STREAM,base:LONGPOINTER,wordsPerLine:NAT,sMin,fMin,sSize,fSize:NAT];AppendsasequencePackedPixelVector,onebitpersample.PutDescriptor:PROC[stream:STREAM,seq:SequenceType,len:INT];Appendsasequencedescriptor;lendatabytesmustfollow.PutShortNumber:PROC[stream:STREAM,n:ShortNumber];AppendsaShortNumbertoken.PutShortOp:PROC[stream:STREAM,ev:EncodingValue[VAL[0]..VAL[37B]]];PutLongOp:PROC[stream:STREAM,ev:EncodingValue];AppendsaShortOporLongOptoken.PutShortSequence:PROC[stream:STREAM,seq:SequenceType,len:[0..377B]];PutLongSequence:PROC[stream:STREAM,seq:SequenceType,len:INT--[0..77777777B]--];AppendsaShortSequenceorLongSequencetoken;lendatabytesmustfollow.PutUnsigned:PROC[stream:STREAM,len:[0..4],val:CARD];Appendstheloworderlenbytesofval.PutSigned:PROC[stream:STREAM,len:[0..4],val:INT];Appendstheloworderlenbytesofval.END.******************************************************sg/Eq_,#$& 'B(ax)_,_,*q_,/15F:< >_x?_,_,@q]\[ >Z6 #(&,!.2| vVxtVVuVVtVVwu`VVt!+VVU@u?U@U@U@0t!MU@U@") u+aU@U@,Jt-U@U@.26i:3u>U@U@>t@U@U@@qS/(S*,/=vPJx tPJPJuPJPJxtPJPJVu @PJPJ t% PJPJ%( 2]u5)PJPJ5t75PJPJ7qN/ #s%(,#/ovIx tIIuIIGtII%u"II"t&II')z qH/ vDx tDDuDD[tDD9u#DDt#DD$' u0DD1ct2DD3Su5DD5t7mDD7vCxtsCCupCCtCCuCCt#CC$&qAh/n#v>xt~>>u|>>#t>>u">>#t'>>(+ 57 v 4u7NN$tNuNNtNN_M uM M tM uWM M "tM M  Ix uSIII tHxuHHDxtDDuDD@tDuDDtDDuCxtBCCu@CCtCu?CCtCuCtCC?xu??Wt?u??pt?g>'xu>'>'t>'>'v:xt::u::Nt::-u::{t::u ::!st&'::&v91xt9191u9191t9191y}u9191`t"91u91"vt$9191%Nv7xt577u277tU77u!77"it#77$* 44u7777kt8G7u78t=i77=u4;xt4;4;u4;4;~t4;6u4;4;t4;4;2x u22t2<0x u*00t0(-xu--t-Xu--t- +xu\++t+u Z++!.t%H++*O u*O*Otn*O*O( u((t((' u''t''%Y ? # ) "   cu c ctN c c u!m"Utvxt u t-u"#t%u&'t,I,vxt!u"~#%t%&u*+t/u01st6&6uxtr g6TVm$j95RealExtras.mesaCopyrightc1984XeroxCorporation.Allrightsreserved.DougWyatt,August13,19844:14:13pmPDTRealExtras:CEDARDEFINITIONS=BEGINFloor:PROC[a:REAL]RETURNS[REAL];Ceiling:PROC[a:REAL]RETURNS[REAL];Trunc:PROC[a:REAL]RETURNS[REAL];Round:PROC[a:REAL]RETURNS[REAL];Mod:PROC[a,b:REAL]RETURNS[REAL];Rem:PROC[a,b:REAL]RETURNS[REAL];END.******************************************************sg/Eq_,x]w]q]  (*.[?R"'* tXx uXXXw tVxu]VVvSxtSSuSSXtSS6uSStSSuSSt!bSuS!t$SS%BvQxtQQuQQKtQQ)uQQtQQuQQt"UQuQ"t%QQ&4vPJxt PJPJu PJPJt-PJPJu3PJPJtLPJPJu4PJPJt!PJuPJ"t%8PJPJ%vNxtXNNuUNNtxNNuNNStNNuNNTt"NuN"jt%NN%vLxtELLuBLLteLLJuLLt)LLuLLt"LuL"t&LL&wvKTxt/KTKTu,KTKTtOKTKT4uKTKTtKTKTuKTKTt"KTuKT"t%KTKT&auHxtHHr g6TVm$96ShortRational.mesaMichaelPlass,May2,198410:40:13amPDTShortRational:CEDARDEFINITIONS=BEGINRational:TYPE~RECORD[numerator:INTEGER,denominator:CARDINAL];FromReal:PROC[real:REAL]RETURNS[Rational];picksacloserationalapproximationfortherealnumber.denominatorwillbezeroforout-of-rangeinputs.answerisalwaysinlowestterms.END.******************************************************sg/Eq_,x]xU%5'tZ6x uZ6Z6Z6R tZ6$ru&WZ6Z6'tVuVVKtVuVVdtV! u(VV)t-VV. u7HVV8t=VV=vStpSSumSStSuSS{t!SSu"SS#}tS( qQM (*-/PJ f!# +N"uKTtKTKTr g6tTVm$97IPInterpreter.mesaCopyright(C)1984,1985byXeroxCorporation.Allrightsreserved.DougWyatt,January23,19854:37:32pmPSTTypesandoperationsfortheInterpressinterpreter.DIRECTORYImagerUSING[Context],ImagerColorUSING[Color],ImagerFontUSING[Char,Font,StringProc],ImagerPathUSING[Outline,Trajectory],ImagerPixelArrayUSING[PixelArray],ImagerTransformationUSING[Transformation],IOUSING[STREAM],IPMasterUSING[Body,Op,Skeleton,TypeCode],PrincOpsUSING[zAND,zBNDCK,zLI1,zLIW,zPOP],RopeUSING[ROPE],Vector2USING[VEC];IPInterpreter:CEDARDEFINITIONS~BEGINTypesROPE:TYPE~Rope.ROPE;STREAM:TYPE~IO.STREAM;Op:TYPE~IPMaster.Op;TypeCode:TYPE~IPMaster.TypeCode;Body:TYPE~IPMaster.Body;maxInteger:INT~77777777B;--2^24-1=16777215maxVecSize:NAT~30000;--forresultofMakeVecorMakeVecLUtopFrameSize:NAT~50;Any:TYPE~REF;Integer:TYPE~INT--[0..maxInteger]--;Int:PROC[i:INT]RETURNS[Integer]~TRUSTEDMACHINECODE{PrincOps.zLIW,1,0;PrincOps.zBNDCK;};IFiIN[0..maxInteger]THENRETURN[i]ELSEERRORRuntimeError.BoundsFault;Odd:PROC[i:Integer]RETURNS[BOOL]~TRUSTEDMACHINECODE{PrincOps.zPOP;PrincOps.zLI1;PrincOps.zAND;};RETURN[(iMOD2)#0]Number:TYPE~REFNumberRep;NumberRep:TYPE~RECORD[SELECTtag:*FROMzero=>[zero:Integer_0],int=>[int:INT],sg/Eq_:x]x:$ ,{.2[? #Z(C*XxY x &1 uUMxtSu;SS!tS Q uQQ|tQPV uPVPVtPV] $? N uNNtN1! MuMMutM K`usK`K`YtK`"uIITtIuIItII.Hu|HHatH!' FiuFiFiltFi&*E.Du>DD$tDuDDtDD_CuCCtCuWCC"tCC ?x u8??? t>#xu>#>#v: gu7xt77u77@t7u77t77u5xtB55u@55t5u?55t5u5t552xuP22 t2O 0xu00Yt0/@xu/@/@It/@ +x u/++t+K q!++"-#+&'(*t*Ix u*I*It*I#q*I*I ! #2&(.0dt(x u((t(7%Sxu%S%St%Sgu%S%St:%S%S"xu""ht"!u""q""2t%""vxt1u.tQut!ut$u   t $% /1_3?xfqf:x!ffqzff xfff!q&ff&x(Tff)f+qf0Tvxtut}ut!u!t%%uooo to$% / 9c DxqTx"3qptxxuzxx3txuxxxLtxC x utaut u)t)\uS)) t 3 "^ MuF tR TVm$98real=>[real:REAL],rational=>[n,d:INTEGER],ENDCASE];Identifier:TYPE~REFIdentifierRep;IdentifierRep:TYPE~RECORD[atom:ATOM,rope:ROPE];Marker:TYPE~LONGCARDINAL;--auniquemarkvalueassociatedwithacontextnullMarker:Marker~0;VectorShape:TYPE~RECORD[lowerBound:Integer,size:INT--[0..maxInteger+1]--];Upperbound"u"=lowerBound+size-1.Vector:TYPE~REFVectorRep;VectorRep:TYPE~RECORD[class:VectorClass,data:REF,font:Font_NIL];VectorClass:TYPE~REFVectorClassRep;VectorClassRep:TYPE~RECORD[type:ATOM,--$Array,$Merged,$Font,$String,...shape:PROC[v:Vector]RETURNS[VectorShape],get:PROC[v:Vector,i:Integer]RETURNS[Any],getProp:PROC[v:Vector,propName:Any]RETURNS[found:BOOL,value:Any]_NIL];Operator:TYPE~REFOperatorRep;OperatorRep:TYPE~RECORD[class:OperatorClass,data:REF];OperatorClass:TYPE~REFOperatorClassRep;OperatorClassRep:TYPE~RECORD[type:ATOM,--$Composed,$Pool,$Char,$Decompressor,$ColorOperator,...do:PROC[op:Operator,state:Ref]];VEC:TYPE~Vector2.VEC;Transformation:TYPE~ImagerTransformation.Transformation;PixelArray:TYPE~ImagerPixelArray.PixelArray;Color:TYPE~ImagerColor.Color;Trajectory:TYPE~ImagerPath.Trajectory;Outline:TYPE~ImagerPath.Outline;Font:TYPE~ImagerFont.Font;Char:TYPE~ImagerFont.Char;StringProc:TYPE~ImagerFont.StringProc;Array:TYPE~REFArrayRep;--amutablearrayofvalues,suchasaframeorpoolArrayRep:TYPE~RECORD[lowerBound:Integer,--lowerbound,asinVectorShapearray:SEQUENCEsize:[0..maxVecSize]OFAny];Pool:TYPE~REFPoolRep;--apooloperator,fromMAKEPOOLorNOPOOLsg/Et_,Quz_,_,Nt_,_,]:Au]]ot#E]]#u[tZ5Vx uVVtVwuVVtV U?x u{U?U?4tU?uyU?U?Mt!gU?U?!u%U?U?&t)t>u>>t>>ju>>t$s>>$ txuR tuP$t>k qkkSQ"'X)* tu*tOtu(E)!t*_ xu! t u t q  !"%+^u. /q 5u7x 8`TVm$99PoolRep:TYPE~RECORD[persistent:BOOL,level:NAT_0,array:Array];Context:TYPE~REFContextRep;--anexecutioncontextContextRep:TYPE~RECORD[caller:Context,--caller'scontextmarker:Marker,--uniquemarkforthiscontextindex:INT,--indexoftokencurrentlybeingexecutedinitialFrame:Vector,--initialframeframe:Array,--currentframe(NILifunchangedfrominitialframe)pool:Pool,--sharedpoolenv:Vector--environment];stackArraySize:NAT~8;StackArray:TYPE~REFStackArrayRep;StackArrayRep:TYPE~ARRAY[0..stackArraySize)OFNumberRep;StackList:TYPE~LISTOFAny;StackMark:TYPE~RECORD[count:INT_0,marker:Marker_nullMarker];StackMarkList:TYPE~LISTOFStackMark;Ref:TYPE~REFRep;--anInterpressinterpreterinstanceRep:TYPE~RECORD[stream:STREAM_NIL,--inputstreamonthemasterbeinginterpretedskeleton:IPMaster.Skeleton_NIL,--skeletonstructureofthemasterbuffer:REFTEXT_NIL,--textbufferforsequencedatatopFrame:Vector_NIL,--initialframeforthetoplevelblocktopEnv:Vector_NIL,--environmentforthetoplevelblocklastMarker:Marker_nullMarker,--lastmarkvalueusedcontext:Context_NIL,--thecurrentcontextstackArray:StackArray_NIL,--afewnumbersontopofthestackstackArrayCount:[0..stackArraySize]_0,--numberofelementsinstackArraystackList:StackList_NIL,--therestofthestackstackCount:INT_0,--numberofstackelementsabovethetopmarkstackCountMax:INT_0,--maximumcountpermittedabovethetopmarkstackMarkList:StackMarkList_NIL,--marksonthestackimager:Imager.Context_NIL,--imagerstateshowVec:Vector_NIL,--currentshowVeclog:STREAM_NIL--outputstreamforloggingerrors];OperationsAddState:PROC[self:Ref,inner:PROC];UsesProcessPropstoaddan$InterpressStatepropertyforthedurationofthecallofinner.GetState:PROCRETURNS[Ref];sg/Et_,xu_,_,Pt_,u_,_,it_,_,] u-]]tX]][uI[[1t[BZ5XU?xu)U?U?tU?u'U?U?tU? q$U?U?$%'-tSx uSSWtSuSSqt SSQqGQQ OtPHqPHPHzx $x&)9tNuNN7tNNqNN/-"M(+tL qLL"tKRqx u>>t>Vu>>>t>ta/2/2q >/2/2 !%)}+-0G3bt-Gu--t--q--5 3 '* ,U.1t+ ] q%++&k'i)-1t*;u*;*;t*;*;q*;*; #F't(  u ((!nt"((q#n((#$&(-/2@360t&&(q*&&*+0p279; t%E u3%E%Et ?%E%Eq!%E%E!"$'v)+ft# u+##t#Hq##NL$1%)_.247Mt! u!!At!gq !! !(U,258 :ut N  #u$ N N%t& N Nq' N N( )-#/1bt Pu !t"q#$>%<)t:utq (!&%tXuVXXtXu1XXqX8"w&(-tv g kxtkkukktkkuy}u"kk#<t%kk&q  ."",1n35;J<?9A\v xt u u tt _cTVm$100Returnsthecurrentvalueofthe$InterpressStateproperty,NILifnonefound.Bug:ERROR;Error:ERROR;ErrorClass:TYPE~{nil,masterError,masterWarning,appearanceError,appearanceWarning,comment};ProduceError:PROC[class:ErrorClass,code:ATOM,explanation:ROPE];MasterErrorType:TYPE~{unimplemented,boundsFault,nilFault,undefinedProperty,invalidPropVec,runSizeOverflow,invalidRunVec,invalidArgs,limitExceeded,markMismatch,missingBody,notInteger,stackOverflow,stackUnderflow,undefinedOperation,unmarkFailed,wrongType};MasterError:PROC[type:MasterErrorType,explanation:ROPE_NIL];MasterWarningType:TYPE~{bug,unimplemented,unknownToken,nullValue,invalidEncodingValue,invalidSequenceType,invalidRational,invalidIdentifier};MasterWarning:PROC[type:MasterWarningType,explanation:ROPE_NIL];IntegerFromReal:PROC[REAL]RETURNS[Integer];IntegerFromNum:PROC[NumberRep]RETURNS[Integer];RealFromNum:PROC[NumberRep]RETURNS[REAL];sg/D=q_, !$. x3_,_,4q_,6R7:tZ5xuZ5Z5tZ5Z5XxuXX_tXXU?x uU?U?mtU?&S  QgPINvKRx tKRKRuKRKR+tKRKR  %u)KRKR*at-KRKR- u5KRKR6t8KRKR9<HxuHH{tH3F\ D C Ae?> ta  u$% $t) u *t-) -TVm$$101IntegerFromAny:PROC[Any]RETURNS[Integer];RealFromAny:PROC[Any]RETURNS[REAL];NumberFromAny:PROC[Any]RETURNS[Number];IdentifierFromAny:PROC[Any]RETURNS[Identifier];VectorFromAny:PROC[Any]RETURNS[Vector];OperatorFromAny:PROC[Any]RETURNS[Operator];TransformationFromAny:PROC[Any]RETURNS[Transformation];PixelArrayFromAny:PROC[Any]RETURNS[PixelArray];ColorFromAny:PROC[Any]RETURNS[Color];TrajectoryFromAny:PROC[Any]RETURNS[Trajectory];OutlineFromAny:PROC[Any]RETURNS[Outline];Eq:PROC[a,b:Any]RETURNS[BOOL];EqName:PROC[a,b:Any]RETURNS[BOOL];Type:PROC[a:Any]RETURNS[TypeCode];Get:PROC[v:Vector,i:Integer]RETURNS[Any];GetInteger:PROC[v:Vector,i:Integer]RETURNS[Integer];GetReal:PROC[v:Vector,i:Integer]RETURNS[REAL];Shape:PROC[v:Vector]RETURNS[VectorShape];ZeroVec:PROC[n:Integer]RETURNS[Vector];CreatesaVectorwithnelements,allzero.MakeVec:PROC[n:Integer,pop:PROCRETURNS[Any]]RETURNS[Vector];MakeVecLU:PROC[l,u:Integer,pop:PROCRETURNS[Any]]RETURNS[Vector];CreatesaVectorwiththespecifiedshape.Callspopshape.ntimestogettheelements,lastelementfirst.MergeProp:PROC[v1,v2:Vector]RETURNS[Vector];GetProp:PROC[v:Vector,propName:Any]RETURNS[found:BOOL,value:Any];GetP:PROC[v:Vector,propName:Any]RETURNS[Any];RunSize:PROC[r:Vector]RETURNS[Integer];RunGet:PROC[r:Vector,i:Integer]RETURNS[Any];VectorFromArray:PROC[Array]RETURNS[Vector];CreatesaVectorwiththesameshapeandelementsastheArray.TheresultcontainsacopyoftheArray;itdoesnotsharetheoriginal.ArrayFromVector:PROC[Vector]RETURNS[Array];CreatesanArraywiththesameshapeandelementsastheVector.Theresultisanew,mutablecopy;itsharesnothingwiththeVector.VectorFromString:PROC[string:StringProc]RETURNS[Vector];A"String"usestheencodingschemeintheXeroxCharacterCodeStandard.StringFromVector:PROC[v:Vector,action:PROC[Char]];Callsactionforeachelementofvinorder.ErrorifanyelementisnotanintegerthatfitsinaChar.sg/D=v_,x t3_,_,u1_,_,tT_,_,u _,_, t%_,_,&v]x t]]u]]Wt]]6u]]pt$$]u]$t']](v[x t[[u[[]t[[;u [[!vt&)[[&vZ5xthZ5Z5ueZ5Z5 tZ5Z5u!RZ5Z5"&t&Z5Z5'= vXx tXXuXXtXXvuXX t%dXX%vVxt_VVu\VVtVVu!IVV"t&VV'3 vU>xt2U>U>u0U>U>t!SU>U>!u%U>U>%t*U>U>+vSxt[SSuYSSt{SSu"ESS#t'SS(0 vQx tLQQuJQQtmQQu7QQ t$QQ%!vPHxt0PHPHu.PHPHtQPHPHu"PHPH"t'PHPH( vNx twNNutNNtNNu aNN!5t%NN&KvKQxtKQKQuKQKQt1KQKQuAKQKQt KQuKQ!+t$VKQKQ$vIxtIIuII2tIIWuIIt$EIuI$t'II(6vHxtgHHueHH tHHuHHt |HH vDxtDDuDDPtDD.u"'DD"t'DD(vC x tC C uC C tC C f!>u&_C C '3t+C C ,IvAcxtaAcAcu_AcActAcAc\u$AcAc%t*eAcuAc*t-AcAc.Dv?xt??u??t7??Hu??t"??# v9 #'*T/13Mp!%&*/252vxtGuEth" u)B*t./,q x"o'(+ /&5t8vxtGuEthy$Bu(){t+,Zq@g"d$%&& p>-) "'l*>,.//c,TVm$?102VectorFromRope:PROC[ROPE]RETURNS[Vector];RopeFromVector:PROC[Vector]RETURNS[ROPE];TheseuseVectorFromStringandStringFromVectortoconvertbetweenVectorsandROPEs.TheropeusestheencodingschemeintheXeroxCharacterCodeStandard.PushAny:PROC[self:Ref,val:Any];PushNum:PROC[self:Ref,val:NumberRep];PushBool:PROC[self:Ref,val:BOOL];PushInteger:PROC[self:Ref,val:Integer];PushReal:PROC[self:Ref,val:REAL];PushVec:PROC[self:Ref,val:VEC];PushIdentifier:PROC[self:Ref,val:Identifier];PushVector:PROC[self:Ref,val:Vector];PushOperator:PROC[self:Ref,val:Operator];PushTransformation:PROC[self:Ref,val:Transformation];PushPixelArray:PROC[self:Ref,val:PixelArray];PushColor:PROC[self:Ref,val:Color];PushTrajectory:PROC[self:Ref,val:Trajectory];PushOutline:PROC[self:Ref,val:Outline];Thesepushanelementonthestack.PopAny:PROC[self:Ref]RETURNS[Any];PopNum:PROC[self:Ref]RETURNS[NumberRep];PopBool:PROC[self:Ref]RETURNS[BOOL];PopInteger:PROC[self:Ref]RETURNS[Integer];PopReal:PROC[self:Ref]RETURNS[REAL];PopVec:PROC[self:Ref]RETURNS[VEC];PopIdentifier:PROC[self:Ref]RETURNS[Identifier];PopVector:PROC[self:Ref]RETURNS[Vector];PopOperator:PROC[self:Ref]RETURNS[Operator];PopTransformation:PROC[self:Ref]RETURNS[Transformation];PopPixelArray:PROC[self:Ref]RETURNS[PixelArray];PopColor:PROC[self:Ref]RETURNS[Color];PopTrajectory:PROC[self:Ref]RETURNS[Trajectory];PopOutline:PROC[self:Ref]RETURNS[Outline];Thesepopanelementfromthestack.TopType:PROC[self:Ref]RETURNS[TypeCode];Pop:PROC[self:Ref];Copy:PROC[self:Ref,depth:Integer];Roll:PROC[self:Ref,depth,moveFirst:Integer];Mark:PROC[self:Ref,n:Integer];Unmark:PROC[self:Ref,n:Integer];Count:PROC[self:Ref]RETURNS[Integer];PopToActiveMark:PROC[self:Ref]RETURNS[Marker];Call:PROC[self:Ref,action:PROC,frame:Vector,pool:Pool,env:Vector];Executestheactioninanewcontextwithspecifiedframe,pool,andenvironment.sg/D=v_,x t_,_,u_,_,St_,u_,1t B_,_,u!*_,_,!t&_,_,'v]x t]]u]]St]]1u"]]"t']u]'t+]]+dq[l!$/1b6;5@Z6\XMQ5!-%')-417vSxtSSuSS^tSS=AE vQxtHQQuEQQthQQ! vPHxt2PHPHu0PHPHtSPHPHu!uPHPH".t$PHPH%vNx tNNuNNCtNN!% )"vLxtLLuLLt=LLu!_LL"2t$xLL$vKQxtKQKQuKQKQItKQKQ'+/u KQKQ!t#5KQKQ#vIx tIIuIIwtIIVZ!^$ vHx t\HHuZHHt}HH"vFZx tFZFZuFZFZntFZFZMP!U$ vDxtDDuDDBtDD "$%('vC x tC C uC C jtC C IM"Q% vAdxtAdAduAdAd\tAdAd:>B!v?x t??u??@t??""&$ v>x t>>u>>t>>dh m##q,withmarkrecoveryifnecessary.Apply:PROC[self:Ref,op:Op];Executesaprimitive.Do:PROC[self:Ref,op:Operator];ExecutesanOperator.GetInlineBody:PROC[self:Ref]RETURNS[Body];Readsabodyfromthemaster,recordingitforlateruse.SkipInlineBody:PROC[self:Ref];Skipsoverabodyinthemaster.CallInlineBody:PROC[self:Ref,frame:Vector,pool:Pool,env:Vector];Executesabodyinanewcontext.MakeCO:PROC[frame:Vector,pool:Pool,env:Vector,body:Body]RETURNS[Operator];MakeCompiledImage:PROC[frame:Vector,env:Vector,body:Body]RETURNS[Operator];END.******************************************************sg/D=v_,xtB_,_,u@_,_,tc_,_,u_,_,t"`_,_,"v]xt]]u]],t]] tu"]]#ht(]](v[xtP[[uN[[tq[[ "FvZ6xt Z6Z6uZ6Z6t*Z6Z6uZ6Z6tt#(Z6Z6#vXxtXXuXX7tXXu"XX#st('XX(vVxt[VVuYVVt{VV "QvU@xtU@U@uU@U@ZtU@U@9=uLU@U@ t U@U@!6vQxtQQuQQQtQQ/ u&JQQ't)uQQu*\QQ+0t/QQ0GvPJxtPJPJuPJPJPJt4PJPJvNxtNNuNNrtNNPu$NN%ct*NN*zvLxtLLuLLrtLLPu!LL"t'jLL' vKTx t`KTKTu^KTKTtKTKTu vKTKT!Jt%KTKT&avHxtHHuHHt4HHu"1HH"t%THH%qF^I $ -vCxtCCuCCrtCCQUYu#CC$t'CC'qqAhI $&v>xt>>u>>tt >>!R$V'Zu+>>,t/>>/rqC__> vxtut7$ (+04u89t>6> uixtiir g6TVm$104IPBase.mesaCopyright(C)1984XeroxCorporation.Allrightsreserved.DougWyatt,December14,19844:11:09pmPSTDIRECTORYIPInterpreterUSING[Ref];IPBase:CEDARDEFINITIONS~BEGINRef:TYPE=IPInterpreter.Ref;Vectoroperators(2.4.3)ApplyGET:PROC[Ref];ApplyMAKEVECLU:PROC[Ref];ApplyMAKEVEC:PROC[Ref];ApplySHAPE:PROC[Ref];ApplyOPENVEC:PROC[Ref];ApplyGETPROP:PROC[Ref];ApplyGETP:PROC[Ref];ApplyMERGEPROP:PROC[Ref];Frame,pool,andenvironmentoperators(2.4.4)ApplyFRAME:PROC[Ref];ApplyFGET:PROC[Ref];ApplyFSET:PROC[Ref];ApplyPOOLOP:PROC[Ref];ApplyPOOL:PROC[Ref];ApplyPGET:PROC[Ref];ApplyPSET:PROC[Ref];ApplyENV:PROC[Ref];Operatoroperators(2.4.5)ApplyMAKEPOOL:PROC[Ref];ApplyNOPOOL:PROC[Ref];ApplyMAKECO:PROC[Ref];ApplyMAKESIMPLECO:PROC[Ref];ApplyDO:PROC[Ref];ApplyDOSAVE:PROC[Ref];ApplyDOSAVEALL:PROC[Ref];ApplyDOBODY:PROC[Ref];ApplyDOSAVEBODY:PROC[Ref];ApplyDOSAVEALLBODY:PROC[Ref];ApplyDOSAVESIMPLEBODY:PROC[Ref];ApplyMAKECOMPILEDIMAGE:PROC[Ref];Stackoperators(2.4.6)ApplyPOP:PROC[Ref];ApplyCOPY:PROC[Ref];sg/D=q_:x ]x: ')K-[?!=$)l+uXxtV uVVtVSxuSSMS tS 7u!SS"}tPVxuPVPVWtPVvM gIxtIIuIIitIIGvHx tHHuHH|tHH[vFix tFiFiuFiFitFiFi`vDx tDDuDDBtDD vCx tCCuCCJtCC(vAsx tAsAsuAsAsUtAsAs3v?xt??u??Pt??.v>$x t>$>$u>$>$t">$>$v: gt $7x t77u77t 77nv5xt55u55Et55#v47xti4747uf4747t4747v2x t22u22t 22nv0xt00u00t00gv/@xt/@/@u/@/@Pt/@/@.v-xtt--uq--t--v+xt++u++ht++Fv( gOa%Sx t%S%Su%S%St>%S%Sv#x t##u##t7##v"x t!""u""tB""v \xt \ \u \ \?t! \ \"vxtut)v x t  u  Wt  6vfx ttffurfftffvx t!utBvxtuqt Ovoxtoouoo 3t"oo#vxt!Cu"A"t%d%v xt"  u#  $It&  ''v gRe xt u it Gv xt u gt FTVm$y105ApplyDUP:PROC[Ref];ApplyROLL:PROC[Ref];ApplyEXCH:PROC[Ref];ApplyMARK:PROC[Ref];ApplyUNMARK:PROC[Ref];ApplyUNMARK0:PROC[Ref];ApplyCOUNT:PROC[Ref];ApplyNOP:PROC[Ref];ApplyERROR:PROC[Ref];Controloperators(2.4.7)ApplyIF:PROC[Ref];ApplyIFELSE:PROC[Ref];ApplyIFCOPY:PROC[Ref];ApplyLOOP:PROC[Ref];Testoperators(2.4.8)ApplyEQ:PROC[Ref];ApplyEQNAME:PROC[Ref];ApplyGT:PROC[Ref];ApplyGE:PROC[Ref];ApplyAND:PROC[Ref];ApplyOR:PROC[Ref];ApplyNOT:PROC[Ref];ApplyTYPE:PROC[Ref];Arithmeticoperators(2.4.9)ApplyADD:PROC[Ref];ApplySUB:PROC[Ref];ApplyNEG:PROC[Ref];ApplyABS:PROC[Ref];ApplyFLOOR:PROC[Ref];ApplyCEILING:PROC[Ref];ApplyTRUNC:PROC[Ref];ApplyROUND:PROC[Ref];ApplyMUL:PROC[Ref];ApplyDIV:PROC[Ref];ApplyMOD:PROC[Ref];ApplyREM:PROC[Ref];ApplyMAX:PROC[Ref];ApplyMIN:PROC[Ref];ApplySQRT:PROC[Ref];ApplyEXP:PROC[Ref];ApplyLOG:PROC[Ref];ApplySIN:PROC[Ref];ApplyCOS:PROC[Ref];ApplyATAN:PROC[Ref];END.******************************************************sg/D=v_,xt_,_,u_,_,t_,_,gv]xt]]u]]ft]]Ev[xt[[u[[|t[[ZvZ6xt%Z6Z6u"Z6Z6tEZ6Z6vXx tLXXuIXXtlXXvVx tVVuVVtVVvU@x tU@U@uU@U@t#U@U@vSxtSSuSStSSsvQx tQQuQQztQQYvN gqKTxt5KTKTu3KTKTtVKTKTvIx tIIuIImtIILvHx t#HHu HHtCHHvF^xtF^F^uF^F^tF^F^gvC g?xt??u??t??_v>x t*>>u(>>tK>>vAsAstaAsAsv>$ gR :x t::u::t#::v9-x t9-9-u9-9-pt9-9-Nv7x t_77u\77t77v5x t55u55Yt558v47x tf4747ud4747 t4747v2x t22u22t722v0x t00u00zt00Yv/@x t8/@/@u6/@/@tY/@/@v+x t++u++t$++v*Jxt*J*Ju*J*Jwt!*J*J"Uv(x t((u((t>((v&xt&&u&&t && ov#x t##u##nt##Lv"xt0""u-""tP""v \x t \ \u \ \Nt \ \-v xt[  uY  t|  vfxt@ffu=fft!`ff!v g|x t}u{"tv x tI  uG  tj  vyx tVyyuTyytwyyvx tLuItlv x t u Ct !v xt u t" "utTVm$107Pixelarrays(4.6)ApplyMAKEPIXELARRAY:PROC[Ref];ApplyEXTRACTPIXELARRAY:PROC[Ref];ApplyJOINPIXELARRAYS:PROC[Ref];ApplyFINDDECOMPRESSOR:PROC[Ref];Color(4.7)ApplyMAKEGRAY:PROC[Ref];ApplyFINDCOLOR:PROC[Ref];ApplyFINDCOLOROPERATOR:PROC[Ref];ApplyFINDCOLORMODELOPERATOR:PROC[Ref];ApplyMAKESAMPLEDCOLOR:PROC[Ref];ApplyMAKESAMPLEDBLACK:PROC[Ref];ApplySETGRAY:PROC[Ref];Maskoperators(4.8)ApplyMOVETO:PROC[Ref];ApplyLINETO:PROC[Ref];ApplyLINETOX:PROC[Ref];ApplyLINETOY:PROC[Ref];ApplyCURVETO:PROC[Ref];ApplyCONICTO:PROC[Ref];ApplyARCTO:PROC[Ref];ApplyMAKEOUTLINE:PROC[Ref];ApplyMASKFILL:PROC[Ref];ApplyMASKFILLPARITY:PROC[Ref];ApplyMASKSTROKE:PROC[Ref];ApplyMASKSTROKECLOSED:PROC[Ref];ApplyMASKVECTOR:PROC[Ref];ApplyMASKRECTANGLE:PROC[Ref];ApplySTARTUNDERLINE:PROC[Ref];ApplyMASKUNDERLINE:PROC[Ref];ApplyMASKTRAPEZOIDX:PROC[Ref];ApplyMASKTRAPEZOIDY:PROC[Ref];ApplyMASKPIXEL:PROC[Ref];ApplyCLIPOUTLINE:PROC[Ref];ApplyCLIPRECTANGLE:PROC[Ref];ApplyEXCLUDEOUTLINE:PROC[Ref];ApplyEXCLUDERECTANGLE:PROC[Ref];Characteroperators(4.9)ApplyFINDFONT:PROC[Ref];sg/D=v_, g[xt[[u [[ t#<[[#vZ6xt!Z6Z6u"Z6Z6#7t%Z6Z6&vXxt1XXu .XX t#QXX#vU?xt!nU?U?u"lU?U?#t%U?U?%vQ g<Nx tNNuNNt&NNvLx ttLLurLLtLLvKRxt"eKRKRu#cKRKR$ t&KRKR&vIxt'IIu(II)mt+II,LvF\xt"!F\F\u#F\F\#t&AF\F\&vDxt!DDu"DD#mt%DD&LvAex tAeAeuAeAe)tAeAev> gGY:x tC::uA::td::v9 x tO9 9 uM9 9 to9 9 v7xx tM7x7xuJ7x7xtm7x7xv5x tB55u@55tc55v4)x t4)4)u4)4)lt4)4)Kv2x t22u22+t22 v0x t00u00qt00Pv/3xt/3/3u/3/3Bt /3/3! v+x t3++u1++tT++v*<xtw*<*uXxtV uVV|tV!|UM uUMUMtUM]SuSSutS QusQQYtQ"uPVPVTtPVuPVPVtPVPV.N uNNtN"(+Mu>MM$tMuMMtMM_IxuIII tHxuHHDxtDDuDD@tDuDDtDDuCxtBCCu@CCtCu?CCtCuCtCC?xu??ht?!>#xub>#>#t>#a<|xu<|<|t<|?:xu::Wt:7xuN77t7L5xu55gt5$46x u4646t46<2xu22t2C0x u*00t0(v-xt--u--Xt--6:?v+x t++u++t6++!#Ov(x tk((ui((t((u ((!t&5((&v&x tk&&ui&&t&&u!&&"t'J&&'v#xt##u##t##sw{ )u$##%t*##*v"x t-""u+""tN"" "gu';""(t,""-%v \x t \ \u \ \-t \ \  "u, \ \-t2P \ \2v xtS  uQ  tt  u"  #`t'  (gu-  -t/&  0u:  ;t=u  uet3eevxtu.t !$%u*+jt00 voxttoourootoo u%oo&Vt+ oo+lvxtu}t[!_$c&u*+t0m0 v xt  u  Rt!  "0%4(9)u.  /t4B  4 vx tJuGtj)q#))$Z%W*<+/1g4j79 t :q$O $%*,O047:*t  q$ %C&A,15 6v9 TVm$P110maxSampleValueImaxSampleValueI:Integer,--constantmaximumsamplevalue,ifmaxSampleValue=NILsamplesInterleaved:BOOL,--iftrue,samplesforonepixelarecontiguousm:Transformation,--transformationfrompixelcoordinatestomastercoordinatessamples:Vector--theactualsamples]RETURNS[PixelArray];ColorOperatorFromOperator:PROC[Operator]RETURNS[ColorOperator];OperatorFromColorOperator:PROC[ColorOperator]RETURNS[Operator];END.******************************************************sg/D=q_,t] q%]]&',t27O;1[tZ6u Z6Z6!t$*Z6Z6q%Z6Z6%&~'*/2&48:d tXq XX!a"_ +w.2 9':?* tVQqVV; 8"&tU@uU@U@gtU@U@~ vQxtQQu QQ!et#QQ$Cu*QQ+Wt0 QQ0mvPJxtPJPJu PJPJ!et#PJPJ$C u-PJPJ.t3fPJPJ3 uLxtLLr g6TVm$111IndexAISFileFormat41Imager20ImagerColor17ImagerColorOperatorPrivate33ImagerColorPrivate32ImagerDevice74ImagerFont9ImagerFontPrivate30ImagerFrameBuffer64ImagerManhattan65ImagerMaskCache79ImagerOps27ImagerPath12ImagerPD28ImagerPDDevice76ImagerPixelArray15ImagerPixelArrayPrivate31ImagerPixelMap60ImagerPixelRow70ImagerPrivate34ImagerRasterPrivate77ImagerSampler72ImagerScanConverter67ImagerState35ImagerStroke69ImagerTransformation5ImagerTypeface29Interpress94IPBase104IPImage106IPImager109IPInterpreter97IPMaster84sg/D=v\ grY g Y!W% gW%!T g T!R/ gR/!O gO!M9 g M9!J g J!HC gHC!E gE!CM gCM!@ g@!>V g>V!; g ;!9` g9`!6 g 6!4j g4j!1 g1!/t g /t!, g ,!*~ g *~!( g(!% g %!# g# ! g ! g ! g! g  ! g !* g*! g!4 g4! g ! > g >!TVm$112PDFileFormat50PDFileReader57PDFileWriter54PrePressFontFormat46Prop40RealExtras95ShortRational96StrikeFontFormat44Vector23sg/D=r_/ g _/!\ g \!Z9 g Z9!W gW!UC gUC!R g R!PM g PM!M gM!KW gKW!|TVm$P LAUREL GACHA TIMESROMAN TIMESROMANMATH TIMESROMAN TIMESROMANLAUREL HELVETICA TIMESROMAN TIMESROMAN TIMESROMANY, 9Cz~:$+2T:Z> 0G P>TH[[^dkmt{c} ?\$ao P   0" >'t/27Y<CA C{JQ\V\^cMfm5u 7D#  dxZrxUR3 A [ N ; *06k9_;BJ SW *a khrx~0qY qj/q:j3[]<>Users>Plass.pa>newimager>ImagerAndInterpressInt'Wednesday, February 13, 1985 6:11 pm PS