$ od -c -N 50000 [eris]<LispManual>WPmenus.im!6
0000000 \r { B e g i n S u b S e c I
0000020 n t e r a c t i v e D i s p l
0000040 a y F u n c t i o n s } \r { T
0000060 i t l e I n t e r a c t i v e
0000100 D i s p l a y F u n c t i o
0000120 n s } \r { T e x t \r \r T h e f
0000140 o l l o w i n g f u n c t i o
0000160 n s a l l o w t h e u s e
0000200 r t o i n t e r a c t i v e
0000220 l y s p e c i f y p o s i t
0000240 i o n s o r r e g i o n s
0000260 o n t h e d i s p l a y s
0000300 c r e e n . \r \r \r { F n D e f
0000320 { N a m e G E T P O S I T I O
0000340 N } { A r g s W I N D O W
0000360 C U R S O R } \r { T e x t \r R e
0000400 t u r n s a { l i s p P O
0000420 S I T I O N } t h a t i s
0000440 s p e c i f i e d b y t h e
0000460 u s e r . { f n G E T P
0000500 O S I T I O N } w a i t s f
0000520 o r t h e u s e r t o p
0000540 r e s s a n d r e l e a s e
0000560 t h e l e f t b u t t o n
0000600 o f t h e m o u s e a n
0000620 d r e t u r n s t h e c u
0000640 r s o r p o s i t i o n a t
0000660 t h e t i m e o f r e l
0000700 e a s e . I f { a r g W
0000720 I N D O W } i s a { l i s
0000740 p W I N D O W } , t h e p
0000760 o s i t i o n w i l l b e
0001000 i n t h e c o o r d i n a t
0001020 e s y s t e m o f { a r g
0001040 W I N D O W } ' s d i s p l
0001060 a y s t r e a m . I f {
0001100 a r g W I N D O W } i s {
0001120 l i s p N I L } , t h e p
0001140 o s i t i o n w i l l b e
0001160 i n s c r e e n c o o r d i
0001200 n a t e s . I f { a r g
0001220 C U R S O R } i s a { l i
0001240 s p C U R S O R } , t h e
0001260 c u r s o r w i l l b e c
0001300 h a n g e d t o i t w h i
0001320 l e { f n G E T P O S I T I
0001340 O N } i s r u n n i n g .
0001360 I f { a r g C U R S O R }
0001400 i s { l i s p N I L } ,
0001420 t h e v a l u e o f t h e
0001440 s y s t e m v a r i a b l e
0001460 { v a r C R O S S H A I R S
0001500 } { i n d e x C R O S S H A I
0001520 R S V a r } w i l l b e
0001540 u s e d a s t h e c u r s
0001560 o r . \r } } \r \r \r { F n D e f
0001600 { N a m e G E T B O X P O S I
0001620 T I O N } { A r g s W I D T
0001640 H H E I G H T O R G X O R
0001660 G Y W I N D O W P R O M P T
0001700 M S G } \r { T e x t \r A l l o w
0001720 s t h e u s e r t o p o
0001740 s i t i o n a " g h o s t "
0001760 r e g i o n o f s i z e
0002000 { a r g W I D T H } b y {
0002020 a r g H E I G H T } o n t
0002040 h e s c r e e n , a n d r
0002060 e t u r n s t h e { l i s p
0002100 P O S I T I O N } o f t h
0002120 e l o w e r l e f t c o r
0002140 n e r o f t h e r e g i o
0002160 n . I f { a r g P R O M
0002200 P T M S G } i s n o n - { l
0002220 i s p N I L } , { F n G E
0002240 T B O X P O S I T I O N } f i
0002260 r s t p r i n t s i t i n
0002300 t h e { v a r P R O M P T
0002320 W I N D O W } . { F n G E
0002340 T B O X P O S I T I O N } t h
0002360 e n c h a n g e s t h e c
0002400 u r s o r t o a b o x (
0002420 u s i n g t h e g l o b a l
0002440 v a r i a b l e { i n d e x
0002460 B O X C U R S O R V a r } {
0002500 v a r B O X C U R S O R } ) .
0002520 I f { a r g O R G X }
0002540 a n d { a r g O R G Y } a
0002560 r e n u m b e r s , t h e y
0002600 a r e t a k e n t o b e
0002620 t h e o r i g i n a l p o
0002640 s i t i o n o f t h e r e
0002660 g i o n , a n d t h e c u
0002700 r s o r i s m o v e d t o
0002720 t h e n e a r e s t c o r
0002740 n e r o f t h a t r e g i
0002760 o n . A g h o s t r e g
0003000 i o n i s l o c k e d t o
0003020 t h e c u r s o r s o t
0003040 h a t i f t h e c u r s o
0003060 r i s m o v e d , t h e
0003100 g h o s t r e g i o n m o v
0003120 e s w i t h i t . I f
0003140 { a r g O R G X } a n d {
0003160 a r g O R G Y } a r e n u
0003200 m b e r s , t h e c o r n e
0003220 r o f t h e r e g i o n
0003240 f o r m e d b y ( { a r g
0003260 O R G X } { A R G O R G Y }
0003300 { A R G W I D T H } { A R
0003320 G H E I G H T } ) t h a t
0003340 i s \r n e a r e s t t h e c
0003360 u r s o r p o s i t i o n i
0003400 s l o c k e d , o t h e r w
0003420 i s e t h e l o w e r l e
0003440 f t c o r n e r i s l o c
0003460 k e d . T h e u s e r c
0003500 a n c h a n g e t o a n o
0003520 t h e r c o r n e r b y h
0003540 o l d i n g d o w n t h e
0003560 r i g h t b u t t o n . W
0003600 i t h t h e r i g h t b u
0003620 t t o n d o w n , t h e c
0003640 u r s o r c a n b e m o v
0003660 e d a c r o s s t h e s c
0003700 r e e n w i t h o u t e f f
0003720 e c t o n t h e g h o s t
0003740 r e g i o n f r a m e .
0003760 W h e n t h e r i g h t b
0004000 u t t o n i s r e l e a s e
0004020 d , t h e m o u s e w i l
0004040 l s n a p t o t h e n e
0004060 a r e s t c o r n e r , w h
0004100 i c h w i l l t h e n b e
0004120 c o m e l o c k e d t o t
0004140 h e c u r s o r . ( T h e
0004160 h e l d c o r n e r c a n
0004200 b e c h a n g e d a f t e
0004220 r t h e l e f t o r m i
0004240 d d l e b u t t o n i s d
0004260 o w n b y h o l d i n g b
0004300 o t h t h e o r i g i n a l
0004320 b u t t o n a n d t h e
0004340 r i g h t b u t t o n d o w
0004360 n w h i l e t h e c u r s
0004400 o r i s m o v e d t o t
0004420 h e d e s i r e d n e w c
0004440 o r n e r , t h e n l e t t
0004460 i n g u p j u s t t h e
0004500 r i g h t b u t t o n . )
0004520 W h e n t h e l e f t o r
0004540 m i d d l e b u t t o n i
0004560 s p r e s s e d a n d r e
0004600 l e a s e d , t h e l o w e
0004620 r l e f t c o r n e r o f
0004640 t h e r e g i o n a t t
0004660 h e t i m e o f r e l e a
0004700 s e i s r e t u r n e d .
0004720 I f { a r g W I N D O W }
0004740 i s a { l i s p W I N D
0004760 O W } , t h e r e t u r n e
0005000 d p o s i t i o n w i l l
0005020 b e i n { a r g W I N D O
0005040 W } ' s c o o r d i n a t e
0005060 s y s t e m ; o t h e r w i s
0005100 e i t w i l l b e i n
0005120 s c r e e n c o o r d i n a t
0005140 e s . \r \r E x a m p l e : \r \r {
0005160 l i s p c o d e \r ( G E T B O X
0005200 P O S I T I O N 1 0 0 2 0 0
0005220 N I L N I L N I L \r
0005240 " S p e c i f y t h e p
0005260 o s i t i o n o f t h e c
0005300 o m m a n d a r e a . " ) } \r
0005320 \r p r o m p t s t h e u s e
0005340 r f o r a 1 0 0 w i d e
0005360 b y 2 0 0 h i g h r e g
0005400 i o n a n d r e t u r n s
0005420 i t s l o w e r l e f t c
0005440 o r n e r i n s c r e e n
0005460 c o o r d i n a t e s . \r } } \r
0005500 \r \r \r { F n D e f { N a m e
0005520 G E T R E G I O N } { A r g s
0005540 M I N W I D T H M I N H E I
0005560 G H T I N I T R E G I O N N
0005600 E W R E G I O N F N N E W R E
0005620 G I O N F N A R G } \r { T e x t
0005640 \r L e t s t h e u s e r s
0005660 p e c i f y a n e w r e g
0005700 i o n a n d r e t u r n s
0005720 t h a t r e g i o n i n \r s
0005740 c r e e n c o o r d i n a t e
0005760 s . { f n G E T R E G I O
0006000 N } p r o m p t s f o r a
0006020 r e g i o n b y \r d i s p l
0006040 a y i n g a f o u r - p r o
0006060 n g e d b o x n e x t t o
0006100 t h e c u r s o r a r r o
0006120 w a t o n e c o r n e r
0006140 o f a " g h o s t " r e g
0006160 i o n . I f t h e u s e
0006200 r p r e s s e s t h e l e
0006220 f t b u t t o n , t h e c
0006240 o r n e r o f a " g h o s
0006260 t " r e g i o n o p p o s i
0006300 t e t h e c u r s o r i s
0006320 l o c k e d w h e r e i t
0006340 i s . O n c e o n e c
0006360 o r n e r h a s b e e n f
0006400 i x e d , t h e g h o s t
0006420 r e g i o n e x p a n d s a
0006440 s t h e c u r s o r m o v
0006460 e s . \r \r T o s p e c i f y
0006500 a r e g i o n : ( 1 ) M
0006520 o v e t h e g h o s t b o
0006540 x s o t h a t t h e c o
0006560 r n e r o p p o s i t e t h
0006600 e c u r s o r i s a t o
0006620 n e c o r n e r o f t h e
0006640 i n t e n d e d r e g i o n
0006660 . ( 2 ) P r e s s t h e
0006700 l e f t b u t t o n . (
0006720 3 ) M o v e t h e c u r s
0006740 o r t o t h e p o s i t i
0006760 o n o f t h e o p p o s i
0007000 t e c o r n e r o f t h e
0007020 i n t e n d e d r e g i o n
0007040 w h i l e h o l d i n g d
0007060 o w n t h e l e f t b u t
0007100 t o n . ( 4 ) R e l e a s
0007120 e t h e l e f t b u t t o
0007140 n . \r \r B e f o r e o n e
0007160 c o r n e r h a s b e e n
0007200 f i x e d , o n e c a n
0007220 s w i t c h t h e c u r s o
0007240 r t o a n o t h e r c o r
0007260 n e r o f t h e g h o s t
0007300 r e g i o n b y h o l d i
0007320 n g d o w n t h e r i g h
0007340 t b u t t o n . W i t h
0007360 t h e r i g h t b u t t o n
0007400 d o w n , t h e c u r s o
0007420 r c h a n g e s t o a "
0007440 f o r c e p s " a n d t h e
0007460 c u r s o r c a n b e m
0007500 o v e d a c r o s s t h e
0007520 s c r e e n w i t h o u t e
0007540 f f e c t o n t h e \r g h o
0007560 s t r e g i o n f r a m e .
0007600 W h e n t h e r i g h t
0007620 b u t t o n i s r e l e a
0007640 s e d , t h e c u r s o r \r
0007660 w i l l s n a p t o t h e
0007700 n e a r e s t c o r n e r
0007720 o f t h e g h o s t r e g
0007740 i o n . \r \r A f t e r o n e
0007760 c o r n e r h a s b e e n
0010000 f i x e d , o n e c a n s
0010020 t i l l s w i t c h t o a
0010040 n o t h e r c o r n e r .
0010060 T o c h a n g e t o a n o
0010100 t h e r c o r n e r , c o n
0010120 t i n u e t o h o l d d o
0010140 w n t h e l e f t b u t t
0010160 o n a n d h o l d d o w n
0010200 t h e r i g h t b u t t o
0010220 n a l s o . W i t h b o
0010240 t h b u t t o n s d o w n ,
0010260 \r t h e c u r s o r c a n
0010300 b e m o v e d a c r o s s
0010320 t h e s c r e e n w i t h o
0010340 u t e f f e c t o n t h e
0010360 \r g h o s t r e g i o n f r
0010400 a m e . W h e n t h e r
0010420 i g h t b u t t o n i s r
0010440 e l e a s e d , t h e c u r
0010460 s o r \r w i l l s n a p t o
0010500 t h e n e a r e s t c o r
0010520 n e r , w h i c h w i l l
0010540 b e c o m e t h e m o v i n
0010560 g \r c o r n e r . I n t h
0010600 i s w a y , t h e r e g i
0010620 o n m a y b e m o v e d
0010640 a l l o v e r t h e s c r
0010660 e e n , \r b e f o r e i t s
0010700 s i z e a n d p o s i t i o
0010720 n i s f i n a l i z e d . \r
0010740 \r T h e s i z e o f t
0010760 h e i n i t i a l g h o s t
0011000 r e g i o n i s c o n t r
0011020 o l l e d b y t h e { a r
0011040 g M I N W I D T H } , { a r
0011060 g M I N H E I G H T } a n d
0011100 { a r g I N I T R E G I O N
0011120 } a r g u m e n t s . \r \r T h
0011140 e g h o s t r e g i o n w
0011160 i l l b e { a r g M I N W
0011200 I D T H } w i d e a n d {
0011220 a r g M I N H E I G H T } h
0011240 i g h . I f { a r g M I
0011260 N W I D T H } o r { a r g
0011300 M I N H E I G H T } i s { l
0011320 i s p N I L } , 0 i s u
0011340 s e d . T h u s , f o r
0011360 a c a l l t o { l i s p
0011400 G E T R E G I O N } w i t h
0011420 n o a r g u m e n t s s p e
0011440 c i f i e d , t h e r e w i
0011460 l l b e n o i n i t i a l
0011500 g h o s t r e g i o n .
0011520 T h e c u r s o r w i l l
0011540 b e i n t h e l o w e r
0011560 r i g h t c o r n e r o f
0011600 t h e r e g i o n , i f t
0011620 h e r e i s o n e . \r \r I
0011640 f { a r g I N I T R E G I O
0011660 N } i s a { l i s p R E
0011700 G I O N } a n d t h e u s
0011720 e r p r e s s e s t h e \r m
0011740 i d d l e b u t t o n , t h
0011760 e c o r n e r o f { a r g
0012000 I N I T R E G I O N } f a r
0012020 t h e s t f r o m t h e \r c
0012040 u r s o r p o s i t i o n i
0012060 s f i x e d a n d t h e
0012100 c o r n e r n e a r e s t t
0012120 h e c u r s o r i s l o c
0012140 k e d \r t o t h e c u r s o
0012160 r . \r \r { a r g M I N W I D T
0012200 H } a n d { a r g M I N H
0012220 E I G H T } , i f g i v e n
0012240 , a r e t h e s m a l l e
0012260 s t { l i s p \r W I D T H }
0012300 a n d { l i s p H E I G H T
0012320 } t h a t t h e r e t u r
0012340 n e d r e g i o n w i l l
0012360 h a v e . T h e g h o s t
0012400 i m a g e w i l l n o t
0012420 g e t a n y s m a l l e r
0012440 t h a n { a r g M I N W I D
0012460 T H } b y { a r g M I N H
0012500 E I G H T } . \r \r I f { a r g
0012520 N E W R E G I O N F N } i s
0012540 n o n - { l i s p N I L } ,
0012560 i t w i l l b e c a l l
0012600 e d t o \r d e t e r m i n e
0012620 v a l u e s f o r t h e p
0012640 o s i t i o n s o f t h e
0012660 c o r n e r s . T h i s p
0012700 r o v i d e s a \r w a y o f
0012720 " f i l t e r i n g " p r o
0012740 s p e c t i v e r e g i o n s
0012760 ; f o r i n s t a n c e ,
0013000 b y r e s t r i c t i n g \r t
0013020 h e r e g i o n t o l i e
0013040 o n a n a r b i t r a r y
0013060 g r i d . W h e n t h e
0013100 u s e r i s s p e c i f y
0013120 i n g \r a r e g i o n , t h
0013140 e r e g i o n i s d e t e
0013160 r m i n e d b y t w o o f
0013200 i t s c o r n e r s , o n
0013220 e t h a t \r i s f i x e d
0013240 a n d o n e t h a t i s
0013260 t r a c k i n g t h e c u r
0013300 s o r . E a c h t i m e
0013320 t h e c u r s o r \r m o v e s
0013340 o r a m o u s e b u t t
0013360 o n i s p r e s s e d , {
0013400 a r g N E W R E G I O N F N }
0013420 i s c a l l e d w i t h \r
0013440 t h r e e a r g u m e n t s :
0013460 { a r g F I X E D P O I N T
0013500 } , t h e p o s i t i o n
0013520 o f t h e f i x e d c o r
0013540 n e r o f t h e p r o s p
0013560 e c t i v e r e g i o n ; {
0013600 a r g M O V I N G P O I N T }
0013620 , t h e p o s i t i o n o
0013640 f t h e \r o p p o s i t e c
0013660 o r n e r o f t h e p r o
0013700 s p e c t i v e r e g i o n ;
0013720 a n d { a r g N E W R E G
0013740 I O N F N A R G } . { a r
0013760 g N E W R E G I O N F N A R G
0014000 } a l l o w s t h e c a l
0014020 l e r o f { f n G E T R E
0014040 G I O N } t o p a s s i n
0014060 f o r m a t i o n t o t h e
0014100 { a r g N E W R E G I O N F
0014120 N } . T h e f i r s t t
0014140 i m e a b u t t o n i s
0014160 p r e s s e d a n d w h e n
0014200 t h e u s e r c h a n g e
0014220 s t h e m o v i n g c o r
0014240 n e r v i a r i g h t b u
0014260 t t o n i n g , { a r g M O
0014300 V I N G P O I N T } i s { l
0014320 i s p N I L } a n d { a r
0014340 g F I X E D P O I N T } i s
0014360 t h e p o s i t i o n t h
0014400 e u s e r s e l e c t e d
0014420 f o r t h e f i x e d c o
0014440 r n e r o f t h e n e w
0014460 r e g i o n . I n t h i s
0014500 c a s e , t h e p o s i t
0014520 i o n r e t u r n e d b y
0014540 { a r g N E W R E G I O N F N
0014560 } \r w i l l b e u s e d f
0014600 o r t h e f i x e d c o r
0014620 n e r i n s t e a d o f t
0014640 h e o n e p r o p o s e d
0014660 b y t h e \r u s e r . F o
0014700 r a l l o t h e r c a l l
0014720 s , { a r g F I X E D P O I
0014740 N T } i s t h e p o s i t
0014760 i o n o f t h e \r f i x e d
0015000 c o r n e r ( a s r e t u
0015020 r n e d b y t h e p r e v
0015040 i o u s c a l l ) a n d {
0015060 a r g \r M O V I N G P O I N T }
0015100 i s t h e n e w p o s i
0015120 t i o n t h e u s e r s e
0015140 l e c t e d f o r t h e o
0015160 p p o s i t e \r c o r n e r .
0015200 I n t h e s e c a s e s ,
0015220 t h e v a l u e o f { a
0015240 r g N E W R E G I O N F N }
0015260 i s u s e d f o r \r t h e
0015300 o p p o s i t e c o r n e r
0015320 i n s t e a d o f t h e o
0015340 n e p r o p o s e d b y t
0015360 h e u s e r . I n a l l
0015400 \r c a s e s , t h e g h o s
0015420 t r e g i o n i s d r a w
0015440 n w i t h t h e v a l u e
0015460 s r e t u r n e d b y { a
0015500 r g \r N E W R E G I O N F N } .
0015520 { a r g N E W R E G I O N
0015540 F N } c a n b e a l i s
0015560 t o f f u n c t i o n s i
0015600 n w h i c h c a s e t h e
0015620 y a r e c a l l e d i n
0015640 o r d e r w i t h e a c h
0015660 b e i n g p a s s e d t h e
0015700 r e s u l t o f c a l l i
0015720 n g t h e p r e v i o u s
0015740 a n d t h e v a l u e o f
0015760 t h e l a s t o n e u s
0016000 e d a s t h e p o i n t .
0016020 \r } } \r \r \r { F n D e f { N a
0016040 m e G E T B O X R E G I O N }
0016060 { A r g s W I D T H H E I
0016100 G H T O R G X O R G Y W I
0016120 N D O W P R O M P T M S G } \r
0016140 { T e x t \r P e r f o r m s t
0016160 h e s a m e p r o m p t i n
0016200 g a s { f n G E T B O X P
0016220 O S I T I O N } a n d r e t
0016240 u r n s t h e { l i s p R
0016260 E G I O N } s p e c i f i e d
0016300 b y t h e u s e r i n s
0016320 t e a d o f t h e { l i s
0016340 p P O S I T I O N } o f i
0016360 t s l o w e r l e f t c o
0016400 r n e r . \r } } \r \r \r \r } { E n
0016420 d S u b S e c I n t e r a c
0016440 t i v e D i s p l a y F u n
0016460 c t i o n s } \r \r \r { B e g i n
0016500 S u b S e c M e n u s } \r {
0016520 T i t l e M e n u s } \r { T e
0016540 x t \r \r A m e n u i s b a
0016560 s i c a l l y a m e a n s
0016600 o f s e l e c t i n g f r o
0016620 m a l i s t o f i t e m
0016640 s . T h e \r s y s t e m p
0016660 r o v i d e s c o m m o n l
0016700 a y o u t a n d i n t e r a
0016720 c t i v e u s e r s e l e c
0016740 t i o n m e c h a n i s m s ,
0016760 t h e n c a l l s a u s
0017000 e r - s u p p l i e d f u n c
0017020 t i o n w h e n a s e l e
0017040 c t i o n h a s \r b e e n c
0017060 o n f i r m e d . T h e t
0017100 w o m a j o r c o n s t i t
0017120 u e n t s o f a m e n u
0017140 a r e a l i s t o f \r i t
0017160 e m s a n d a " w h e n
0017200 s e l e c t e d f u n c t i o
0017220 n . " T h e l a b e l t
0017240 h a t a p p e a r s f o r \r
0017260 e a c h i t e m i s t h e
0017300 i t e m i t s e l f f o r
0017320 n o n - l i s t s , o r i
0017340 t s { l i s p C A R } i f
0017360 t h e \r i t e m i s a l
0017400 i s t . I n a d d i t i o
0017420 n , t h e r e a r e a m
0017440 u l t i t u d e o f d i f f
0017460 e r e n t f o r m a t t i n g
0017500 p a r a m e t e r s f o r
0017520 s p e c i f y i n g f o n t ,
0017540 s i z e , a n d l a y o u
0017560 t . W h e n a m e n u
0017600 i s c r e a t e d , i t s
0017620 u n s p e c i f i e d f i e l
0017640 d s a r e f i l l e d w i
0017660 t h d e f a u l t s a n d
0017700 i t s s c r e e n i m a g e
0017720 i s c o m p u t e d a n d
0017740 s a v e d . \r \r M e n u s c
0017760 a n b e e i t h e r p o p
0020000 u p o r f i x e d . I
0020020 f f i x e d m e n u s a r
0020040 e u s e d , t h e \r m e n u
0020060 m u s t b e i n c l u d e
0020100 d i n a w i n d o w . \r \r
0020120 \r { F n D e f { N a m e M E
0020140 N U } { A r g s M E N U P
0020160 O S I T I O N R E L E A S E C
0020200 O N T R O L F L G } \r { T e x t
0020220 \r T h i s f u n c t i o n p
0020240 r o v i d e s m e n u s t h
0020260 a t p o p u p w h e n t
0020300 h e y a r e u s e d . I
0020320 t d i s p l a y s { a r g
0020340 M E N U } a t { a r g P O
0020360 S I T I O N } ( i n s c r e
0020400 e n c o o r d i n a t e s )
0020420 a n d w a i t s f o r t h
0020440 e u s e r t o s e l e c t
0020460 a n i t e m w i t h a
0020500 m o u s e k e y . B e f o
0020520 r e a n y m o u s e k e y
0020540 i s p r e s s e d , t h e
0020560 i t e m t h e m o u s e
0020600 i s o v e r i s b o x e d
0020620 . A f t e r a n y k e y
0020640 i s d o w n , t h e s e
0020660 l e c t e d m e n u i t e m
0020700 i s v i d e o r e v e r s
0020720 e d . W h e n a l l k e
0020740 y s a r e r e l e a s e d ,
0020760 { a r g M E N U } ' s { l
0021000 i s p W H E N S E L E C T E D
0021020 F N } f i e l d i s c a l
0021040 l e d w i t h f o u r a r
0021060 g u m e n t s : ( 1 ) t h e
0021100 i t e m s e l e c t e d ,
0021120 ( 2 ) t h e m e n u , ( 3
0021140 ) t h e l a s t m o u s e
0021160 k e y r e l e a s e d ( {
0021200 l i s p L E F T } , { l i s
0021220 p M I D D L E } , o r { l
0021240 i s p R I G H T } ) , a n d
0021260 ( 4 ) t h e r e v e r s e
0021300 l i s t o f s u p e r i t
0021320 e m s r o l l e d t h r o u
0021340 g h w h e n s e l e c t i n
0021360 g t h e i t e m a n d {
0021400 f n M E N U } r e t u r n s
0021420 i t s v a l u e . I f
0021440 n o i t e m i s s e l e c
0021460 t e d , { f n M E N U } r
0021500 e t u r n s { l i s p N I L
0021520 } . I f { a r g P O S I
0021540 T I O N } i s { l i s p N
0021560 I L } , t h e m e n u i s
0021600 b r o u g h t u p a t t
0021620 h e v a l u e f r o m { a
0021640 r g M E N U } ' s { l i s p
0021660 M E N U P O S I T I O N } f
0021700 i e l d , i f i t i s a
0021720 { l i s p P O S I T I O N }
0021740 , o r a t t h e c u r r
0021760 e n t c u r s o r p o s i t
0022000 i o n . T h e o r i e n t
0022020 a t i o n o f { a r g M E
0022040 N U } w i t h r e s p e c t
0022060 t o t h e s p e c i f i e
0022100 d p o s i t i o n i s d e
0022120 t e r m i n e d b y i t s
0022140 { l i s p M E N U O F F S E T
0022160 } f i e l d . \r \r I f { a r
0022200 g R E L E A S E C O N T R O L
0022220 F L G } i s { l i s p N I
0022240 L } , t h i s p r o c e s s
0022260 w i l l r e t a i n c o n
0022300 t r o l o f t h e m o u s
0022320 e . I n t h i s c a s e
0022340 , i f t h e u s e r l e
0022360 t s t h e m o u s e k e y
0022400 u p o u t s i d e o f t
0022420 h e m e n u , { l i s p M
0022440 E N U } r e t u r n { l i s
0022460 p N I L } . ( N o t e :
0022500 t h i s i s t h e s t a n
0022520 d a r d w a y o f a l l o
0022540 w i n g t h e u s e r t o
0022560 i n d i c a t e t h a t t
0022600 h e y d o n o t w a n t
0022620 t o m a k e t h e o f f e
0022640 r e d c h o i c e . ) I f
0022660 { a r g R E L E A S E C O N
0022700 T R O L F L G } i s n o n -
0022720 { l i s p N I L } , t h i s
0022740 p r o c e s s w i l l g i
0022760 v e u p c o n t r o l o f
0023000 t h e m o u s e w h e n
0023020 i t i s o u t s i d e o f
0023040 t h e m e n u s o t h a
0023060 t o t h e r p r o c e s s e
0023100 s c a n b e r u n . I
0023120 n t h i s c a s e , c l i
0023140 c k i n g o u t s i d e t h
0023160 e m e n u h a s n o e f
0023200 f e c t o n t h e c a l l
0023220 t o { l i s p M E N U } .
0023240 I f t h e m e n u i s
0023260 c l o s e d ( f o r e x a
0023300 m p l e , b y r i g h t b
0023320 u t t o n i n g i n i t a
0023340 n d s e l e c t i n g " { l
0023360 i s p C l o s e } " f r o m
0023400 t h e w i n d o w m e n u
0023420 ) , { l i s p M E N U } r
0023440 e t u r n s { l i s p N I L
0023460 } . P r o g r a m m e r s
0023500 a r e e n c o u r a g e d t
0023520 o p r o v i d e a m e n u
0023540 i t e m s u c h a s " c
0023560 a n c e l " o r " a b o r t
0023600 " w h i c h g i v e s u s
0023620 e r s a p o s i t i v e w
0023640 a y o f i n d i c a t i n g
0023660 " n o c h o i c e " . \r
0023700 } } \r \r \r { F n D e f { N a m
0023720 e A D D M E N U } { A r g s
0023740 M E N U W I N D O W P O S
0023760 I T I O N D O N T O P E N F L
0024000 G } \r { T e x t \r T h i s f u
0024020 n c t i o n p r o v i d e s
0024040 m e n u s t h a t r e m a i
0024060 n a c t i v e i n w i n d
0024100 o w s . { f n A D D M E N
0024120 U } d i s p l a y s { a r g
0024140 M E N U } a t { a r g P
0024160 O S I T I O N } i n { a r g
0024200 W I N D O W } ( { a r g P
0024220 O S I T I O N } i s d e f a
0024240 u l t e d a s i n { f n
0024260 M E N U } e x c e p t t h a
0024300 t i t i s i n w i n d o
0024320 w c o o r d i n a t e s ) .
0024340 { a r g M E N U } i s a
0024360 d d e d t o t h e { l i s
0024400 p M E N U } p r o p e r t y
0024420 o f { a r g W I N D O W }
0024440 . T h e { l i s p C U R
0024460 S O R I N F N } a n d { l i
0024500 s p B U T T O N E V E N T F N
0024520 } o f { a r g W I N D O W
0024540 } a r e r e p l a c e d w
0024560 i t h { f n M E N U B U T T
0024600 O N F N } , { i n d e x M E N
0024620 U B U T T O N F N F n } s o
0024640 t h a t { a r g M E N U }
0024660 w i l l b e a c t i v e .
0024700 { l i s p R E S H A P E F
0024720 N } o f { a r g W I N D O
0024740 W } i s s e t t o r e s
0024760 t o r e { a r g M E N U } '
0025000 s i m a g e w h e n t h e
0025020 w i n d o w i s r e s h a
0025040 p e d . { f n M E N U R E
0025060 P A I N T F N } i s a d d e
0025100 d a s a { l i s p R E P
0025120 A I N T F N } o n { a r g
0025140 W I N D O W } t o u p d a t
0025160 e t h e m e n u i m a g e
0025200 i f t h e w i n d o w i
0025220 s r e d i s p l a y e d .
0025240 W h e n a n i t e m i s
0025260 s e l e c t e d , t h e v a
0025300 l u e o f t h e { l i s p
0025320 W H E N S E L E C T E D F N }
0025340 f i e l d o f { a r g M
0025360 E N U } i s c a l l e d w
0025400 i t h t h r e e a r g u m e
0025420 n t s : ( 1 ) t h e i t e
0025440 m s e l e c t e d , ( 2 )
0025460 t h e m e n u , a n d ( 3
0025500 ) t h e m o u s e k e y
0025520 t h a t t h e i t e m w a
0025540 s s e l e c t e d w i t h
0025560 ( { l i s p L E F T } , { l
0025600 i s p M I D D L E } , o r
0025620 { l i s p R I G H T } ) .
0025640 I f t h e { l i s p W H E
0025660 N S E L E C T E D F N } o f
0025700 { a r g M E N U } i s { l
0025720 i s p N I L } , i t w i l
0025740 l b e s e t t o { f n
0025760 B A C K G R O U N D W H E N S E
0026000 L E C T E D F N } w h i c h
0026020 c a l l s { f n E V A L . A
0026040 S . P R O C E S S } ( { P a g
0026060 e R e f F n E V A L . A S .
0026100 P R O C E S S } ) i n s t e a
0026120 d o f { f n E V A L } . \r
0026140 \r M o r e t h a n o n e m
0026160 e n u c a n b e p u t i
0026200 n a w i n d o w , b u t
0026220 a m e n u c a n o n l y
0026240 b e a d d e d t o o n e
0026260 w i n d o w a t a t i m e
0026300 . \r \r I f { a r g W I N D O
0026320 W } i s n o t g i v e n ,
0026340 a w i n d o w i s c r e
0026360 a t e d a t { a r g P O S
0026400 I T I O N } ( i n s c r e e
0026420 n c o o r d i n a t e s ) t
0026440 h a t i s t h e s i z e
0026460 o f { a r g M E N U } .
0026500 I f a w i n d o w i s c
0026520 r e a t e d , i t w i l l
0026540 b e o p e n e d u n l e s s
0026560 { a r g D O N T O P E N F L
0026600 G } i s n o n - { l i s p
0026620 N I L } . \r \r { f n A D D M E
0026640 N U } r e t u r n s t h e
0026660 w i n d o w i n t o w h i c
0026700 h { a r g M E N U } i s
0026720 p l a c e d . \r \r { f n A D D
0026740 M E N U } u s e s t h e f
0026760 o l l o w i n g w i n d o w
0027000 p r o p e r t i e s : { l i s
0027020 p M E N U } , { l i s p R
0027040 E P A I N T F N } , { l i s p
0027060 C U R S O R M O V E D F N } ,
0027100 { l i s p B U T T O N E V E
0027120 N T F N } a n d { l i s p
0027140 C U R S O R I N F N } . \r } } \r
0027160 \r \r \r \r { F n D e f { N a m e
0027200 D E L E T E M E N U } { A r
0027220 g s M E N U C L O S E F L G
0027240 F R O M W I N D O W } \r { T e
0027260 x t \r T h i s f u n c t i o n
0027300 r e m o v e s { a r g M E
0027320 N U } f r o m t h e w i n
0027340 d o w { a r g F R O M W I N
0027360 D O W } . I f { a r g M
0027400 E N U } i s t h e o n l y
0027420 m e n u i n t h e w i n
0027440 d o w a n d { a r g C L O
0027460 S E F L G } i s n o n - { l
0027500 i s p N I L } , i t s w i
0027520 n d o w w i l l b e c l o
0027540 s e d ( b y { f n C L O S
0027560 E W } ) . \r \r I f { a r g F
0027600 R O M W I N D O W } i s { l
0027620 i s p N I L } , t h e l i
0027640 s t o f c u r r e n t l y
0027660 o p e n w i n d o w s i s
0027700 s e a r c h e d f o r o n e
0027720 t h a t c o n t a i n s {
0027740 a r g M E N U } . I f n
0027760 o n e i s f o u n d , { f
0030000 n D E L E T E M E N U } d o
0030020 e s n o t h i n g . \r } } \r \r
0030040 { n o t e e x a m p l e s ! !
0030060 ( w i t h f i g u r e s
0030100 i f p o s s i b l e ) } \r \r
0030120 \r \r { B e g i n S u b S e c
0030140 M e n u F i e l d s } \r { T i
0030160 t l e M e n u F i e l d s }
0030200 \r { T e x t \r \r \r A m e n u
0030220 i s a d a t a t y p e w i
0030240 t h t h e f o l l o w i n g
0030260 f i e l d s : \r \r \r { D e f
0030300 { T y p e ( M e n u F i e l
0030320 d ) } { N a m e I T E M S
0030340 } \r { T e x t \r T h e l i s t
0030360 o f i t e m s t o a p p
0030400 e a r i n t h e m e n u .
0030420 I f a n i t e m i s
0030440 a l i s t , i t s { l i s
0030460 p C A R } w i l l a p p e
0030500 a r i n t h e m e n u .
0030520 I f t h e i t e m ( o r
0030540 i t s { l i s p C A R } )
0030560 i s a b i t m a p , t h
0030600 e b i t m a p w i l l b e
0030620 d i s p l a y e d i n t h
0030640 e m e n u . T h e d e f
0030660 a u l t s e l e c t i o n f
0030700 u n c t i o n s i n t e r p r
0030720 e t e a c h i t e m a s
0030740 a l i s t o f t h r e e
0030760 e l e m e n t s : a l a b e
0031000 l , a f o r m w h o s e
0031020 v a l u e i s r e t u r n e
0031040 d u p o n s e l e c t i o n
0031060 , a n d a h e l p s t r
0031100 i n g t h a t i s p r i n
0031120 t e d i n t h e p r o m p
0031140 t w i n d o w w h e n t h
0031160 e u s e r p r e s s e s a
0031200 m o u s e k e y w i t h
0031220 t h e c u r s o r p o i n t
0031240 i n g t o t h i s i t e m
0031260 . T h e d e f a u l t s
0031300 u b i t e m f u n c t i o n
0031320 i n t e r p r e t s t h e f
0031340 o u r t h e l e m e n t o f
0031360 t h e l i s t . I f i
0031400 t i s a l i s t w h o s
0031420 e { l i s p C A R } i s
0031440 t h e a t o m S U B I T E M
0031460 S { i n d e x S U B I T E M
0031500 S } , t h e { l i s p C D
0031520 R } i s t a k e n a s a
0031540 l i s t o f s u b i t e m
0031560 s . \r } } \r \r \r { D e f { T y
0031600 p e ( M e n u F i e l d ) }
0031620 { N a m e S U B I T E M F
0031640 N } \r { T e x t \r A f u n c t
0031660 i o n t o b e c a l l e d
0031700 t o d e t e r m i n e i f
0031720 a n i t e m h a s a n y
0031740 s u b i t e m s . I f a
0031760 n i t e m h a s s u b i t
0032000 e m s a n d t h e u s e r
0032020 r o l l s t h e c u r s o
0032040 r o u t t h e r i g h t
0032060 o f t h a t i t e m , a
0032100 s u b m e n u w i t h t h a
0032120 t i t e m ' s s u b i t e m
0032140 s i n i t p o p s u p .
0032160 I f t h e u s e r s e
0032200 l e c t s o n e o f t h e
0032220 i t e m s f r o m t h e
0032240 s u b m e n u , t h e s e l
0032260 e c t e d s u b i t e m i s
0032300 h a n d l e d a s i f i
0032320 t w e r e s e l e c t e d
0032340 f r o m t h e m a i n m e
0032360 n u . I f t h e u s e r
0032400 r o l l s o u t o f t h
0032420 e s u b m e n u t o t h e
0032440 l e f t , t h e s u b m e
0032460 n u i s t a k e n d o w n
0032500 a n d s e l e c t i o n r
0032520 e s u m e s f r o m t h e
0032540 m a i n m e n u . \r \r A n i
0032560 t e m w i t h s u b i t e m
0032600 s i s m a r k e d i n t
0032620 h e m e n u b y a g r e
0032640 y , r i g h t p o i n t i n
0032660 g t r i a n g l e f o l l o
0032700 w i n g t h e l a b e l . \r
0032720 \r T h e f u n c t i o n i s
0032740 c a l l e d w i t h t w o
0032760 a r g u m e n t s : ( 1 )
0033000 t h e m e n u a n d ( 2 )
0033020 t h e i t e m . I t s
0033040 h o u l d r e t u r n a l
0033060 i s t o f t h e s u b i t
0033100 e m s o f t h i s i t e m
0033120 i f a n y . ( N o t e :
0033140 i t i s c a l l e d t w
0033160 i c e t o c o m p u t e t
0033200 h e m e n u i m a g e a n
0033220 d e a c h t i m e t h e
0033240 u s e r r o l l s o u t o
0033260 f t h e i t e m b o x s
0033300 o i t s h o u l d b e m
0033320 o d e r a t e l y e f f i c i
0033340 e n t . T h e d e f a u l
0033360 t { l i s p S U B I T E M F
0033400 N } , { f n D E F A U L T S
0033420 U B I T E M F N } , { i n d e x
0033440 D E F A U L T S U B I T E M F
0033460 N F n } c h e c k s t o
0033500 s e e i f t h e i t e m
0033520 i s a l i s t w h o s e
0033540 f o u r t h e l e m e n t i
0033560 s a l i s t w h o s e {
0033600 f n C A R } i s { l i s p
0033620 S U B I T E M S } a n d i
0033640 f s o , r e t u r n s t h
0033660 e { f n C D R } o f i t
0033700 . \r \r F o r e x a m p l e :
0033720 \r \r { l i s p c o d e \r ( c r e
0033740 a t e M E N U \r I T E
0033760 M S _ ' ( A ( B ' B "
0034000 h e l p s t r i n g f o r
0034020 B " ( S U B I T E M S B 1
0034040 B 2 B 3 ) ) ) ) } \r \r w i l l
0034060 c r e a t e a m e n u w
0034100 i t h i t e m s { l i s p
0034120 A } a n d { l i s p B }
0034140 i n w h i c h { l i s p B
0034160 } w i l l h a v e s u b i
0034200 t e m s { l i s p B 1 } ,
0034220 { l i s p B 2 } a n d { l
0034240 i s p B 3 } . \r } } \r \r \r \r {
0034260 D e f { T y p e ( M e n u
0034300 F i e l d ) } { N a m e W
0034320 H E N S E L E C T E D F N } \r {
0034340 T e x t \r A f u n c t i o n
0034360 t o b e c a l l e d w h e
0034400 n a n i t e m i s s e l
0034420 e c t e d . T h e f u n c
0034440 t i o n i s c a l l e d w
0034460 i t h t h r e e a r g u m e
0034500 n t s : ( 1 ) t h e i t e
0034520 m s e l e c t e d , ( 2 )
0034540 t h e m e n u , a n d ( 3
0034560 ) t h e m o u s e k e y
0034600 t h a t t h e i t e m w a
0034620 s s e l e c t e d w i t h
0034640 ( { l i s p L E F T } , { l
0034660 i s p M I D D L E } , o r
0034700 { l i s p R I G H T } ) .
0034720 T h e d e f a u l t f u n c
0034740 t i o n { f n D E F A U L T
0034760 W H E N S E L E C T E D F N } {
0035000 i n d e x D E F A U L T W H E
0035020 N S E L E C T E D F N F n }
0035040 e v a l u a t e s a n d r e
0035060 t u r n s t h e v a l u e
0035100 o f t h e s e c o n d e l
0035120 e m e n t o f t h e i t e
0035140 m i f t h e i t e m i s
0035160 a l i s t o f a t l e
0035200 a s t l e n g t h 2 . I
0035220 f t h e i t e m i s n o
0035240 t a l i s t o f a t l
0035260 e a s t l e n g t h 2 , {
0035300 f n D E F A U L T W H E N S E
0035320 L E C T E D F N } r e t u r n
0035340 s t h e i t e m . \r } } \r \r
0035360 \r \r { D e f { T y p e ( M e
0035400 n u F i e l d ) } { N a m
0035420 e W H E N H E L D F N } \r { T
0035440 e x t \r T h e f u n c t i o n
0035460 w h i c h i s c a l l e d
0035500 w h e n t h e u s e r h
0035520 a s h e l d a m o u s e
0035540 k e y o n a n i t e m f
0035560 o r { v a r M E N U H E L D
0035600 W A I T } { i n d e x M E N U
0035620 H E L D W A I T V a r } m i
0035640 l l i s e c o n d s ( i n i t
0035660 i a l l y 1 2 0 0 ) . T h
0035700 e f u n c t i o n i s c a
0035720 l l e d w i t h t h r e e
0035740 a r g u m e n t s : ( 1 ) t
0035760 h e i t e m s e l e c t e d
0036000 , ( 2 ) t h e m e n u ,
0036020 a n d ( 3 ) t h e m o u s
0036040 e k e y t h a t t h e i
0036060 t e m w a s s e l e c t e d
0036100 w i t h ( { l i s p L E F
0036120 T } , { l i s p M I D D L E
0036140 } , o r { l i s p R I G H
0036160 T } ) . { l i s p W H E N
0036200 H E L D F N } i s i n t e n
0036220 d e d f o r p r o m p t i n
0036240 g u s e r s . T h e d e
0036260 f a u l t i s { f n D E F
0036300 A U L T M E N U H E L D F N } {
0036320 i n d e x D E F A U L T M E N
0036340 U H E L D F N F n } w h i c
0036360 h p r i n t s ( i n t h e
0036400 p r o m p t w i n d o w )
0036420 t h e t h i r d e l e m e n
0036440 t o f t h e i t e m o r
0036460 , i f t h e r e i s n o
0036500 t a t h i r d e l e m e n
0036520 t , t h e s t r i n g " T
0036540 h i s i t e m w i l l b e
0036560 s e l e c t e d w h e n t
0036600 h e b u t t o n i s r e l
0036620 e a s e d . " \r } } \r \r \r \r { D
0036640 e f { T y p e ( M e n u F
0036660 i e l d ) } { N a m e W H
0036700 E N U N H E L D F N } \r { T e x
0036720 t \r I f { l i s p W H E N H
0036740 E L D F N } w a s c a l l e
0036760 d , { l i s p W H E N U N H
0037000 E L D F N } w i l l b e c
0037020 a l l e d : ( 1 ) w h e n
0037040 t h e c u r s o r l e a v e
0037060 s t h e i t e m , ( 2 )
0037100 w h e n a m o u s e k e y
0037120 i s r e l e a s e d , o r
0037140 ( 3 ) w h e n a n o t h e
0037160 r k e y i s p r e s s e d
0037200 . T h e f u n c t i o n
0037220 i s c a l l e d w i t h t
0037240 h e s a m e t h r e e a r
0037260 g u m e n t v a l u e s u s
0037300 e d t o c a l l { l i s p
0037320 W H E N H E L D F N } . T
0037340 h e d e f a u l t { l i s p
0037360 W H E N U N H E L D F N } i
0037400 s t h e f u n c t i o n {
0037420 f n C L R P R O M P T } ( {
0037440 P a g e R e f F n C L R P R
0037460 O M P T } ) , w h i c h j u
0037500 s t c l e a r s t h e p r
0037520 o m p t w i n d o w . \r } } \r
0037540 \r \r \r { D e f { T y p e ( M
0037560 e n u F i e l d ) } { N a
0037600 m e M E N U P O S I T I O N }
0037620 \r { T e x t \r T h e p o s i t
0037640 i o n o f t h e m e n u
0037660 t o b e u s e d i f t h
0037700 e c a l l t o { f n M E
0037720 N U } o r { f n A D D M E
0037740 N U } d o e s n o t s p e
0037760 c i f y a p o s i t i o n .
0040000 F o r p o p u p m e n u
0040020 s , t h i s i s i n s c
0040040 r e e n c o o r d i n a t e s
0040060 . F o r f i x e d m e n
0040100 u s , i t i s i n t h e
0040120 c o o r d i n a t e s o f
0040140 t h e w i n d o w t h e m
0040160 e n u i s i n . T h e
0040200 p o i n t w i t h i n t h e
0040220 m e n u i m a g e t h a t
0040240 i s p l a c e d a t t h
0040260 i s p o s i t i o n i s d
0040300 e t e r m i n e d b y { l i
0040320 s p M E N U O F F S E T } .
0040340 I f { l i s p M E N U P O
0040360 S I T I O N } i s { l i s p
0040400 N I L } , t h e m e n u
0040420 w i l l b e b r o u g h t
0040440 u p a t t h e c u r s o r
0040460 p o s i t i o n . { n o t e
0040500 a w k . } \r } } \r \r \r \r { D e f
0040520 { T y p e ( M e n u F i e
0040540 l d ) } { N a m e M E N U
0040560 O F F S E T } \r { T e x t \r T h
0040600 e p o s i t i o n i n t h
0040620 e m e n u i m a g e t h a
0040640 t i s t o b e l o c a t
0040660 e d a t { l i s p M E N U
0040700 P O S I T I O N } . T h e
0040720 d e f a u l t o f f s e t i
0040740 s ( 0 , 0 ) . F o r e x
0040760 a m p l e , t o b r i n g
0041000 u p a m e n u w i t h t
0041020 h e c u r s o r o v e r a
0041040 p a r t i c u l a r m e n u
0041060 i t e m , s e t i t s {
0041100 l i s p M E N U O F F S E T }
0041120 t o a p o s i t i o n w
0041140 i t h i n t h a t i t e m
0041160 a n d s e t i t s { l i s
0041200 p M E N U P O S I T I O N }
0041220 t o { l i s p N I L } . { n
0041240 o t e a w k . } \r } } \r \r \r \r
0041260 { D e f { T y p e ( M e n u
0041300 F i e l d ) } { N a m e
0041320 M E N U F O N T } \r { T e x t \r
0041340 T h e f o n t i n w h i c
0041360 h t h e i t e m s w i l l
0041400 b e a p p e a r i n t h
0041420 e m e n u . \r D e f a u l t
0041440 i s t h e v a l u e o f
0041460 { v a r M E N U F O N T } { i
0041500 n d e x M E N U F O N T V a
0041520 r } , i n i t i a l l y H e
0041540 l v e t i c a 1 0 . \r } } \r \r
0041560 \r \r { D e f { T y p e ( M e
0041600 n u F i e l d ) } { N a m
0041620 e T I T L E } \r { T e x t \r I
0041640 f n o n - { l i s p N I L }
0041660 , t h e v a l u e o f t
0041700 h i s f i e l d w i l l a
0041720 p p e a r a s a t i t l e
0041740 i n a l i n e a b o v e
0041760 t h e m e n u . \r } } \r \r \r
0042000 \r { D e f { T y p e ( M e n
0042020 u F i e l d ) } { N a m e
0042040 M E N U T I T L E F O N T } \r
0042060 { T e x t \r T h e f o n t i
0042100 n w h i c h t h e t i t l
0042120 e o f t h e m e n u w i
0042140 l l b e a p p e a r . I
0042160 f t h i s i s { l i s p
0042200 N I L } , t h e t i t l e
0042220 w i l l b e i n t h e s
0042240 a m e f o n t a s w i n d
0042260 o w t i t l e s . I f i
0042300 t i s { l i s p T } , i
0042320 t w i l l b e i n t h e
0042340 s a m e f o n t a s t h
0042360 e m e n u i t e m s . \r }
0042400 } \r \r \r \r { D e f { T y p e
0042420 ( M e n u F i e l d ) } {
0042440 N a m e C E N T E R F L G } \r
0042460 { T e x t \r I f n o n - { l i
0042500 s p N I L } , t h e m e n
0042520 u i t e m s a r e c e n t
0042540 e r e d ; o t h e r w i s e
0042560 t h e y a r e l e f t - j u
0042600 s t i f i e d . \r } } \r \r \r \r {
0042620 D e f { T y p e ( M e n u
0042640 F i e l d ) } { N a m e M
0042660 E N U R O W S } } \r { D e f {
0042700 T y p e ( M e n u F i e l d
0042720 ) } { N a m e M E N U C O
0042740 L U M N S } \r { T e x t \r T h e
0042760 s e f i e l d s c o n t r o
0043000 l t h e s h a p e o f t
0043020 h e m e n u i n t e r m s
0043040 o f r o w s \r a n d c o l
0043060 u m n s . I f { l i s p
0043100 M E N U R O W S } i s g i v
0043120 e n , t h e m e n u w i l
0043140 l h a v e t h a t \r n u m b
0043160 e r o f r o w s . I f
0043200 { l i s p M E N U C O L U M N
0043220 S } i s g i v e n , t h e
0043240 m e n u w i l l h a v e \r
0043260 t h a t n u m b e r o f c
0043300 o l u m n s . I f o n l y
0043320 o n e i s g i v e n , t
0043340 h e o t h e r o n e w i l
0043360 l b e \r c a l c u l a t e d
0043400 t o g e n e r a t e t h e
0043420 m i n i m a l r e c t a n g u
0043440 l a r m e n u . ( N o r m a
0043460 l l y o n l y \r o n e o f
0043500 { l i s p M E N U R O W S }
0043520 o r { l i s p M E N U C O L
0043540 U M N S } i s g i v e n . )
0043560 I f n e i t h e r \r i s
0043600 g i v e n , t h e i t e m s
0043620 w i l l b e i n o n e
0043640 c o l u m n . \r } } \r \r \r \r { D
0043660 e f { T y p e ( M e n u F
0043700 i e l d ) } { N a m e I T
0043720 E M H E I G H T } \r { T e x t \r
0043740 T h e h e i g h t o f e a
0043760 c h i t e m b o x i n t
0044000 h e m e n u . I f n o t
0044020 s p e c i f i e d , i t w
0044040 i l l b e t h e m a x i m
0044060 u m o f t h e h e i g h t
0044100 o f t h e { l i s p M E
0044120 N U F O N T } a n d t h e
0044140 h e i g h t s o f a n y b
0044160 i t m a p s a p p e a r i n g
0044200 a s l a b e l s . \r } } \r \r
0044220 \r \r { D e f { T y p e ( M e
0044240 n u F i e l d ) } { N a m
0044260 e I T E M W I D T H } \r { T e
0044300 x t \r T h e w i d t h o f
0044320 e a c h i t e m b o x i n
0044340 t h e m e n u . I f n
0044360 o t s p e c i f i e d , i t
0044400 w i l l b e t h e w i d
0044420 t h o f t h e l a r g e s
0044440 t i t e m i n t h e m e
0044460 n u . \r } } \r \r \r \r { D e f {
0044500 T y p e ( M e n u F i e l d
0044520 ) } { N a m e M E N U B O
0044540 R D E R S I Z E } \r { T e x t \r
0044560 T h e s i z e o f t h e
0044600 b o r d e r a r o u n d e a
0044620 c h i t e m b o x . I f
0044640 n o t s p e c i f i e d ,
0044660 0 ( n o b o r d e r ) i s
0044700 u s e d . \r } } \r \r \r \r { D e
0044720 f { T y p e ( M e n u F i
0044740 e l d ) } { N a m e M E N
0044760 U O U T L I N E S I Z E } \r { T
0045000 e x t \r T h e s i z e o f
0045020 t h e o u t l i n e a r o u
0045040 n d t h e e n t i r e m e
0045060 n u . I f n o t \r s p e c
0045100 i f i e d , a m a x i m u m
0045120 o f 1 a n d t h e { l
0045140 i s p M E N U B O R D E R S I
0045160 Z E } i s u s e d . \r } } \r
0045200 \r \r \r { D e f { T y p e ( M
0045220 e n u F i e l d ) } { N a
0045240 m e C H A N G E O F F S E T F
0045260 L G } \r { T e x t \r ( p o p u p
0045300 m e n u s o n l y ) I f
0045320 { l i s p C H A N G E O F F
0045340 S E T F L G } i s n o n - {
0045360 l i s p N I L } , t h e p
0045400 o s i t i o n o f t h e m
0045420 e n u o f f s e t i s s e
0045440 t e a c h t i m e a s e
0045460 l e c t i o n i s c o n f i
0045500 r m e d s o t h a t t h e
0045520 m e n u w i l l c o m e
0045540 u p n e x t t i m e i n
0045560 t h e s a m e p o s i t i o
0045600 n r e l a t i v e t o t h
0045620 e c u r s o r . T h i s
0045640 w i l l c a u s e t h e m
0045660 e n u t o r e a p p e a r
0045700 i n t h e s a m e p l a c
0045720 e o n t h e s c r e e n
0045740 i f t h e c u r s o r h a
0045760 s n o t m o v e d s i n c
0046000 e t h e l a s t s e l e c
0046020 t i o n . T h i s i s i
0046040 m p l e m e n t e d b y c h
0046060 a n g i n g t h e { l i s p
0046100 M E N U O F F S E T } f i e
0046120 l d o n e a c h u s e .
0046140 I f { l i s p C H A N G E
0046160 O F F S E T F L G } i s t h
0046200 e a t o m { l i s p X }
0046220 o r t h e a t o m { l i s
0046240 p Y } , o n l y t h e X
0046260 o r t h e Y c o o r d i
0046300 n a t e o f t h e { l i s
0046320 p M E N U O F F S E T } f i
0046340 e l d w i l l b e c h a n
0046360 g e d . F o r e x a m p l
0046400 e , b y s e t t i n g t h
0046420 e { l i s p M E N U O F F S
0046440 E T } p o s i t i o n t o
0046460 ( - 1 , 0 ) a n d s e t t i
0046500 n g { l i s p C H A N G E O
0046520 F F S E T F L G } t o { l i
0046540 s p Y } , t h e m e n u
0046560 w i l l p o p u p s o t
0046600 h a t t h e c u r s o r i
0046620 s j u s t t o t h e l e
0046640 f t o f t h e l a s t i
0046660 t e m s e l e c t e d . T
0046700 h i s i s t h e s e t t i
0046720 n g o f t h e w i n d o w
0046740 c o m m a n d m e n u s . \r
0046760 } } \r \r \r \r T h e f o l l o w
0047000 i n g f i e l d s a r e r
0047020 e a d o n l y . \r \r \r { D e f
0047040 { T y p e ( M e n u F i e
0047060 l d ) } { N a m e I M A G
0047100 E H E I G H T } \r { T e x t \r R
0047120 e t u r n s t h e h e i g h
0047140 t o f t h e e n t i r e
0047160 m e n u . \r } } \r \r \r \r { D e f
0047200 { T y p e ( M e n u F i e
0047220 l d ) } { N a m e I M A G
0047240 E W I D T H } \r { T e x t \r R e
0047260 t u r n s t h e w i d t h
0047300 o f t h e e n t i r e m e
0047320 n u . \r } } \r \r \r \r } { E n d
0047340 S u b S e c M e n u F i e l
0047360 d s } \r \r \r \r { B e g i n S u
0047400 b S e c M i s c e l l a n e o
0047420 u s M e n u F u n c t i o n
0047440 s } \r { T i t l e M i s c e l
0047460 l a n e o u s M e n u F u n
0047500 c t i o n s } \r { T e x t \r \r {
0047520 F n D e f { N a m e M A X M
0047540 E N U I T E M W I D T H } { A
0047560 r g s M E N U } \r { T e x t
0047600 \r R e t u r n s t h e w i d
0047620 t h o f t h e l a r g e s
0047640 t m e n u i t e m l a b e
0047660 l i n t h e m e n u { a
0047700 r g M E N U } . \r } } \r \r \r {
0047720 F n D e f { N a m e M A X M
0047740 E N U I T E M H E I G H T } {
0047760 A r g s M E N U } \r { T e x
0050000 t \r R e t u r n s t h e h e
0050020 i g h t o f t h e l a r g
0050040 e s t m e n u i t e m l a
0050060 b e l i n t h e m e n u
0050100 { a r g M E N U } . \r } } \r \r
0050120 \r { F n D e f { N a m e M E
0050140 N U R E G I O N } { A r g s
0050160 M E N U } \r { T e x t \r R e t
0050200 u r n s t h e r e g i o n
0050220 c o v e r e d b y t h e i
0050240 m a g e o f { a r g M E N
0050260 U } i n i t s w i n d o w
0050300 . \r } } \r \r \r \r { F n D e f {
0050320 N a m e W F R O M M E N U }
0050340 { A r g s M E N U } \r { T e
0050360 x t \r R e t u r n s t h e w
0050400 i n d o w { a r g M E N U }
0050420 i s l o c a t e d i n ,
0050440 i f i t i s i n o n e ;
0050460 { l i s p N I L } o t h e
0050500 r w i s e . \r } } \r \r \r { F n D
0050520 e f { N a m e D O S E L E C
0050540 T E D I T E M } { A r g s M
0050560 E N U I T E M B U T T O N }
0050600 \r { T e x t \r C a l l s { a r
0050620 g M E N U } ' s { l i s p
0050640 W H E N S E L E C T E D F N }
0050660 o n { a r g I T E M } a n
0050700 d { a r g B U T T O N } .
0050720 I t p r o v i d e s a p
0050740 r o g r a m m a t i c w a y
0050760 o f m a k i n g a s e l e
0051000 c t i o n . I t d o e s
0051020 n o t c h a n g e t h e d
0051040 i s p l a y . \r } } \r \r \r { F n
0051060 D e f { N a m e M E N U I T
0051100 E M R E G I O N } { A r g s
0051120 I T E M M E N U } \r { T e x t
0051140 \r R e t u r n s t h e r e g
0051160 i o n o c c u p i e d b y
0051200 { a r g I T E M } i n { a
0051220 r g M E N U } . \r } } \r \r \r {
0051240 F n D e f { N a m e S H A D
0051260 E I T E M } { A r g s I T E
0051300 M M E N U S H A D E D S /
0051320 W } \r { T e x t \r S h a d e s
0051340 t h e r e g i o n o c c u p
0051360 i e d b y { a r g I T E M
0051400 } i n { a r g M E N U } .
0051420 I f { a r g D S / W }
0051440 i s a d i s p l a y s t r
0051460 e a m o r a w i n d o w ,
0051500 i t i s a s s u m e d t
0051520 o b e w h e r e { a r g
0051540 M E N U } i s d i s p l a y
0051560 e d . O t h e r w i s e ,
0051600 { f n W F R O M M E N U } i
0051620 s c a l l e d t o l o c a
0051640 t e t h e w i n d o w { a
0051660 r g M E N U } i s i n .
0051700 S h a d i n g i s p e r s i
0051720 s t e n t , a n d i s r e
0051740 a p p l i e d w h e n t h e
0051760 w i n d o w t h e m e n u
0052000 i s i n g e t s r e d i
0052020 s p l a y e d . T o u n s
0052040 h a d e a n i t e m , c a
0052060 l l w i t h a { a r g S
0052100 H A D E } o f 0 . \r } } \r \r
0052120 } { E n d S u b S e c M i s
0052140 c e l l a n e o u s M e n u
0052160 F u n c t i o n s } \r \r \r { B e
0052200 g i n S u b S e c E x a m p
0052220 l e s o f M e n u U s e }
0052240 \r { T i t l e E x a m p l e s
0052260 o f M e n u U s e } \r { T
0052300 e x t \r \r { l i s p c o d e (
0052320 M E N U ( c r e a t e M E N
0052340 U I T E M S _ ' ( ( Y E S
0052360 T ) ( N O ( Q U O T E N
0052400 I L ) ) ) ) ) } \r \r C r e a t
0052420 e s a m e n u w i t h i
0052440 t e m s { l i s p Y E S }
0052460 a n d { l i s p N O } i n
0052500 a s i n g l e \r v e r t i c
0052520 a l c o l u m n . I f {
0052540 l i s p Y E S } i s s e l
0052560 e c t e d , { l i s p T }
0052600 w i l l b e r e t u r n e d
0052620 . O t h e r w i s e , { l
0052640 i s p N I L } w i l l b e
0052660 r e t u r n e d . \r \r { l i s
0052700 p c o d e \r ( M E N U ( c r e
0052720 a t e M E N U T I T L E _
0052740 " F o o ? " \r
0052760 I T E M S _ ' ( ( Y E
0053000 S T " A d d s t h e F o
0053020 o f e a t u r e . " ) \r
0053040
0053060 ( N O ' N O " R e m o v
0053100 e s t h e F o o f e a t u
0053120 r e . " ) ) \r
0053140 C E N T E R F L G _ T )
0053160 ) } \r \r C r e a t e s a m e
0053200 n u w i t h a t i t l e
0053220 { l i s p F o o ? } a n d
0053240 i t e m s { l i s p Y E S }
0053260 a n d { l i s p N O } c
0053300 e n t e r e d i n a s i n
0053320 g l e v e r t i c a l c o l
0053340 u m n . T h e s t r i n g
0053360 s f o l l o w i n g t h e
0053400 { l i s p Y E S } a n d {
0053420 l i s p N O } a r e h e l
0053440 p s t r i n g s a n d w i
0053460 l l b e p r i n t e d i f
0053500 t h e c u r s o r r e m a
0053520 i n s o v e r o n e o f
0053540 t h e i t e m s f o r a
0053560 p e r i o d o f t i m e .
0053600 T h i s m e n u d i f f e
0053620 r s f r o m t h e o n e
0053640 a b o v e i n t h a t i t
0053660 d i s t i n q u i s h e s t
0053700 h e { l i s p N O } c a s
0053720 e f r o m t h e c a s e
0053740 w h e r e t h e u s e r c
0053760 l i c k e d o u t s i d e o
0054000 f t h e m e n u . I f
0054020 t h e u s e r c l i c k s
0054040 o u t s i d e o f t h e m
0054060 e n u , { l i s p N I L }
0054100 i s r e t u r n e d . \r \r { L
0054120 i s p C o d e \r ( c r e a t e
0054140 M E N U I T E M S _ ' ( 1
0054160 2 3 4 5 6 7 8 9
0054200 * 0 # ) \r
0054220 C E N T E R F L G _
0054240 T \r
0054260 M E N U C O L U M N S _ 3 \r
0054300 M E N
0054320 U F O N T _ ( F O N T C R E
0054340 A T E ' H E L V E T I C A 1
0054360 0 ' B O L D ) \r
0054400 I T E M H E I G H T
0054420 _ 1 5 \r
0054440 I T E M W I D T H _ 1
0054460 5 \r C
0054500 H A N G E O F F S E T F L G _
0054520 T ) } \r \r C r e a t e s a
0054540 t o u c h - t o n e - p h o n e
0054560 n u m b e r p a d w i t h
0054600 t h e i t e m s i n 1 5
0054620 b y 1 5 \r b o x e s p r i
0054640 n t e d i n H e l v e t i c
0054660 a 1 0 b o l d f o n t .
0054700 I f u s e d i n p o p
0054720 u p m o d e , \r i t s f i r
0054740 s t u s e w i l l h a v e
0054760 t h e c u r s o r i n t
0055000 h e m i d d l e . S u b s
0055020 e q u e n t u s e \r w i l l
0055040 h a v e t h e c u r s o r
0055060 i n t h e s a m e r e l a
0055100 t i v e l o c a t i o n a s
0055120 t h e p r e v i o u s \r s e
0055140 l e c t i o n . \r \r { L i s p C
0055160 o d e \r ( S E L E C T Q [ M E
0055200 N U \r ( C O
0055220 N D ( ( t y p e ? M E N U
0055240 F O O M E N U ) \r
0055260 { i t
0055300 ( * u s e p r e v i o u s l
0055320 y c o m p u t e d m e n u .
0055340 ) } \r
0055360 F O O M E N U ) \r
0055400 (
0055420 T { i t ( * c r e a t e
0055440 a n d s a v e t h e m e n
0055460 u ) } \r
0055500 ( S E T Q F O O
0055520 M E N U \r
0055540 ( c r e a
0055560 t e M E N U \r
0055600
0055620 I T E M S _ ' ( ( A ' A
0055640 - S E L E C T E D " p r o m p
0055660 t s t r i n g f o r A " )
0055700 \r
0055720
0055740 ( B ' B - S E L E C T
0055760 E D " p r o m p t s t r i n
0056000 g f o r B " ] \r
0056020 ( A - S E L E C T E D
0056040 { i t ( * i f A i s s
0056060 e l e c t e d ) } ( D O A T H
0056100 I N G ) ) \r (
0056120 B - S E L E C T E D { i t
0056140 ( * i f B i s s e l e c
0056160 t e d ) } ( D O B T H I N G )
0056200 ) \r ( P R O G
0056220 N { i t ( * u s e r s e
0056240 l e c t e d o u t s i d e t
0056260 h e m e n u ) } N I L ) ) )
0056300 } \r \r T h i s e x p r e s s i
0056320 o n d i s p l a y s a p o
0056340 p u p m e n u w i t h t
0056360 w o i t e m s , { l i s p
0056400 A } a n d { l i s p B } ,
0056420 a n d w a i t s f o r t
0056440 h e u s e r t o s e l e c
0056460 t o n e . I f { l i s p
0056500 A } i s s e l e c t e d ,
0056520 { l i s p D O A T H I N G }
0056540 i s c a l l e d . I f
0056560 { l i s p B } i s s e l e
0056600 c t e d , { l i s p D O B T
0056620 H I N G } i s c a l l e d .
0056640 I f n e i t h e r o f
0056660 t h e s e i s s e l e c t e
0056700 d , t h e f o r m r e t u
0056720 r n s { l i s p N I L } . \r
0056740 \r T h e p u r p o s e o f
0056760 t h i s e x a m p l e i s
0057000 t o s h o w s o m e g o o
0057020 d p r a c t i c e s t o f
0057040 o l l o w w h e n u s i n g
0057060 m e n u s . F i r s t ,
0057100 t h e m e n u i s o n l y
0057120 c r e a t e d o n c e , a
0057140 n d s a v e d i n t h e
0057160 v a r i a b l e { l i s p F
0057200 O O M E N U } . T h i s i
0057220 s m o r e e f f i c i e n t
0057240 i f t h e m e n u i s
0057260 u s e d m o r e t h a n o
0057300 n c e . S e c o n d , a l
0057320 l o f t h e i n f o r m a
0057340 t i o n a b o u t t h e m
0057360 e n u i s k e p t i n o
0057400 n e p l a c e , w h i c h
0057420 m a k e s i t e a s y t o
0057440 u n d e r s t a n d a n d
0057460 e d i t . T h i r d , t h
0057500 e f o r m s e v a l u a t e
0057520 d a s a r e s u l t o f
0057540 s e l e c t i n g s o m e t
0057560 h i n g f r o m t h e m e
0057600 n u a r e p a r t o f t
0057620 h e c o d e a n d h e n c
0057640 e w i l l b e k n o w n
0057660 t o m a s t e r s c o p e (
0057700 a s o p p o s e d t o t h
0057720 e s i t u a t i o n i f t
0057740 h e f o r m s w e r e s t
0057760 o r e d a s p a r t o f
0060000 t h e i t e m s ) . F o u
0060020 r t h , t h e i t e m s i
0060040 n t h e m e n u h a v e
0060060 h e l p s t r i n g s f o r
0060100 t h e u s e r . F i n a
0060120 l l y , t h e c o d e i s
0060140 c o m m e n t e d ( a l w a
0060160 y s w o r t h t h e t r o
0060200 u b l e ) . \r \r { n o t e m
0060220 o r e e x a m p l e s ! } \r \r
0060240 } { E n d S u b S e c E x a
0060260 m p l e s o f M e n u U s
0060300 e } \r \r \r } { E n d S u b S e
0060320 c M e n u s } \r \r \r \r { B e g
0060340 i n S u b S e c G r i d F
0060360 u n c t i o n s } \r { T i t l e
0060400 G r i d F u n c t i o n s }
0060420 \r { T e x t \r \r \r A G r i d
0060440 i s a p a r t i t i o n i n
0060460 g o f a n a r b i t r a r
0060500 y c o o r d i n a t e s y s
0060520 t e m ( h e r e a f t e r r
0060540 e f e r r e d t o a s t h
0060560 e " s o u r c e s y s t e m
0060600 " ) i n t o r e c t a n g l
0060620 e s . T h i s s u b s e c
0060640 t i o n d e s c r i b e s f
0060660 u n c t i o n s t h a t o p
0060700 e r a t e o n G r i d s .
0060720 I t i n c l u d e s f u n
0060740 c t i o n s t o d r a w t
0060760 h e o u t l i n e o f a
0061000 G r i d , t o t r a n s l a
0061020 t e b e t w e e n p o s i t
0061040 i o n s i n a s o u r c e
0061060 s y s t e m a n d G r i d
0061100 c o o r d i n a t e s ( t h
0061120 e c o o r d i n a t e s o f
0061140 t h e r e c t a n g l e w
0061160 h i c h c o n t a i n s a
0061200 g i v e n p o s i t i o n ) ,
0061220 a n d t o s h a d e G r
0061240 i d r e c t a n g l e s .
0061260 A G r i d i s d e f i n e
0061300 d b y i t s " u n i t g
0061320 r i d " , a r e g i o n (
0061340 c a l l e d a G r i d S p e
0061360 c ) w h i c h i s t h e
0061400 o r i g i n r e c t a n g l e
0061420 o f t h e G r i d i n
0061440 t e r m s o f t h e s o u
0061460 r c e s y s t e m . I t s
0061500 { l i s p L E F T } i s
0061520 t h e X - c o o r d i n a t e
0061540 o f t h e l e f t e d g
0061560 e o f t h e o r i g i n
0061600 r e c t a n g l e , i t s {
0061620 l i s p B O T T O M } i s
0061640 t h e Y - c o o r d i n a t e
0061660 o f t h e b o t t o m e
0061700 d g e o f t h e o r i g i
0061720 n r e c t a n g l e , i t s
0061740 { l i s p W I D T H } i s
0061760 t h e w i d t h o f t h
0062000 e g r i d r e c t a n g l e
0062020 s , a n d i t s { l i s p
0062040 H E I G H T } i s t h e
0062060 h e i g h t o f t h e g r
0062100 i d r e c t a n g l e s . \r \r
0062120 \r { F n D e f { N a m e G R
0062140 I D } { A r g s G R I D S P
0062160 E C U N I T S W I D E U N I
0062200 T S H I G H G R I D B O R D E
0062220 R D I S P L A Y S T R E A M
0062240 G R I D S H A D E } \r { T e x t
0062260 \r O u t l i n e s t h e g r
0062300 i d d e f i n e d b y { a
0062320 r g G R I D S P E C } w h i
0062340 c h i s { a r g U N I T S
0062360 W I D E } r e c t a n g l e s
0062400 w i d e a n d { a r g U
0062420 N I T S H I G H } r e c t a n
0062440 g l e s h i g h o n { a r
0062460 g D I S P L A Y S T R E A M }
0062500 . E a c h b o x i n t
0062520 h e g r i d h a s a b o
0062540 r d e r w i t h i n i t t
0062560 h a t i s { a r g G R I D
0062600 B O R D E R } p o i n t s o
0062620 n e a c h s i d e ; s o
0062640 t h e r e s u l t i n g l i
0062660 n e s i n t h e g r i d
0062700 a r e 2 * { a r g G R I D B
0062720 O R D E R } t h i c k . I
0062740 f { a r g G R I D B O R D E
0062760 R } i s t h e a t o m {
0063000 l i s p P O I N T } , i n s
0063020 t e a d o f a b o r d e r
0063040 t h e l o w e r l e f t
0063060 p o i n t o f e a c h g r
0063100 i d r e c t a n g l e w i l
0063120 l b e t u r n e d o n .
0063140 I f { a r g G R I D S H
0063160 A D E } i s n o n - { l i s
0063200 p N I L } , i t s h o u l
0063220 d b e a t e x t u r e a
0063240 n d t h e b o r d e r l i
0063260 n e s w i l l b e d r a w
0063300 n i n t h a t s h a d e .
0063320 \r \r } } \r \r \r { F n D e f { N
0063340 a m e S H A D E G R I D B O X
0063360 } { A r g s X Y S H A D
0063400 E O P E R A T I O N G R I D
0063420 S P E C G R I D B O R D E R
0063440 D I S P L A Y S T R E A M } \r {
0063460 T e x t \r S h a d e s t h e
0063500 g r i d r e c t a n g l e (
0063520 { a r g X } , { a r g Y } )
0063540 o f { a r g G R I D S P E
0063560 C } w i t h t e x t u r e
0063600 { a r g S H A D E } u s i n
0063620 g { a r g O P E R A T I O N
0063640 } o n { a r g D I S P L A
0063660 Y S T R E A M } . { a r g
0063700 G R I D B O R D E R } i s i
0063720 n t e r p r e t e d t h e s
0063740 a m e a s f o r { f n G
0063760 R I D } . \r } } \r \r \r T h e f
0064000 o l l o w i n g t w o f u n
0064020 c t i o n s m a p f r o m
0064040 t h e X , Y c o o r d i n a
0064060 t e s o f t h e s o u r c
0064100 e s y s t e m i n t o t h
0064120 e G r i d X , Y c o o r d
0064140 i n a t e s : \r \r { F n D e f
0064160 { N a m e G R I D X C O O R D
0064200 } { A r g s X C O O R D G
0064220 R I D S P E C } \r { T e x t \r R
0064240 e t u r n s t h e G r i d
0064260 X - c o o r d i n a t e ( i n
0064300 t h e G r i d s p e c i f
0064320 i e d b y { a r g G R I D
0064340 S P E C } ) t h a t c o n t
0064360 a i n s t h e s o u r c e
0064400 s y s t e m X - c o o r d i n
0064420 a t e { a r g X C O O R D }
0064440 . \r } } \r \r { F n D e f { N a
0064460 m e G R I D Y C O O R D } {
0064500 A r g s Y C O O R D G R I D
0064520 S P E C } \r { T e x t \r R e t u
0064540 r n s t h e G r i d Y - c
0064560 o o r d i n a t e ( i n t h
0064600 e G r i d s p e c i f i e d
0064620 b y { a r g G R I D S P E
0064640 C } ) t h a t c o n t a i n
0064660 s t h e s o u r c e s y s
0064700 t e m Y - c o o r d i n a t e
0064720 { a r g Y C O O R D } . \r }
0064740 } \r \r T h e f o l l o w i n g
0064760 t w o f u n c t i o n s m
0065000 a p f r o m t h e G r i d
0065020 X , Y c o o r d i n a t e s
0065040 i n t o t h e X , Y c o
0065060 o r d i n a t e s o f t h e
0065100 s o u r c e s y s t e m : \r
0065120 \r { F n D e f { N a m e L E
0065140 F T O F G R I D C O O R D } {
0065160 A r g s G R I D X G R I D S
0065200 P E C } \r { T e x t \r R e t u r
0065220 n s t h e s o u r c e s y
0065240 s t e m X - c o o r d i n a t
0065260 e o f t h e l e f t e d
0065300 g e o f a G r i d r e c
0065320 t a n g l e a t G r i d X
0065340 - c o o r d i n a t e { a r g
0065360 G R I D X } ( i n t h e
0065400 G r i d s p e c i f i e d b
0065420 y { a r g G R I D S P E C }
0065440 ) . \r } } \r \r { F n D e f { N
0065460 a m e B O T T O M O F G R I D
0065500 C O O R D } { A r g s G R I
0065520 D Y G R I D S P E C } \r { T e
0065540 x t \r R e t u r n s t h e s
0065560 o u r c e s y s t e m Y - c
0065600 o o r d i n a t e o f t h e
0065620 b o t t o m e d g e o f
0065640 a G r i d r e c t a n g l e
0065660 a t G r i d Y - c o o r d
0065700 i n a t e { a r g G R I D Y
0065720 } ( i n t h e G r i d s
0065740 p e c i f i e d b y { a r g
0065760 G R I D S P E C } ) . \r } } \r
0066000 \r } { E n d S u b S e c G r
0066020 i d F u n c t i o n s } \r \r \r
0066040 \r \0 \0 l ! \0 \0 \0 005 G A C H A \0 \n
0066060 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 l ! \0 001 z 270
0066100