$ 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