(FILECREATED "27-Mar-86 15:09:07" {ICE}<DENBER>LISP>BLTDEMO.;4 8692   

      changes to:  (FNS BOUNCE)

      previous date: "13-Jan-86 12:44:09" {ICE}<DENBER>LISP>BLTDEMO.;3)


(* Copyright (c) 1985, 1986 by Xerox Corporation. All rights reserved.)

(PRETTYCOMPRINT BLTDEMOCOMS)

(RPAQQ BLTDEMOCOMS [(FNS ACTIVITYDEMO BOUNCE BMOVEOBJ BPAINTOBJ BERASEOBJ)
		      (VARS (BOUNCEWINDOW))
		      (BITMAPS STAR1 STAR2 STAR3 WASHER BOX)
		      (ADDVARS (IDLE.FUNCTIONS (Activity (QUOTE ACTIVITYDEMO)
							 "Three bouncing objects"])
(DEFINEQ


(BOUNCE
  [LAMBDA (XSPEED YSPEED)                                    (* MJD "27-Mar-86 14:35")
    (PROG (X Y OLDX OLDY XDIR YDIR W H WINDOW.W WINDOW.H STARS NSTAR WX WY WOLDX WOLDY WXDIR WYDIR 
	       STAR OLDSTAR OLDOBJ BX BY BXDIR BYDIR BOLDX BOLDY OLDBOX NEWBOX BOUNCESTREAM)
	    (OR BOUNCEWINDOW (SETQ BOUNCEWINDOW (CREATEW NIL "Wonderful World of Bitblt" NIL)))
	    (CLEARW BOUNCEWINDOW)
	    (SETQ WINDOW.W (IMAX 64 (IDIFFERENCE (WINDOWPROP BOUNCEWINDOW (QUOTE WIDTH))
						       48)))
	    (SETQ WINDOW.H (IMAX 64 (IDIFFERENCE (WINDOWPROP BOUNCEWINDOW (QUOTE HEIGHT))
						       48)))
	    (SETQ STARS (LIST STAR1 STAR2 STAR3))
	    (OR XSPEED (SETQ XSPEED 3))
	    (OR YSPEED (SETQ YSPEED 3))
	    (SETQ XDIR (IMIN (ABS XSPEED)
				 WINDOW.W))
	    (SETQ WXDIR XDIR)
	    (SETQ BXDIR (IMINUS XDIR))
	    (SETQ YDIR (IMIN (ABS YSPEED)
				 WINDOW.H))
	    (SETQ WYDIR (IMINUS YDIR))
	    (SETQ BYDIR YDIR)
	    (SETQ OLDX 0)
	    (SETQ WOLDX (IMIN (IDIFFERENCE WINDOW.W 10)
				  100))
	    (SETQ BOLDX (IMIN (IDIFFERENCE WINDOW.W 10)
				  300))
	    (SETQ OLDY 0)
	    (SETQ WOLDY (IMIN (IDIFFERENCE WINDOW.H 10)
				  300))
	    (SETQ BOLDY (IMIN WINDOW.H 10))
	    (SETQ X 1)
	    (SETQ Y 1)
	    (SETQ WX (ADD1 WOLDX))
	    (SETQ WY (ADD1 WOLDY))
	    (SETQ BX (ADD1 BOLDX))
	    (SETQ BY (ADD1 BOLDY))
	    (SETQ NSTAR 0)
	    (SETQ OLDSTAR (CAR STARS))
	    (SETQ OLDBOX (BITMAPCOPY BOX))
	    (SETQ NEWBOX (BITMAPCOPY BOX))
	    (do (AND (GETD (QUOTE THIS.PROCESS))
			 (THIS.PROCESS)
			 (BLOCK))
		  [COND
		    ((OR (ILEQ X 0)
			   (IGEQ X WINDOW.W))
		      (SETQ XDIR (IMINUS XDIR]
		  [COND
		    ((OR (ILEQ Y 0)
			   (IGEQ Y WINDOW.H))
		      (SETQ YDIR (IMINUS YDIR]
		  (BMOVEOBJ [SETQ STAR (CAR (NTH STARS (SETQ NSTAR (ADD1 (IREMAINDER
										       NSTAR 3]
			      OLDSTAR OLDX OLDY X Y 48 48 BOUNCEWINDOW)
		  (SETQ OLDSTAR STAR)
		  (SETQ OLDX X)
		  (SETQ OLDY Y)
		  (SETQ X (IPLUS OLDX XDIR))
		  (SETQ Y (IPLUS OLDY YDIR))             (* Now do the box)
		  [COND
		    ((OR (ILEQ BX 0)
			   (IGEQ BX WINDOW.W))
		      (SETQ BXDIR (IMINUS BXDIR]
		  [COND
		    ((OR (ILEQ BY 0)
			   (IGEQ BY WINDOW.H))
		      (SETQ BYDIR (IMINUS BYDIR]
		  (GETMOUSESTATE)
		  (BITBLT (SCREENBITMAP)
			    (IDIFFERENCE LASTMOUSEX 23)
			    (IDIFFERENCE LASTMOUSEY 23)
			    NEWBOX 3 3 42 42 NIL (QUOTE SOURCE))
		  (BMOVEOBJ NEWBOX OLDBOX BOLDX BOLDY BX BY 48 48 BOUNCEWINDOW)
		  (BITBLT NEWBOX 3 3 OLDBOX 3 3 42 42 NIL (QUOTE SOURCE))
		  (SETQ BOLDX BX)
		  (SETQ BOLDY BY)
		  (SETQ BX (IPLUS BOLDX BXDIR))
		  (SETQ BY (IPLUS BOLDY BYDIR))          (* Now do the washer)
		  [COND
		    ((OR (ILEQ WX 0)
			   (IGEQ WX WINDOW.W))
		      (SETQ WXDIR (IMINUS WXDIR]
		  [COND
		    ((OR (ILEQ WY 0)
			   (IGEQ WY WINDOW.H))
		      (SETQ WYDIR (IMINUS WYDIR]
		  (SETQ WOLDX WX)
		  (SETQ WOLDY WY)
		  (SETQ WX (IPLUS WOLDX WXDIR))
		  (SETQ WY (IPLUS WOLDY WYDIR))
		  (BMOVEOBJ WASHER WASHER WOLDX WOLDY WX WY 48 48 BOUNCEWINDOW])

(BMOVEOBJ
  [LAMBDA (OBJ OLDOBJ X1 Y1 X2 Y2 W H STREAM)                (* MJD "13-Jan-86 12:40")
    (BERASEOBJ OLDOBJ X1 Y1 W H STREAM)
    (BPAINTOBJ OBJ X2 Y2 W H STREAM)
    (SETQ OLDOBJ OBJ])

(BPAINTOBJ
  [LAMBDA (OBJ X Y W H STREAM)                               (* MD " 8-DEC-82 14:04")
    (BITBLT OBJ NIL NIL STREAM X Y W H NIL (QUOTE PAINT)
	      NIL NIL])

(BERASEOBJ
  [LAMBDA (OBJ X Y W H STREAM)                               (* MD " 8-DEC-82 13:59")
    (BITBLT OBJ NIL NIL STREAM X Y W H NIL (QUOTE ERASE)
	      NIL NIL])
)

(RPAQQ BOUNCEWINDOW NIL)

(RPAQ STAR1 (READBITMAP))
(48 48
"@@@@@A@@@@@@"
"@@@@@CH@@@@@"
"@@@@@CH@@@@@"
"@@@@@GL@@@@@"
"@@@@@GL@@@@@"
"@@@@@GL@@@@@"
"@@@@@ON@@@@@"
"@@@@@ON@@@@@"
"@@@@@ON@@@@@"
"@@@@AOO@@@@@"
"@@@@AOO@@@@@"
"@@@@COOH@@@@"
"@@@@COOH@@@@"
"OOOOOOOOOOON"
"GOOOOOOOOOOL"
"AOOOOOOOOOO@"
"@OOOOOOOOON@"
"@COOOOOOOOH@"
"@AOOOOOOOO@@"
"@@GOOOOOOL@@"
"@@COOOOOOH@@"
"@@@OOOOON@@@"
"@@@GOOOOL@@@"
"@@@COOOOH@@@"
"@@@AOOOO@@@@"
"@@@COOOOH@@@"
"@@@COOOOH@@@"
"@@@GOOOOL@@@"
"@@@GOOOOL@@@"
"@@@GOOOOL@@@"
"@@@OONOON@@@"
"@@@OOHCON@@@"
"@@@OO@AON@@@"
"@@AOL@@GO@@@"
"@@AOH@@CO@@@"
"@@AN@@@@O@@@"
"@@CL@@@@GH@@"
"@@C@@@@@AH@@"
"@@F@@@@@@L@@"
"@@D@@@@@@D@@"
"@@@@@@@@@@@@"
"@@@@@@@@@@@@"
"@@@@@@@@@@@@"
"@@@@@@@@@@@@"
"@@@@@@@@@@@@"
"@@@@@@@@@@@@"
"@@@@@@@@@@@@"
"@@@@@@@@@@@@")

(RPAQ STAR2 (READBITMAP))
(48 48
"@@@@@@@@D@@@"
"@@@@@@@@L@@@"
"@B@@@@@AL@@@"
"@CH@@@@CL@@@"
"@AN@@@@GL@@@"
"@@OH@@@OH@@@"
"@@ON@@COH@@@"
"@@GOH@GOH@@@"
"@@GON@OOH@@@"
"@@COOIOOH@@@"
"@@COOOOO@@@@"
"@@AOOOOO@@@@"
"@@AOOOOO@@@@"
"@@@OOOOO@@@@"
"@@@OOOOO@@@@"
"@@@GOOOOH@@@"
"@@@GOOOOL@@@"
"@@@GOOOOOH@@"
"@@@COOOOON@@"
"@@@GOOOOOO@@"
"@@@OOOOOOOL@"
"@@AOOOOOOOO@"
"@@COOOOOOOOH"
"@@GOOOOOOOOL"
"@@OOOOOOOOON"
"@AOOOOOOOOO@"
"@COOOOOOOH@@"
"@GOOOOON@@@@"
"@OOOOOON@@@@"
"AON@@OON@@@@"
"CL@@@GON@@@@"
"F@@@@GOL@@@@"
"@@@@@COL@@@@"
"@@@@@COL@@@@"
"@@@@@AOL@@@@"
"@@@@@AOL@@@@"
"@@@@@@OL@@@@"
"@@@@@@OL@@@@"
"@@@@@@GL@@@@"
"@@@@@@GL@@@@"
"@@@@@@CL@@@@"
"@@@@@@CH@@@@"
"@@@@@@AH@@@@"
"@@@@@@@H@@@@"
"@@@@@@@H@@@@"
"@@@@@@@H@@@@"
"@@@@@@@@@@@@"
"@@@@@@@@@@@@")

(RPAQ STAR3 (READBITMAP))
(48 48
"@@@@@@@@@@@@"
"@@@D@@@@@@@@"
"@@@F@@@@@@@@"
"@@@G@@@@@@@@"
"@@@CH@@@@@@@"
"@@@CL@@@@@L@"
"@@@CN@@@@CL@"
"@@@CO@@@@OH@"
"@@@COH@@COH@"
"@@@COL@@ON@@"
"@@@CON@CON@@"
"@@@AOO@OOL@@"
"@@@AOOKOOL@@"
"@@@AOOOOOH@@"
"@@@AOOOOOH@@"
"@@@AOOOOO@@@"
"@@@AOOOOO@@@"
"@@@AOOOON@@@"
"@@@COOOOL@@@"
"@@@GOOOOL@@@"
"@@COOOOOH@@@"
"@@OOOOOOL@@@"
"@COOOOOOL@@@"
"@OOOOOOON@@@"
"COOOOOOOO@@@"
"OOOOOOOOOH@@"
"AOOOOOOOOL@@"
"@AOOOOOOON@@"
"@@@GOOOOOO@@"
"@@@@OOOOOOH@"
"@@@@GOOOOOL@"
"@@@@GOOOOON@"
"@@@@GOL@@GO@"
"@@@@GOL@@@CH"
"@@@@GOH@@@@@"
"@@@@GO@@@@@@"
"@@@@GO@@@@@@"
"@@@@GN@@@@@@"
"@@@@GN@@@@@@"
"@@@@GL@@@@@@"
"@@@@GH@@@@@@"
"@@@@GH@@@@@@"
"@@@@G@@@@@@@"
"@@@@F@@@@@@@"
"@@@@F@@@@@@@"
"@@@@D@@@@@@@"
"@@@@@@@@@@@@"
"@@@@@@@@@@@@")

(RPAQ WASHER (READBITMAP))
(48 48
"@@@@@@@@@@@@"
"@@@@GOOL@@@@"
"@@@COOOOL@@@"
"@@@OOOOOO@@@"
"@@COOOOOOL@@"
"@@GOOOOOON@@"
"@@OOOOOOOO@@"
"@AOOOOOOOOH@"
"@COOOOOOOOL@"
"@GOOOOOOOON@"
"@OOOOOOOOOO@"
"@OOOOOOOOOO@"
"AOOOOOOOOOOH"
"AOOON@@OOOOH"
"COOOH@@COOOL"
"COOO@@@AOOOL"
"COON@@@@OOOL"
"GOOL@@@@GOON"
"GOOL@@@@GOON"
"GOOL@@@@GOON"
"GOOH@@@@COON"
"GOOH@@@@COON"
"GOOH@@@@COON"
"GOOH@@@@COON"
"GOOH@@@@COON"
"GOOH@@@@COON"
"GOOH@@@@COON"
"GOOH@@@@COON"
"GOOL@@@@GOON"
"GOOL@@@@GOON"
"COON@@@@OOOL"
"COOO@@@AOOOL"
"COOOH@@COOOL"
"AOOON@@OOOOL"
"AOOOOOOOOOOH"
"@OOOOOOOOOOH"
"@OOOOOOOOOO@"
"@GOOOOOOOOO@"
"@GOOOOOOOON@"
"@COOOOOOOOL@"
"@AOOOOOOOOH@"
"@@OOOOOOOO@@"
"@@GOOOOOON@@"
"@@COOOOOOH@@"
"@@@OOOOON@@@"
"@@@COOOOH@@@"
"@@@@GOOL@@@@"
"@@@@@@@@@@@@")

(RPAQ BOX (READBITMAP))
(48 48
"@@@@@@@@@@@@"
"GOOOOOOOOOON"
"GOOOOOOOOOON"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"F@@@@@@@@@@F"
"GOOOOOOOOOON"
"GOOOOOOOOOON"
"@@@@@@@@@@@@")

(ADDTOVAR IDLE.FUNCTIONS (Activity (QUOTE ACTIVITYDEMO)
				     "Three bouncing objects"))
(PUTPROPS BLTDEMO COPYRIGHT ("Xerox Corporation" 1985 1986))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (543 4708 (BOUNCE 554 . 4112) (BMOVEOBJ 4114 . 4330) (BPAINTOBJ 4332 . 4518) (BERASEOBJ 
4520 . 4706)))))
STOP