(FILECREATED "13-Dec-84 13:22:51" {ROSEBOWL}<BIRD>NEW>TMP>BACKGROUNDDEMO.;4 10068
changes to: (FNS BACKGROUNDDEMOCLICK BACKGROUNDDEMO BACKGROUNDDEMODRAW BACKGROUNDDEMOPROCESS
BACKGROUNDDEMOERASE)
(VARS PONGCOMS BACKGROUNDDEMOCLICK BACKGROUNDDEMOCOMS)
(RECORDS BACKGROUNDDEMOOBJECT)
previous date: "29-Oct-84 18:33:59" {ROSEBOWL}<BIRD>NEW>TMP>PONG.;3)
(* Copyright (c) 1984 by Xerox Corporation. All rights reserved.)
(PRETTYCOMPRINT BACKGROUNDDEMOCOMS)
(RPAQQ BACKGROUNDDEMOCOMS ((RECORDS BACKGROUNDDEMOOBJECT)
(FNS BACKGROUNDDEMO BACKGROUNDDEMODRAW BACKGROUNDDEMOPROCESS
BACKGROUNDDEMOERASE BACKGROUNDDEMOCLICK)
(FILES BACKGROUND)
(VARS BACKGROUNDDEMOCLICK)))
[DECLARE: EVAL@COMPILE
(DATATYPE BACKGROUNDDEMOOBJECT (X Y U V M R MASK TXTR))
]
(/DECLAREDATATYPE (QUOTE BACKGROUNDDEMOOBJECT)
(QUOTE (POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER)))
(DEFINEQ
(BACKGROUNDDEMO
[LAMBDA (N PONGWINDOW) (* edited: "12-Dec-84 16:23")
(DECLARE (LOCALVARS . T))
(ADD.PROCESS (LIST (QUOTE BACKGROUNDDEMOPROCESS)
(KWOTE (for I from 1 to N bind SIZE MASS TEXTURE FILLING DIMENSION MASK
eachtime (SETQ SIZE (RAND 8 24))
(SETQ MASS (ITIMES SIZE SIZE))
(SETQ TEXTURE (COND
((ZEROP (LOGAND I 1))
30685)
(T 34850)))
(SETQ FILLING (COND
((ZEROP (LOGAND I 2))
42405)
(T 65535)))
(SETQ DIMENSION (IPLUS SIZE SIZE -1))
(SETQ MASK (BITMAPCREATE DIMENSION DIMENSION))
(for X from 0 to (SUB1 DIMENSION) bind XX Z
eachtime (SETQ XX (IDIFFERENCE X SIZE))
[SETQ Z (SQRT (IDIFFERENCE MASS
(ITIMES XX XX]
do (BITBLT NIL NIL NIL MASK X (IDIFFERENCE SIZE Z)
1
(ITIMES Z 2)
(QUOTE TEXTURE)
(QUOTE REPLACE)
FILLING))
collect (create BACKGROUNDDEMOOBJECT
X ←(RAND 0 (IPLUS [COND
(PONGWINDOW (WINDOWPROP
PONGWINDOW
(QUOTE WIDTH)))
(T (fetch BITMAPWIDTH
of (SCREENBITMAP]
-1))
Y ←(RAND 0 (IPLUS [COND
(PONGWINDOW (WINDOWPROP
PONGWINDOW
(QUOTE HEIGHT)))
(T (fetch BITMAPHEIGHT
of (SCREENBITMAP]
-1))
U ←(ITIMES (SUB1 (ITIMES (RAND 0 1)
2))
(RAND 5 10))
V ←(ITIMES (SUB1 (ITIMES (RAND 0 1)
2))
(RAND 5 10))
M ←(ADD1 (IQUOTIENT MASS 100))
R ← SIZE
MASK ← MASK
TXTR ← TEXTURE)))
PONGWINDOW])
(BACKGROUNDDEMODRAW
[LAMBDA (OB MAP) (* edited: "12-Dec-84 16:19")
(DECLARE (LOCALVARS . T))
(PROG ((SOURCE (fetch (BACKGROUNDDEMOOBJECT MASK) of OB))
(LEFT (IDIFFERENCE (fetch (BACKGROUNDDEMOOBJECT X) of OB)
(fetch (BACKGROUNDDEMOOBJECT R) of OB)))
(BOTTOM (IDIFFERENCE (fetch (BACKGROUNDDEMOOBJECT Y) of OB)
(fetch (BACKGROUNDDEMOOBJECT R) of OB)))
RIGHT TOP)
(BITBLT SOURCE NIL NIL MAP LEFT BOTTOM NIL NIL (QUOTE MERGE)
(QUOTE INVERT)
(fetch (BACKGROUNDDEMOOBJECT TXTR) of OB))
(SETQ RIGHT (IPLUS LEFT (fetch BITMAPWIDTH of SOURCE)))
(SETQ TOP (IPLUS BOTTOM (fetch BITMAPHEIGHT of SOURCE)))
(COND
((ILESSP LEFT PONGLEFT)
(SETQ PONGLEFT LEFT)))
(COND
((ILESSP BOTTOM PONGBOTTOM)
(SETQ PONGBOTTOM BOTTOM)))
(COND
((IGREATERP RIGHT PONGRIGHT)
(SETQ PONGRIGHT RIGHT)))
(COND
((IGREATERP TOP PONGTOP)
(SETQ PONGTOP TOP])
(BACKGROUNDDEMOPROCESS
[LAMBDA (PONGOBJECTS PONGWINDOW) (* edited: "12-Dec-84 16:21")
(DECLARE (LOCALVARS . T)
(SPECVARS PONGLEFT PONGBOTTOM PONGRIGHT PONGTOP))
(COND
((NLISTP PONGOBJECTS)
(\ILLEGAL.ARG PONGOBJECTS))
(T (bind [WIDTH ←(COND
(PONGWINDOW (WINDOWPROP PONGWINDOW (QUOTE WIDTH)))
(T (fetch BITMAPWIDTH of (SCREENBITMAP]
[HEIGHT ←(COND
(PONGWINDOW (WINDOWPROP PONGWINDOW (QUOTE HEIGHT)))
(T (fetch BITMAPHEIGHT of (SCREENBITMAP]
(PONGLEFT ← 0)
(PONGBOTTOM ← 0)
(PONGRIGHT ← 0)
(PONGTOP ← 0)
PONGMAP
first (SETQ PONGMAP (BITMAPCREATE WIDTH HEIGHT))
(BITBLT NIL NIL NIL PONGMAP NIL NIL NIL NIL (QUOTE TEXTURE)
(QUOTE REPLACE)
WINDOWBACKGROUNDSHADE)
(for OB in PONGOBJECTS
do (BACKGROUNDDEMODRAW OB PONGMAP)
(replace (BACKGROUNDDEMOOBJECT V) of OB with 0))
(BITBLTTOBACKGROUND PONGMAP NIL NIL PONGWINDOW NIL NIL NIL NIL (QUOTE INPUT)
(QUOTE REPLACE))
do (BLOCK)
(for OB in PONGOBJECTS
bind PONGDEST U V X Y R BO XX YY RR MR UU VV F G first (SETQ PONGDEST (
BACKGROUNDDESTINATION
PONGWINDOW))
do (SETQ PONGLEFT WIDTH)
(SETQ PONGBOTTOM HEIGHT)
(SETQ PONGRIGHT 0)
(SETQ PONGTOP 0)
(BACKGROUNDDEMOERASE OB PONGMAP)
[replace (BACKGROUNDDEMOOBJECT X) of OB with (SETQ X
(IPLUS (fetch (
BACKGROUNDDEMOOBJECT X) of OB)
(SETQ U
(fetch (
BACKGROUNDDEMOOBJECT U) of OB]
[replace (BACKGROUNDDEMOOBJECT Y) of OB with (SETQ Y
(IPLUS (fetch (
BACKGROUNDDEMOOBJECT Y) of OB)
(SETQ V
(fetch (
BACKGROUNDDEMOOBJECT V) of OB]
(BACKGROUNDDEMODRAW OB PONGMAP)
(BITBLTTODESTINATION PONGMAP PONGLEFT PONGBOTTOM PONGDEST PONGLEFT PONGBOTTOM
(IDIFFERENCE PONGRIGHT PONGLEFT)
(IDIFFERENCE PONGTOP PONGBOTTOM)
(QUOTE INPUT)
(QUOTE REPLACE))
(SETQ R (fetch (BACKGROUNDDEMOOBJECT R) of OB))
[COND
([OR (AND (MINUSP U)
(ILESSP X R))
(AND (NOT (MINUSP U))
(IGEQ X (IDIFFERENCE WIDTH R]
(BACKGROUNDDEMOCLICK)
(replace (BACKGROUNDDEMOOBJECT U) of OB with (SETQ U (IMINUS U]
[replace (BACKGROUNDDEMOOBJECT V) of OB
with (SETQ V (COND
([OR (AND (MINUSP V)
(ILESSP Y R))
(AND (NOT (MINUSP V))
(IGEQ Y (IDIFFERENCE HEIGHT R]
(BACKGROUNDDEMOCLICK)
(IMINUS V))
(T (SUB1 V]
[SETQ BO (for BO in PONGOBJECTS
thereis (AND (NEQ BO OB)
(ILEQ (SETQ XX (IDIFFERENCE X (fetch (
BACKGROUNDDEMOOBJECT X) of BO)))
48)
(IGEQ XX -48)
(ILEQ (SETQ YY (IDIFFERENCE Y (fetch (
BACKGROUNDDEMOOBJECT Y) of BO)))
48)
(IGEQ YY -48)
(PROGN (SETQ RR (IPLUS R (fetch (BACKGROUNDDEMOOBJECT
R)
of BO)))
(AND (ILEQ XX RR)
(ILEQ YY RR)
(IGEQ XX (SETQ MR (IMINUS RR)))
(IGEQ YY MR)))
(PROGN (SETQ UU (IDIFFERENCE (fetch (
BACKGROUNDDEMOOBJECT U) of BO)
U))
(SETQ VV (IDIFFERENCE (fetch (
BACKGROUNDDEMOOBJECT V) of BO)
V))
(IGREATERP (SETQ F (IPLUS (ITIMES XX UU)
(ITIMES YY VV)))
0))
(ILEQ (SETQ G (IPLUS (ITIMES XX XX)
(ITIMES YY YY)))
(ITIMES RR RR]
[COND
(BO (BLOCK)
(PROG ((AM (fetch (BACKGROUNDDEMOOBJECT M) of OB))
(BM (fetch (BACKGROUNDDEMOOBJECT M) of BO))
H HX HY)
(SETQ F (ITIMES F 2))
(SETQ G (ITIMES G (IPLUS AM BM)))
(SETQ H (IQUOTIENT G 2))
[SETQ HX (COND
((IGEQ XX 0)
H)
(T (IMINUS H]
[SETQ HY (COND
((IGEQ YY 0)
H)
(T (IMINUS H]
(add (fetch (BACKGROUNDDEMOOBJECT U) of OB)
(IQUOTIENT (IPLUS (ITIMES BM F XX)
HX)
G))
(add (fetch (BACKGROUNDDEMOOBJECT V) of OB)
(IQUOTIENT (IPLUS (ITIMES BM F YY)
HY)
G))
(add (fetch (BACKGROUNDDEMOOBJECT U) of BO)
(IMINUS (IQUOTIENT (IPLUS (ITIMES AM F XX)
HX)
G)))
(add (fetch (BACKGROUNDDEMOOBJECT V) of BO)
(IMINUS (IQUOTIENT (IPLUS (ITIMES AM F YY)
HY)
G)))
(BACKGROUNDDEMOCLICK]
finally (DESTINATION.RELEASE PONGDEST])
(BACKGROUNDDEMOERASE
[LAMBDA (OB DST) (* edited: "12-Dec-84 16:09")
(DECLARE (LOCALVARS . T))
(BACKGROUNDDEMODRAW OB DST])
(BACKGROUNDDEMOCLICK
[LAMBDA NIL (* mgb: "13-Dec-84 12:24")
(AND BACKGROUNDDEMOCLICK (EQ (MACHINETYPE)
(QUOTE DANDELION))
(PLAYTUNE BACKGROUNDDEMOCLICK])
)
(FILESLOAD BACKGROUND)
(RPAQQ BACKGROUNDDEMOCLICK ((250 . 250)))
(PUTPROPS BACKGROUNDDEMO COPYRIGHT ("Xerox Corporation" 1984))
(DECLARE: DONTCOPY
(FILEMAP (NIL (942 9913 (BACKGROUNDDEMO 952 . 2953) (BACKGROUNDDEMODRAW 2955 . 4144) (
BACKGROUNDDEMOPROCESS 4146 . 9472) (BACKGROUNDDEMOERASE 9474 . 9668) (BACKGROUNDDEMOCLICK 9670 . 9911)
))))
STOP