<> <> <> <> DIRECTORY ThreeDScenes USING [Context], Pixels USING [PixelBuffer], Rope USING [ROPE]; AISAnimation: CEDAR DEFINITIONS ~ BEGIN <> FrameSequence: TYPE ~ RECORD[ currentFrame: NAT _ 0, length: NAT, frames: SEQUENCE maxLength: NAT OF Pixels.PixelBuffer ]; <> <<>> <> <<- startNum specifies the first image in the sequence to display>> <<- numFiles specifies the number of different images to be displayed>> <<- framesPerSec ranges from 1 up to 30 (performance is limited by BLT speed)>> <<- secondsPlayingTime limits the running time>> PlayBackNumberedAISFiles: PROC[context: REF ThreeDScenes.Context, fileRoot : Rope.ROPE, startNum, numFiles, framesPerSec, secondsPlayingTime : NAT]; <> StoreFiles: PROC[context: REF ThreeDScenes.Context, fileRoot: Rope.ROPE, number: NAT]; <> CacheAISFiles: PROC[context: REF ThreeDScenes.Context, fileOfNames: Rope.ROPE, frames: REF FrameSequence _ NIL] RETURNS[REF FrameSequence]; CacheNumberedAISFiles: PROC[context: REF ThreeDScenes.Context, fileRoot: Rope.ROPE, numFiles: NAT, start: NAT _ 0] RETURNS[REF FrameSequence]; <> PlayBackAISCache: PROC[context: REF ThreeDScenes.Context, frames: REF FrameSequence, framesPerSec, secondsPlayingTime: NAT, bothWays: BOOLEAN _ FALSE, startNum: NAT _ 0]; <> ShowNextAISCacheFrame: PROC[context: REF ThreeDScenes.Context, frames: REF FrameSequence, framesPerSec: INTEGER _ 0]; <> <<>> <> << Adds number to the file name, sticking it in just before the extension, for sequencing >> PasteInSequenceNo: PROC[fileRoot: Rope.ROPE, number: NAT] RETURNS[Rope.ROPE]; << Shows the specified frame>> ShowAISCacheFrame: PROC[context: REF ThreeDScenes.Context, frames: REF FrameSequence]; <> <<- If the stored image has more pixels than the display, part will be clipped. >> <<- If the stored image has fewer pixels than the display, an unwritten border will be left around the displayed image.>> <<- xOffset moves the displayed to the right if positive, otherwise left (units are pixels)>> <<- yOffset moves the displayed up if positive, otherwise down >> GetAIS: PROC[context: REF ThreeDScenes.Context, fileRoot: Rope.ROPE, xOffset, yOffset: INTEGER _ 0, center: BOOLEAN _ TRUE] RETURNS[ xSize, ySize: INTEGER]; PutAIS: PROC[context: REF ThreeDScenes.Context, fileRoot: Rope.ROPE]; GetInterpress: PROC[context: REF ThreeDScenes.Context, fileRoot: Rope.ROPE, xOffset, yOffset: INTEGER _ 0, center: BOOLEAN _ TRUE] RETURNS[ xSize, ySize: INTEGER]; PutInterpress: PROC[context: REF ThreeDScenes.Context, fileRoot: Rope.ROPE]; END.