DIRECTORY RandomDemo, Imager, Rope, ImagerColorOperator, ImagerPixelArray, Process, RuntimeError; RandomDemoClient2: CEDAR PROGRAM IMPORTS RandomDemo, Imager, ImagerColorOperator, ImagerPixelArray, Process, Rope, RuntimeError = BEGIN anImage: ImagerPixelArray.PixelArray _ NIL; nextImage: Rope.ROPE _ NIL; imageList: LIST OF Rope.ROPE _ NIL; tempList: LIST OF Rope.ROPE _ NIL; NextImage: PROC [] = { Next: PROC [] RETURNS [name: Rope.ROPE_NIL] = { IF tempList#NIL THEN tempList _ tempList.rest; IF tempList=NIL THEN tempList _ imageList; IF tempList#NIL THEN RETURN [tempList.first] }; anImage _ NIL; FOR i: INT IN [0..RandomDemo.Rand[3]] DO nextImage _ Next[] ENDLOOP; }; SetUpImage: PROC [] = BEGIN DO name: Rope.ROPE _ NIL; pa: ImagerPixelArray.PixelArray _ NIL; Process.Pause[Process.MsecToTicks[100]]; WHILE anImage#NIL DO Process.Pause[Process.MsecToTicks[1000]] ENDLOOP; name _ nextImage; IF Rope.IsEmpty[name] THEN LOOP; pa _ ImagerPixelArray.FromAIS[name ! RuntimeError.UNCAUGHT => {pa _ NIL; CONTINUE} ]; IF pa#NIL THEN anImage _ pa; ENDLOOP END; RandomRotation: PROC[] = { RandomRotate: PROC[] = { Imager.TranslateT[RandomDemo.context, [RandomDemo.screenW/2, RandomDemo.screenH/2]]; Imager.RotateT[RandomDemo.context, RandomDemo.Rand[360]]; Imager.TranslateT[RandomDemo.context, [-RandomDemo.screenW/2, -RandomDemo.screenH/2]]; }; IF RandomDemo.Rand[5]=1 THEN RandomRotate[] }; ShowAis: PROC = BEGIN pa: ImagerPixelArray.PixelArray _ anImage; NextImage[]; IF pa#NIL THEN { RandomRotation[]; Imager.SetSampledColor[RandomDemo.context, pa, NIL, colOp]; Imager.MaskRectangle[RandomDemo.context, [0, 0, RandomDemo.screenw, RandomDemo.screenh]]; RandomDemo.Pause[1500]; }; END; IncludeImage: PROC [r: Rope.ROPE] = { IF ~Rope.IsEmpty[r] THEN imageList _ CONS[r, imageList]; }; colOp: Imager.ColorOperator _ ImagerColorOperator.GrayLinearColorModel[255.0, 0.0, 0, NIL]; IncludeImage["/Cedar/ais/NewParc.AIS"]; IncludeImage["/Cedar/ais/TheGang.AIS"]; IncludeImage["/Cedar/ais/monk.AIS"]; IncludeImage["/Cedar/ais/Doone.AIS"]; RandomDemo.Register[proc: ShowAis, time: 5000, weight: 0.5]; TRUSTED {Process.Detach[FORK SetUpImage[]]}; END. ΨRandomDemoClient2.mesa Copyright c 1984, 1986 by Xerox Corporation. All rights reserved. Created by: Jacobi, September 19, 1984 10:03:05 am PDT Last Edited by: Christian Jacobi, August 12, 1986 5:12:31 pm PDT Κ/˜code™Kšœ Οmœ7™BK™6K™@—K˜šΟk œ˜ KšœW˜W—K˜šΟbœžœž˜ KšžœY˜`—Kšž˜K˜Kšœ'žœ˜+Kšœžœžœ˜K˜Kš œ žœžœžœžœ˜#Kš œ žœžœžœžœ˜"K˜šΟn œžœ˜š  œžœžœ žœžœ˜/Kšžœ žœžœ˜.Kšžœ žœžœ˜+Jšžœ žœžœžœ˜,K˜—Kšœ žœ˜Kš žœžœžœžœžœ˜EKšœ˜—K˜š  œžœ˜Kšž˜šž˜Kšœ žœžœ˜Kšœ"žœ˜&Kšœ(˜(šžœ žœžœ˜Kšœ(˜(Kšžœ˜—Kšœ˜Kšžœžœžœ˜ šœ#˜#Kšœžœ žœž œ˜/Kšœ˜—Kšžœžœžœ˜Kšž˜—Kšžœ˜—K˜š œžœ˜š  œžœ˜KšœT˜TKšœ9˜9KšœV˜VKšœ˜—Kšžœžœ˜+Kšœ˜—K˜šΠbnœžœ˜Kšž˜Kšœ*˜*Kšœ ˜ šžœžœžœ˜Kšœ˜Kšœ;˜;KšœY˜YKšœ˜K˜—Kšžœ˜—K˜š  œžœ žœ˜%Kšžœžœ žœ˜8Kšœ˜—K˜KšœVžœ˜[Kšœ'˜'Kšœ'˜'Kšœ$˜$Kšœ%˜%Kšœ<˜