ViewerBlast.Mesa
Last Edited by: Spreitzer, August 7, 1983 1:41 pm
DIRECTORY GraphicsOps, ViewerClasses;
ViewerBlast: CEDAR DEFINITIONS =
BEGIN
Viewer: TYPE = ViewerClasses.Viewer;
Bitmap: TYPE = GraphicsOps.BitmapRef;
IntPt: TYPE = RECORD [x, y: INTEGER ← 0];
IntBox: TYPE = RECORD [xmin, ymin, dx, dy: INTEGER ← 0];
Blast:
PROC
[
bm: Bitmap,
bmw: IntBox, --bitmap coords (y measured from top)
lowerLeft: IntPt, --of where initial bitmap appears on screen
convergeOn: IntPt ← [], --screen point for all centers to emanate from
preSteps: INTEGER ← 3, --how many steps took from converge
speedChooser: SpeedChooser ← NIL, --NIL => emanation
initial: BOOLEAN ← TRUE, --xor coherent version?
backwards: BOOLEAN ← FALSE];
SpeedChooser: TYPE = PROC [row, col: INTEGER] RETURNS [speed: IntPt];
RandomSpeed: SpeedChooser;
CopyViewer: PROC [v: Viewer, window: IntBox ← [], windowed: BOOLEAN ← FALSE] RETURNS [bm: Bitmap, x, y: INTEGER];
DrawBitmap:
PROC
[
self: GraphicsOps.Context, bitmap: Bitmap,
w, h: INTEGER, -- width and height of rectangle
x, y: INTEGER ← 0, -- upper left corner of rectangle
xorigin, yorigin: INTEGER ← 0 -- point to be aligned with cp
];
--like the oe in GraphicsOps, except clipping done on x, y, w, h.--
END.