RandomDemoClient2.mesa
Copyright © 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
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.ROPENIL;
imageList: LIST OF Rope.ROPENIL;
tempList: LIST OF Rope.ROPENIL;
NextImage: PROC [] = {
Next: PROC [] RETURNS [name: Rope.ROPENIL] = {
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.ROPENIL;
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.