(FILECREATED "19-Feb-86 11:10:19" {ERIS}<LISPUSERS>KOTO>TRAJECTORY-FOLLOWER.;2 8079
changes to: (VARS TRAJECTORY-FOLLOWERCOMS)
(FNS TRAJECTORY.FOLLOW TRAJECTORY.FOLLOWER.POINT TRAJECTORY.FOLLOWER.PUT
TRAJECTORY.FOLLOWER.SETUP TRAJECTORY.FOLLOWER.TEST)
previous date: "25-APR-83 17:28:48"
{PHYLEX:PARC:XEROX}<LISP>INTERMEZZO>LISPUSERS>TRAJECTORY-FOLLOWER.;1)
(* Copyright (c) 1986 by Xerox Corporation. All rights reserved.)
(PRETTYCOMPRINT TRAJECTORY-FOLLOWERCOMS)
(RPAQQ TRAJECTORY-FOLLOWERCOMS ((FNS TRAJECTORY.FOLLOW TRAJECTORY.FOLLOWER.POINT
TRAJECTORY.FOLLOWER.PUT TRAJECTORY.FOLLOWER.SETUP
TRAJECTORY.FOLLOWER.TEST TRAJECTORY.FOLLOWER.WRAPUP)
(VARS (TRAJECTORY.FOLLOWER.POINTS))
(GLOBALVARS TRAJECTORY.FOLLOWER.COUNT TRAJECTORY.FOLLOWER.LAST.TIME
TRAJECTORY.FOLLOWER.POINTER TRAJECTORY.FOLLOWER.POINTS
TRAJECTORY.FOLLOWER.DELAY TRAJECTORY.FOLLOWER.DSP
TRAJECTORY.FOLLOWER.BITMAP TRAJECTORY.FOLLOWER.HALF.WIDTH
TRAJECTORY.FOLLOWER.HALF.HEIGHT TRAJECTORY.FOLLOWER.WIDTH
TRAJECTORY.FOLLOWER.HEIGHT)
(BITMAPS TRAJECTORY.FOLLOWER.DEFAULT.BITMAP TRAJECTORY.FOLLOWER.BALL
TRAJECTORY.FOLLOWER.HORIZONTAL TRAJECTORY.FOLLOWER.VERTICAL)
(P (FILESLOAD (SYSLOAD FROM VALUEOF LISPUSERSDIRECTORIES)
READNUMBER))))
(DEFINEQ
(TRAJECTORY.FOLLOW
[LAMBDA (KNOTS CLOSED N DELAY BITMAP WINDOW) (* N.H.Briggs "19-Feb-86 11:01")
(* DAHJr "22-APR-83 17:56")
(PROG NIL
(TRAJECTORY.FOLLOWER.SETUP (OR WINDOW (SCREENBITMAP))
N DELAY (OR BITMAP TRAJECTORY.FOLLOWER.BALL))
(DRAWCURVE KNOTS CLOSED (FUNCTION TRAJECTORY.FOLLOWER.POINT)
NIL
(OR WINDOW PROMPTWINDOW))
(TRAJECTORY.FOLLOWER.WRAPUP])
(TRAJECTORY.FOLLOWER.POINT
[LAMBDA (X Y WINDOW) (* N.H.Briggs "19-Feb-86 10:49")
(* DAHJr "19-APR-83 21:06")
(if (IGREATERP (SETQ TRAJECTORY.FOLLOWER.POINTER (IPLUS TRAJECTORY.FOLLOWER.POINTER 2))
TRAJECTORY.FOLLOWER.COUNT)
then (SETQ TRAJECTORY.FOLLOWER.POINTER 1))
(TRAJECTORY.FOLLOWER.PUT TRAJECTORY.FOLLOWER.POINTER)
(if TRAJECTORY.FOLLOWER.DELAY
then (DISMISS (IDIFFERENCE TRAJECTORY.FOLLOWER.DELAY (CLOCKDIFFERENCE
TRAJECTORY.FOLLOWER.LAST.TIME)))
(SETQ TRAJECTORY.FOLLOWER.LAST.TIME (CLOCK 0)))
(if X
then (SETA TRAJECTORY.FOLLOWER.POINTS TRAJECTORY.FOLLOWER.POINTER (FIXR X))
(SETA TRAJECTORY.FOLLOWER.POINTS (ADD1 TRAJECTORY.FOLLOWER.POINTER)
(FIXR Y))
(TRAJECTORY.FOLLOWER.PUT TRAJECTORY.FOLLOWER.POINTER)
else (SETA TRAJECTORY.FOLLOWER.POINTS TRAJECTORY.FOLLOWER.POINTER MAX.FIXP])
(TRAJECTORY.FOLLOWER.PUT
[LAMBDA (POINTER) (* N.H.Briggs "19-Feb-86 11:05")
(* DAHJr "19-APR-83 20:57")
(PROG (X Y)
(if (NOT (IEQP (SETQ X (ELT TRAJECTORY.FOLLOWER.POINTS POINTER))
MAX.FIXP))
then (SETQ Y (ELT TRAJECTORY.FOLLOWER.POINTS (ADD1 POINTER)))
(BITBLT TRAJECTORY.FOLLOWER.BITMAP 0 0 TRAJECTORY.FOLLOWER.DSP (IDIFFERENCE X
TRAJECTORY.FOLLOWER.HALF.WIDTH)
(IDIFFERENCE Y TRAJECTORY.FOLLOWER.HALF.HEIGHT)
TRAJECTORY.FOLLOWER.WIDTH TRAJECTORY.FOLLOWER.HEIGHT (QUOTE INPUT)
(QUOTE INVERT])
(TRAJECTORY.FOLLOWER.SETUP
[LAMBDA (DSP N DELAY BITMAP) (* N.H.Briggs "19-Feb-86 10:49")
(* DAHJr "19-APR-83 21:05")
(PROG ((REAL.N (OR N 100))
(REAL.BITMAP (OR BITMAP TRAJECTORY.FOLLOWER.DEFAULT.BITMAP)))
(if (AND TRAJECTORY.FOLLOWER.POINTS (EQ (ITIMES REAL.N 2)
(ARRAYSIZE TRAJECTORY.FOLLOWER.POINTS)))
else (SETQ TRAJECTORY.FOLLOWER.POINTS (ARRAY (ITIMES REAL.N 2)
(QUOTE FIXP)
MAX.FIXP)))
(SETQ TRAJECTORY.FOLLOWER.POINTER 1)
(SETQ TRAJECTORY.FOLLOWER.COUNT REAL.N)
(SETQ TRAJECTORY.FOLLOWER.DSP DSP)
(SETQ TRAJECTORY.FOLLOWER.DELAY DELAY)
(if DELAY
then (SETQ TRAJECTORY.FOLLOWER.LAST.TIME (CLOCK 0)))
(SETQ TRAJECTORY.FOLLOWER.BITMAP REAL.BITMAP)
(SETQ TRAJECTORY.FOLLOWER.WIDTH (fetch (BITMAP BITMAPWIDTH) of REAL.BITMAP))
(SETQ TRAJECTORY.FOLLOWER.HEIGHT (fetch (BITMAP BITMAPHEIGHT) of REAL.BITMAP))
(SETQ TRAJECTORY.FOLLOWER.HALF.WIDTH (IQUOTIENT TRAJECTORY.FOLLOWER.WIDTH 2))
(SETQ TRAJECTORY.FOLLOWER.HALF.HEIGHT (IQUOTIENT TRAJECTORY.FOLLOWER.HEIGHT 2])
(TRAJECTORY.FOLLOWER.TEST
[LAMBDA NIL (* N.H.Briggs "19-Feb-86 11:02")
(* DAHJr "22-APR-83 16:17")
(PROG (KNOTS N DELAY CLOSED BITMAP)
(printout PROMPTWINDOW
"Indicate knots on a trajectory; hold down left shift key on last point")
[SETQ KNOTS (CONS (GETPOSITION)
(collect (GETPOSITION) repeatuntil (KEYDOWNP (QUOTE LSHIFT]
(SETQ N (RNUMBER "Indicate the number of points in the follower"))
(SETQ DELAY (MAX 0 (RNUMBER "Indicate the delay per point (milliseconds)")))
(if (ZEROP DELAY)
then (SETQ DELAY NIL))
[SETQ CLOSED (MENU (create MENU
ITEMS ← (QUOTE (OPEN CLOSED]
[SETQ BITMAP (MENU (create MENU
ITEMS ← (QUOTE (("single point" NIL)
("A horizontal line"
TRAJECTORY.FOLLOWER.HORIZONTAL)
("A vertical line" TRAJECTORY.FOLLOWER.VERTICAL)
("A ball" TRAJECTORY.FOLLOWER.BALL]
(TRAJECTORY.FOLLOWER.SETUP (SCREENBITMAP)
N DELAY BITMAP)
(if (EQ CLOSED (QUOTE CLOSED))
then (until (KEYDOWNP (QUOTE LSHIFT)) do (DRAWCURVE KNOTS T (FUNCTION
TRAJECTORY.FOLLOWER.POINT)
NIL PROMPTWINDOW))
else (DRAWCURVE KNOTS NIL (FUNCTION TRAJECTORY.FOLLOWER.POINT)
NIL PROMPTWINDOW))
(TRAJECTORY.FOLLOWER.WRAPUP])
(TRAJECTORY.FOLLOWER.WRAPUP
[LAMBDA NIL (* DAHJr "19-APR-83 17:29")
(for I to TRAJECTORY.FOLLOWER.COUNT do (TRAJECTORY.FOLLOWER.POINT])
)
(RPAQQ TRAJECTORY.FOLLOWER.POINTS NIL)
(DECLARE: DOEVAL@COMPILE DONTCOPY
(GLOBALVARS TRAJECTORY.FOLLOWER.COUNT TRAJECTORY.FOLLOWER.LAST.TIME TRAJECTORY.FOLLOWER.POINTER
TRAJECTORY.FOLLOWER.POINTS TRAJECTORY.FOLLOWER.DELAY TRAJECTORY.FOLLOWER.DSP
TRAJECTORY.FOLLOWER.BITMAP TRAJECTORY.FOLLOWER.HALF.WIDTH TRAJECTORY.FOLLOWER.HALF.HEIGHT
TRAJECTORY.FOLLOWER.WIDTH TRAJECTORY.FOLLOWER.HEIGHT)
)
(RPAQ TRAJECTORY.FOLLOWER.DEFAULT.BITMAP (READBITMAP))
(1 1
"H@@@")
(RPAQ TRAJECTORY.FOLLOWER.BALL (READBITMAP))
(21 21
"@AOL@@@@"
"@COO@@@@"
"@OOOH@@@"
"AOOOL@@@"
"COOON@@@"
"GOOOO@@@"
"GOOOO@@@"
"GOOOOH@@"
"OOOOOH@@"
"OOOOOH@@"
"OOOOOH@@"
"OOOOOH@@"
"GOOOOH@@"
"GOOOO@@@"
"GOOOO@@@"
"COOON@@@"
"COOON@@@"
"AOOOL@@@"
"@OOOH@@@"
"@GOO@@@@"
"@AOL@@@@")
(RPAQ TRAJECTORY.FOLLOWER.HORIZONTAL (READBITMAP))
(18 1
"OOOOL@@@")
(RPAQ TRAJECTORY.FOLLOWER.VERTICAL (READBITMAP))
(1 16
"H@@@"
"H@@@"
"H@@@"
"H@@@"
"H@@@"
"H@@@"
"H@@@"
"H@@@"
"H@@@"
"H@@@"
"H@@@"
"H@@@"
"H@@@"
"H@@@"
"H@@@"
"H@@@")
(FILESLOAD (SYSLOAD FROM VALUEOF LISPUSERSDIRECTORIES)
READNUMBER)
(PUTPROPS TRAJECTORY-FOLLOWER COPYRIGHT ("Xerox Corporation" 1986))
(DECLARE: DONTCOPY
(FILEMAP (NIL (1351 6909 (TRAJECTORY.FOLLOW 1361 . 1898) (TRAJECTORY.FOLLOWER.POINT 1900 . 2967) (
TRAJECTORY.FOLLOWER.PUT 2969 . 3699) (TRAJECTORY.FOLLOWER.SETUP 3701 . 5054) (TRAJECTORY.FOLLOWER.TEST
5056 . 6693) (TRAJECTORY.FOLLOWER.WRAPUP 6695 . 6907)))))
STOP