<> <> DIRECTORY Imager, ImagerPixelMap, ViewerClasses; ViewerBlast: CEDAR DEFINITIONS = BEGIN Viewer: TYPE = ViewerClasses.Viewer; PixelMap: TYPE = ImagerPixelMap.PixelMap; Context: TYPE = Imager.Context; IntPt: TYPE = RECORD [x, y: INTEGER _ 0]; IntBox: TYPE = RECORD [xmin, ymin, dx, dy: INTEGER _ 0]; Blast: PROC [ pm: PixelMap, --windowed area is source of blasted image 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; ScreenPixelMap: PROC RETURNS [PixelMap]; CopyViewer: PROC [v: Viewer, window: IntBox _ [], windowed: BOOLEAN _ FALSE] RETURNS [pm: PixelMap, lowerLeft: IntPt]; <> PixelMapContext: PROC [pm: PixelMap] RETURNS [context: Context]; <> DrawPixelMap: PROC [context: Context, pm: PixelMap, tx, ty: INTEGER]; <> DrawBitmap: PROC [context: Context, bitmap: PixelMap, fOrigin, sOrigin: INTEGER]; <> <> MaskPixelMap: PROC [context: Context, pm: PixelMap, deviceOrgS, deviceOrgF: INTEGER]; <<[f: deviceOrgF, s: deviceOrgS] in pm's device (NOT window) coords aligns with context's origin.>> <> END.