<> <> <> <> DIRECTORY G3dRender, ImagerPixel, Rope; AISAnimation: CEDAR DEFINITIONS ~ BEGIN <> Context: TYPE ~ G3dRender.Context; PixelMap: TYPE ~ ImagerPixel.PixelMap; ROPE: TYPE ~ Rope.ROPE; FrameSequence: TYPE ~ RECORD[ currentFrame: NAT _ 0, length: NAT, frames: SEQUENCE maxLength: NAT OF PixelMap ]; <> <<>> PlayBackNumberedAISFiles: PROC[context: Context, fileRoot : ROPE, startNum, numFiles, framesPerSec, secondsPlayingTime : NAT]; <> <<- 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 bitblt speed)>> <<- secondsPlayingTime limits the running time>> StoreFiles: PROC[ context: Context, fileRoot: ROPE, number: NAT _ LAST[NAT] ]; <> CacheAISFiles: PROC[context: Context, fileOfNames: ROPE, frames: REF FrameSequence _ NIL] RETURNS[REF FrameSequence]; <> CacheNumberedAISFiles: PROC[context: Context, fileRoot: ROPE, numFiles: NAT, start: NAT _ 0] RETURNS[REF FrameSequence]; <> PlayBackAISCache: PROC[context: Context, frames: REF FrameSequence, framesPerSec, secondsPlayingTime: NAT, bothWays: BOOLEAN _ FALSE, startNum: NAT _ 0]; <> ShowNextAISCacheFrame: PROC[context: Context, frames: REF FrameSequence, framesPerSec: INTEGER _ 0]; <> <> <<>> GetLogFileName: PROC[fileRoot: ROPE] RETURNS[ROPE]; <> PasteInSequenceNo: PROC[fileRoot: ROPE, number: NAT] RETURNS[ROPE]; <> ShowAISCacheFrame: PROC[context: 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: Context, fileRoot: ROPE, xOffset, yOffset: INTEGER _ 0, center: BOOLEAN _ TRUE ] RETURNS[ xSize, ySize: INTEGER]; <> PutAIS: PROC[ context: Context, fileRoot: ROPE, doEverything: BOOLEAN _ FALSE ]; <> GetRGB: PROC[ context: Context, fileRoot: ROPE, xOffset, yOffset: INTEGER _ 0, center: BOOLEAN _ TRUE ] RETURNS[ xSize, ySize: INTEGER]; <> PutRGB: PROC[ context: Context, fileRoot: ROPE ]; <> GetInterpress: PROC[ context: Context, fileRoot: ROPE, xOffset, yOffset: INTEGER _ 0, center: BOOLEAN _ TRUE ] RETURNS[ xSize, ySize: INTEGER]; <> PutInterpress: PROC[ context: Context, fileRoot: ROPE ]; <> END.