(FILECREATED " 5-MAY-83 18:16:24" {PHYLUM}<LISPUSERS>POLYGONS.;26 21365
changes to: (FNS POLYGONS DOPOLYGON RANDOMPT LABELPTS READPOLYGONPTS DRAWCROSSAT READSPLINEPTS
DOMENU CONNECTPOLYS)
previous date: " 5-DEC-82 20:43:37" {PHYLUM}<LISPUSERS>POLYGONS.;25)
(* Copyright (c) 1982, 1983 by Xerox Corporation)
(PRETTYCOMPRINT POLYGONSCOMS)
(RPAQQ POLYGONSCOMS [(FNS ADDPOSITIONS CHANGE/POLYGONS/BACKGROUND CONNECTPOLYS DOPOLYGON DRAWCROSSAT
DRAWPOLY1 DRAWPOLYS FLASHPOLY1 INITPOLYMENU LABELPTS POLYGONS POLYGON
RANDOMPT READPOLYGONPTS READPOLYNUMBER READSPLINEPTS RETRIEVEPOLYGONS
RUNPOLYGONS POLYGONSDEMO SAVECURRENTPOLYGONS WUPPERLEFTCORNER)
(VARS (SAVEDPOLYGONS)
(POLYGONSWINDOW)
POLYGONSFLASHWAIT)
(GLOBALVARS POLYGONSTEPS POLYGONWAIT POLYGONMINPTS POLYGONMAXPTS WHITEBACKGROUNDFLG
POLYGONCONNECTEDFLG LASTPOLYGONTOS LASTPOLYGONFROMS POINTSINPUT SAVEDPOLYGONS
SHOWMOVEMENTFLG POLYGONSFLASHWAIT)
(COMS (* active menu functions)
(FNS DOMENU UPDATEACTIVEMENU)
(RECORDS ACTIVEMENU ACTIVEMENUITEM))
(P (MOVD? (QUOTE \BACKGROUND)
(QUOTE BLOCK])
(DEFINEQ
(ADDPOSITIONS
[LAMBDA (POS1 POS2)
(create POSITION
XCOORD ←(IPLUS (fetch XCOORD of POS1)
(fetch XCOORD of POS2))
YCOORD ←(IPLUS (fetch YCOORD of POS1)
(fetch YCOORD of POS2])
(CHANGE/POLYGONS/BACKGROUND
[LAMBDA (WINDOW) (* rrb "29-MAY-82 20:04")
(* switches the background color of the polygon window.)
(COND
(WHITEBACKGROUNDFLG (DSPTEXTURE BLACKSHADE WINDOW)
(DSPOPERATION (QUOTE ERASE)
WINDOW)
(SETQ WHITEBACKGROUNDFLG NIL)
"White back")
(T (DSPTEXTURE WHITESHADE WINDOW)
(DSPOPERATION (QUOTE REPLACE)
WINDOW)
(SETQ WHITEBACKGROUNDFLG T)
"Black back"])
(CONNECTPOLYS
[LAMBDA (FROMS TOS NSTEPS CONNECTEDFLG DS) (* rrb " 5-MAY-83 18:15")
(SETQ LASTPOLYGONFROMS FROMS)
(SETQ LASTPOLYGONTOS TOS)
(PROG (DIFFS (XFROMS (COPY FROMS)))
(CLEARW DS)
(DRAWPOLY1 XFROMS 3 CONNECTEDFLG (COND
(WHITEBACKGROUNDFLG (QUOTE REPLACE))
(T (QUOTE ERASE)))
DS)
(DRAWPOLY1 TOS 6 CONNECTEDFLG (COND
(WHITEBACKGROUNDFLG (QUOTE REPLACE))
(T (QUOTE ERASE)))
DS)
[SETQ DIFFS (for FPT in XFROMS as TPT in TOS
collect (DRAWBETWEEN FPT TPT 1 (COND
(WHITEBACKGROUNDFLG (QUOTE REPLACE))
(T (QUOTE ERASE)))
DS)
(create POSITION
XCOORD ←(IDIFFERENCE (fetch XCOORD of TPT)
(fetch XCOORD of FPT))
YCOORD ←(IDIFFERENCE (fetch YCOORD of TPT)
(fetch YCOORD of FPT]
[COND
(SHOWMOVEMENTFLG (for I from 1 to POLYGONSTEPS
do (FLASHPOLY1 XFROMS 1 CONNECTEDFLG DS)
[for PT in XFROMS as DIF in DIFFS as FROMPT in FROMS
do (replace XCOORD of PT
with (IPLUS (fetch XCOORD of FROMPT)
(IQUOTIENT (ITIMES (fetch XCOORD
of DIF)
I)
POLYGONSTEPS)))
(replace YCOORD of PT
with (IPLUS (fetch YCOORD of FROMPT)
(IQUOTIENT (ITIMES (fetch YCOORD
of DIF)
I)
POLYGONSTEPS]
finally (FLASHPOLY1 XFROMS 1 CONNECTEDFLG DS))
(SETQ XFROMS (COPY FROMS]
(DISMISS 1500)
(CLEARW DS)
(for I from 1 to POLYGONSTEPS
do (DRAWPOLY1 XFROMS 1 CONNECTEDFLG NIL DS)
[for PT in XFROMS as DIF in DIFFS as FROMPT in FROMS
do (replace XCOORD of PT with (IPLUS (fetch XCOORD of FROMPT)
(IQUOTIENT (ITIMES (fetch XCOORD
of DIF)
I)
POLYGONSTEPS)))
(replace YCOORD of PT with (IPLUS (fetch YCOORD of FROMPT)
(IQUOTIENT (ITIMES (fetch YCOORD
of DIF)
I)
POLYGONSTEPS]
finally (DRAWPOLY1 XFROMS 1 CONNECTEDFLG NIL DS))
(RETURN T])
(DOPOLYGON
[LAMBDA (WINDOW) (* rrb " 5-MAY-83 17:48")
(* runs the current settings of polygon until a key is
hit.)
(ERSETQ (PROG (NPOINTS (WINDOW (OR WINDOW POLYWINDOW)))
(SETQ NPOINTS (RAND POLYGONMINPTS POLYGONMAXPTS))
(CONNECTPOLYS (for I from 1 to NPOINTS collect (RANDOMPT WINDOW))
(for I from 1 to NPOINTS collect (RANDOMPT WINDOW))
POLYGONSTEPS POLYGONCONNECTEDFLG WINDOW)))
NIL])
(DRAWCROSSAT
[LAMBDA (PT LENGTH WIN) (* rrb " 5-MAY-83 17:56")
(* * draws a cross at a point)
(PROG ((X (fetch XCOORD of PT))
(Y (fetch YCOORD of PT))
(DIFFLEN (IQUOTIENT LENGTH 2)))
(DRAWLINE (IDIFFERENCE X DIFFLEN)
Y
(IPLUS X DIFFLEN)
Y 1 NIL WIN)
(DRAWLINE X (IDIFFERENCE Y DIFFLEN)
X
(IPLUS Y DIFFLEN)
1 NIL WIN])
(DRAWPOLY1
[LAMBDA (PTLIST WIDTH CONNECT? OPERATION DS) (* rrb "29-MAY-82 20:10")
(* draws a closed polygon of the points given If
OPERATION is not given, use the one from the default
DS.)
[COND
(PTLIST (for PTA in PTLIST as PTB in (CDR PTLIST) do (DRAWBETWEEN PTA PTB WIDTH
(OR OPERATION
(DSPOPERATION NIL DS))
DS)
finally (AND CONNECT? (DRAWBETWEEN (CAR (LAST PTLIST))
(CAR PTLIST)
WIDTH
(OR OPERATION (DSPOPERATION NIL DS))
DS)
DS]
(BLOCK])
(DRAWPOLYS
[LAMBDA (FROMS TOS NSTEPS CONNECTEDFLG WINDOW) (* rrb " 5-DEC-82 20:40")
(* set up to draw polygons with CONNECTPOLYS and return
NIL.)
(CONNECTPOLYS FROMS TOS NSTEPS CONNECTEDFLG (OR WINDOW POLYWINDOW))
NIL])
(FLASHPOLY1
[LAMBDA (PTS WIDTH CONNECTEDFLG DS) (* rrb "29-MAY-82 19:48")
(DRAWPOLY1 XFROMS WIDTH CONNECTEDFLG (QUOTE INVERT)
DS)
(DISMISS POLYGONSFLASHWAIT)
(DRAWPOLY1 XFROMS WIDTH CONNECTEDFLG (QUOTE INVERT)
DS])
(INITPOLYMENU
[LAMBDA (WINDOW) (* rrb "29-MAY-82 20:14")
(* creates the initial polygon menu list.)
(SETQ POLYGONACTIVEMENU (create ACTIVEMENU
ACTIVEMENUITEMS ←[LIST
(create ACTIVEMENUITEM
ACTIVEITEMLABEL ← "AUTO-MODE"
MENUFORM ←(LIST (QUOTE RUNPOLYGONS)
(KWOTE WINDOW)))
(create ACTIVEMENUITEM
ACTIVEITEMLABEL ← "Do One"
MENUFORM ←(LIST (QUOTE DOPOLYGON)
(KWOTE WINDOW)))
(create ACTIVEMENUITEM
ACTIVEITEMLABEL ← "Pause Time"
MENUFORM ←(QUOTE (READPOLYNUMBER (QUOTE WAIT)))
MENUINITFORM ←(QUOTE (SETQ POLYGONWAIT 5000)))
(create ACTIVEMENUITEM
ACTIVEITEMLABEL ← "Number Of Steps"
MENUFORM ←(QUOTE (READPOLYNUMBER (QUOTE STEPS)))
MENUINITFORM ←(QUOTE (SETQ POLYGONSTEPS 35)))
(create ACTIVEMENUITEM
ACTIVEITEMLABEL ← "Max Points"
MENUFORM ←(QUOTE (READPOLYNUMBER (QUOTE MAX)))
MENUINITFORM ←(QUOTE (SETQ POLYGONMAXPTS 9)))
(create ACTIVEMENUITEM
ACTIVEITEMLABEL ← "Min Points"
MENUFORM ←(QUOTE (READPOLYNUMBER (QUOTE MIN)))
MENUINITFORM ←(QUOTE (SETQ POLYGONMINPTS 3)))
(create ACTIVEMENUITEM
ACTIVEITEMLABEL ← "Movement"
MENUFORM ←(QUOTE (COND (SHOWMOVEMENTFLG (SETQ
SHOWMOVEMENTFLG NIL)
"Movement")
((SETQ SHOWMOVEMENTFLG T)
"Don't Movement")))
MENUINITFORM ←(QUOTE (SETQ SHOWMOVEMENTFLG NIL)))
[create ACTIVEMENUITEM
ACTIVEITEMLABEL ← "REDRAW"
MENUFORM ←(LIST (QUOTE DRAWPOLYS)
(QUOTE LASTPOLYGONFROMS)
(QUOTE LASTPOLYGONTOS)
(QUOTE POLYGONSTEPS)
(QUOTE POLYGONCONNECTEDFLG)
(KWOTE WINDOW))
MENUINITFORM ←(QUOTE (PROGN [SETQ LASTPOLYGONFROMS
(QUOTE ((210 . 637)
(471 . 493)
(72 . 319)
(470 . 146)
(225 . 46]
(SETQ LASTPOLYGONTOS
(QUOTE ((431 . 635)
(96 . 491)
(419 . 370)
(125 . 172)
(527 . 61]
(create ACTIVEMENUITEM
ACTIVEITEMLABEL ← "Not Connected"
MENUFORM ←(QUOTE (COND (POLYGONCONNECTEDFLG
(SETQ POLYGONCONNECTEDFLG NIL)
"Connected")
(T (SETQ POLYGONCONNECTEDFLG T)
"Not Connected")))
MENUINITFORM ←(QUOTE (SETQ POLYGONCONNECTEDFLG T)))
(create ACTIVEMENUITEM
ACTIVEITEMLABEL ← "FROM pts"
MENUFORM ←(LIST (QUOTE READPOLYGONPTS)
(QUOTE (QUOTE FROM))
WINDOW))
(create ACTIVEMENUITEM
ACTIVEITEMLABEL ← "TO pts"
MENUFORM ←(LIST (QUOTE READPOLYGONPTS)
(QUOTE (QUOTE TO))
WINDOW))
[create ACTIVEMENUITEM
ACTIVEITEMLABEL ← "White back"
MENUFORM ←(LIST (QUOTE CHANGE/POLYGONS/BACKGROUND)
WINDOW)
MENUINITFORM ←(QUOTE (PROGN (SETQ WHITEBACKGROUNDFLG
NIL)
(DSPTEXTURE BLACKSHADE
WINDOW)
(DSPOPERATION (QUOTE ERASE)
WINDOW]
(create ACTIVEMENUITEM
ACTIVEITEMLABEL ← "Save Figure"
MENUFORM ←(QUOTE (SAVECURRENTPOLYGONS)))
(create ACTIVEMENUITEM
ACTIVEITEMLABEL ← "Retrieve Figure"
MENUFORM ←(QUOTE (RETRIEVEPOLYGONS)))
(create ACTIVEMENUITEM
ACTIVEITEMLABEL ← "Hardcopy"
MENUFORM ←(LIST (QUOTE HARDCOPYW)
WINDOW))
(create ACTIVEMENUITEM
ACTIVEITEMLABEL ← "Stop"
MENUFORM ←(QUOTE (QUOTE STOP]
MENU ←(create MENU
CENTERFLG ← T
MENUFONT ←(FONTCREATE (QUOTE HELVETICA)
10)
MENUCOLUMNS ← 4)))
(UPDATEACTIVEMENU POLYGONACTIVEMENU)
(for AMITEM in (fetch ACTIVEMENUITEMS of POLYGONACTIVEMENU) do (EVAL (fetch MENUINITFORM
of AMITEM])
(LABELPTS
[LAMBDA (PTS PREFIX WINDOW) (* rrb " 5-MAY-83 17:55")
(for PT in PTS as I from 1
do (DRAWCROSSAT PT 15 WINDOW)
(MOVETO (IPLUS (fetch XCOORD of PT)
1)
(IPLUS (fetch YCOORD of PT)
3)
WINDOW)
(AND PREFIX (PRIN1 PREFIX WINDOW)
(PRIN1 I WINDOW])
(POLYGONS
[LAMBDA (DONTGOFLG WHERE) (* rrb " 5-MAY-83 17:36")
(PROG [(POLYWINDOW (DECODE/WINDOW/OR/DISPLAYSTREAM WHERE (QUOTE POLYWINDOW]
(INITPOLYMENU POLYWINDOW)
(OR DONTGOFLG (RUNPOLYGONS POLYWINDOW))
(DOMENU POLYGONACTIVEMENU (ADDPOSITIONS (WUPPERLEFTCORNER POLYWINDOW)
(CONSTANT (create POSITION
XCOORD ← 0
YCOORD ← 4])
(POLYGON
[LAMBDA NIL (* bas: " 5-JUN-82 18:59")
(* draws one polygon in either POLYGONSWINDOW or a
window from the user.)
(PROG ([POLYWINDOW (COND
((TYPENAMEP POLYGONSWINDOW (QUOTE WINDOW))
POLYGONSWINDOW)
(T (SETQ POLYGONSWINDOW (CREATEW]
NPOINTS) (* INITPOLYMENU does some initialization)
(INITPOLYMENU POLYWINDOW)
(SETQ NPOINTS (RAND POLYGONMINPTS POLYGONMAXPTS))
(CONNECTPOLYS (for I from 1 to NPOINTS collect (RANDOMPT POLYWINDOW))
(for I from 1 to NPOINTS collect (RANDOMPT POLYWINDOW))
POLYGONSTEPS POLYGONCONNECTEDFLG POLYWINDOW])
(RANDOMPT
[LAMBDA (DS) (* rrb " 5-MAY-83 17:48")
(PROG ((REG (DSPCLIPPINGREGION NIL DS)))
(RETURN (create POSITION
XCOORD ←(RAND (fetch LEFT of REG)
(fetch RIGHT of REG))
YCOORD ←(RAND (fetch BOTTOM of REG)
(fetch TOP of REG])
(READPOLYGONPTS
[LAMBDA (WHAT DS) (* rrb " 5-MAY-83 17:52")
(* reads a polygon)
(LABELPTS LASTPOLYGONFROMS (COND
((EQ WHAT (QUOTE TO))
(QUOTE F))
(T (QUOTE OF)))
DS)
(LABELPTS LASTPOLYGONTOS (COND
((EQ WHAT (QUOTE FROM))
T)
(T (QUOTE OT)))
DS)
(PRIN1 "
" T DS)
(ERSETQ (SELECTQ WHAT
(FROM (SETQ LASTPOLYGONFROMS (READSPLINEPTS DS)))
(TO (SETQ LASTPOLYGONTOS (READSPLINEPTS DS)))
(SHOULDNT)))
NIL])
(READPOLYNUMBER
[LAMBDA (WHAT) (* rrb "12-JAN-81 18:34")
(* reads a number and sets the MIN or MAX number of points to that. Also checks to make sure min leq max.
Returns NIL so menu won't be updates.)
(PROG (NEWVALUE)
LP (CLEARBUF T T)
(PRIN1 "Current value is: " T)
(PRIN1 (SELECTQ WHAT
(MIN POLYGONMINPTS)
(MAX POLYGONMAXPTS)
(STEPS POLYGONSTEPS)
(WAIT (PACK* (IQUOTIENT POLYGONWAIT 1000)
" seconds"))
(SHOULDNT))
T)
(TERPRI T)
(PRIN1 "What should the new value be: " T)
(COND
((NOT (AND [NUMBERP (SETQ NEWVALUE (PROGN (CLEARBUF T T)
(READ]
(IGEQ NEWVALUE 0)))
(PRIN1 "Please enter a number greater than 0." T)
(TERPRI T)
(GO LP)))
(SELECTQ WHAT
[MIN (SETQ POLYGONMINPTS NEWVALUE)
(COND
((IGREATERP POLYGONMINPTS POLYGONMAXPTS)
(SETQ POLYGONMAXPTS POLYGONMINPTS]
[MAX (SETQ POLYGONMAXPTS NEWVALUE)
(COND
((IGREATERP POLYGONMINPTS POLYGONMINPTS)
(SETQ POLYGONMINPTS NEWVALUE]
(STEPS (SETQ POLYGONSTEPS NEWVALUE))
(WAIT (SETQ POLYGONWAIT (ITIMES NEWVALUE 1000)))
(SHOULDNT))
(RETURN NIL])
(READSPLINEPTS
[LAMBDA (DS) (* rrb " 5-MAY-83 17:58")
(* reads red button mouse up clicks and returns their
positions until a character is pressed.)
(CLEARBUF T)
(PRIN1 "Use red button to indicate points. End by typing a character.
" PROMPTWINDOW)
(PROG (PTS)
LP (COND
((READP T)
(RETURN (DREVERSE PTS)))
((NOT (MOUSESTATE LEFT))
(GO LP)))
LEFTDOWN
(COND
((READP T)
(RETURN (DREVERSE PTS)))
((NOT (MOUSESTATE (NOT LEFT)))
(GO LEFTDOWN)))
(SETQ PTS (CONS (create POSITION
XCOORD ←(LASTMOUSEX DS)
YCOORD ←(LASTMOUSEY DS))
PTS))
(DRAWCROSSAT (CAR PTS)
10 DS)
(GO LP])
(RETRIEVEPOLYGONS
[LAMBDA NIL (* rrb " 7-DEC-80 13:00")
(* lets the user select a saved figure and installs it)
(COND
((NULL SAVEDPOLYGONS)
(PRIN1 "No figures have been saved yet.
" T))
((SETQ FIGURE (MENUASSOC SAVEDPOLYGONS 4 500))
(CONNECTPOLYS (CADR FIGURE)
(CADDR FIGURE)
POLYGONSTEPS POLYGONCONNECTEDFLG))
(T (PRIN1 "Old figure not retrieved.
" T)))
NIL])
(RUNPOLYGONS
[LAMBDA (DS) (* rrb "29-MAY-82 19:57")
(* runs the current settings of polygon until a key is
hit.)
[ERSETQ (PROG (NPOINTS)
(CLEARBUF T)
LP (SETQ NPOINTS (RAND POLYGONMINPTS POLYGONMAXPTS))
(* if ↑E during CONNECTPOLYS propagate it.)
(OR (CONNECTPOLYS (for I from 1 to NPOINTS collect (RANDOMPT DS))
(for I from 1 to NPOINTS collect (RANDOMPT DS))
POLYGONSTEPS POLYGONCONNECTEDFLG DS)
(ERROR!))
(AND (READP T)
(RETURN))
(DISMISS POLYGONWAIT)
(OR (READP T)
(GO LP]
NIL])
(POLYGONSDEMO
[LAMBDA NIL (* edited: "18-NOV-82 09:03")
(PROG ([POLYWINDOW (COND
((TYPENAMEP POLYGONSWINDOW (QUOTE WINDOW))
POLYGONSWINDOW)
(T (SETQ POLYGONSWINDOW
(CREATEW (create REGION
LEFT ← 200
BOTTOM ← 150
WIDTH ← 600
HEIGHT ← 500]
NPOINTS) (* INITPOLYMENU does some initialization)
(INITPOLYMENU POLYWINDOW)
(SETQ NPOINTS (RAND POLYGONMINPTS POLYGONMAXPTS))
(RPTQ (COND
((EQ (MACHINETYPE)
(QUOTE DORADO))
3)
(T 1))
(CONNECTPOLYS (for I from 1 to NPOINTS collect (RANDOMPT POLYWINDOW))
(for I from 1 to NPOINTS collect (RANDOMPT POLYWINDOW))
POLYGONSTEPS POLYGONCONNECTEDFLG POLYWINDOW)
(COND
((IGREATERP RPTN 1)
(DISMISS 1500])
(SAVECURRENTPOLYGONS
[LAMBDA NIL (* rrb " 7-DEC-80 11:32")
(* asks for a figure name and saves the current polygons
with that name.)
(PRIN1 "Type in the name of this figure (end with a RETURN): " T)
(SETQ SAVEDPOLYGONS (CONS (LIST (READ T)
LASTPOLYGONFROMS LASTPOLYGONTOS)
SAVEDPOLYGONS))
NIL])
(WUPPERLEFTCORNER
[LAMBDA (WINDOW) (* rrb " 4-AUG-81 15:04")
(* returns the position of the upper left corner of the
window.)
(create POSITION
XCOORD ←(DSPXOFFSET NIL (WINDOWPROP WINDOW (QUOTE DSP)))
YCOORD ←(IPLUS (DSPYOFFSET NIL (WINDOWPROP WINDOW (QUOTE DSP)))
(WINDOWPROP WINDOW (QUOTE HEIGHT])
)
(RPAQQ SAVEDPOLYGONS NIL)
(RPAQQ POLYGONSWINDOW NIL)
(RPAQQ POLYGONSFLASHWAIT 60)
(DECLARE: DOEVAL@COMPILE DONTCOPY
(ADDTOVAR GLOBALVARS POLYGONSTEPS POLYGONWAIT POLYGONMINPTS POLYGONMAXPTS WHITEBACKGROUNDFLG
POLYGONCONNECTEDFLG LASTPOLYGONTOS LASTPOLYGONFROMS POINTSINPUT SAVEDPOLYGONS
SHOWMOVEMENTFLG POLYGONSFLASHWAIT)
)
(* active menu functions)
(DEFINEQ
(DOMENU
[LAMBDA (ACTIVEMENU POS) (* rrb " 5-MAY-83 18:15")
(* repeatedly reads menu hits from ACTIVEMENU and executing the associated forms. If the form returns
(QUOTE STOP) DOMENU returns. If the form returns any other non-NIL value it is taken as the new menu label for the
selected item.)
(PROG (HITITEM FORMVALUE)
LP (SETQ HITITEM (MENU (fetch MENU of ACTIVEMENU)
POS))
(for AMITEM in (fetch ACTIVEMENUITEMS of ACTIVEMENU) when (EQ HITITEM
(fetch ACTIVEITEMLABEL
of AMITEM))
do (COND
((EQ (SETQ FORMVALUE (EVAL (fetch MENUFORM of AMITEM)))
(QUOTE STOP))
(GO OUT))
(FORMVALUE (replace ACTIVEITEMLABEL of AMITEM with FORMVALUE)
(UPDATEACTIVEMENU ACTIVEMENU))
(T))
(GO LP))
(GO LP)
OUT (RETURN])
(UPDATEACTIVEMENU
[LAMBDA (ACTIVEMENU) (* rrb "27-JAN-81 09:20")
(* updates the MENU part of an active menu by
recollecting the labels.)
(replace ITEMS of (fetch MENU of ACTIVEMENU) with (for ITEM in (fetch ACTIVEMENUITEMS
of ACTIVEMENU)
collect (fetch ACTIVEITEMLABEL of ITEM)))
(* clobber image so that it will be recalculated.)
(replace IMAGE of (fetch MENU of ACTIVEMENU) with NIL])
)
[DECLARE: EVAL@COMPILE
(RECORD ACTIVEMENU (ACTIVEMENUITEMS MENU))
(RECORD ACTIVEMENUITEM (ACTIVEITEMLABEL MENUFORM MENUINITFORM))
]
(MOVD? (QUOTE \BACKGROUND)
(QUOTE BLOCK))
(PUTPROPS POLYGONS COPYRIGHT ("Xerox Corporation" 1982 1983))
(DECLARE: DONTCOPY
(FILEMAP (NIL (1143 19067 (ADDPOSITIONS 1153 . 1395) (CHANGE/POLYGONS/BACKGROUND 1397 . 1944) (
CONNECTPOLYS 1946 . 4336) (DOPOLYGON 4338 . 4941) (DRAWCROSSAT 4943 . 5406) (DRAWPOLY1 5408 . 6095) (
DRAWPOLYS 6097 . 6432) (FLASHPOLY1 6434 . 6717) (INITPOLYMENU 6719 . 11058) (LABELPTS 11060 . 11432) (
POLYGONS 11434 . 11891) (POLYGON 11893 . 12721) (RANDOMPT 12723 . 13075) (READPOLYGONPTS 13077 . 13678
) (READPOLYNUMBER 13680 . 14968) (READSPLINEPTS 14970 . 15820) (RETRIEVEPOLYGONS 15822 . 16350) (
RUNPOLYGONS 16352 . 17193) (POLYGONSDEMO 17195 . 18147) (SAVECURRENTPOLYGONS 18149 . 18607) (
WUPPERLEFTCORNER 18609 . 19065)) (19450 21089 (DOMENU 19460 . 20406) (UPDATEACTIVEMENU 20408 . 21087))
)))
STOP