$ od -c -N 50000 [Indigo]<Press>PREPRESS.DM!1 0000000 377 \0 \0 i x . d f s \0 376 001 \0 Z / / 0000020 / P R E P R E S 0000040 S D E F I N I 0000060 T I O N S \r / / \r \r \r 0000100 / / I N D E X 0000120 D e f i n i t i o n s \r \r s t 0000140 r u c t u r e I X H : [ \r \t 0000160 T y p e \t b i t 4 \r \t L e n g 0000200 t h \t b i t 1 2 \r \t ] \r \r s t 0000220 r u c t u r e I X N : [ \t \t 0000240 / / F o r a n a m e \r \t @ I 0000260 X H \r \t C o d e w o r d \r \t N 0000300 a m e w o r d \r \t c o n t d 0000320 w o r d 9 \r \t ] \r \r s t r u c 0000340 t u r e I X : [ \t \t \t / / F 0000360 o r s p l i n e s , c h a r 0000400 a c t e r s \r \t @ I X H \t \t \t 376 0000420 001 \0 344 ^ / / H e a d e r \r \t [ 0000440 f a m b y t e \t \t / / F a m 0000460 i l y n u m b e r \r \t f a 0000500 c e b y t e \t \t / / F a c e 0000520 c o d e \r \t ] = f a m f a 0000540 c e w o r d \r \t b c b y t e 0000560 \t \t \t / / F i r s t c h a r 0000600 n u m b e r \r \t e c b y t e 0000620 \t \t \t / / a n d l a s t \r \t 0000640 s i z w o r d \t \t / / F o n 0000660 t s i z e ( 1 0 m i c r o 0000700 n u n i t s ) \r \t r o t a t i 0000720 o n w o r d \t \t / / R o t a 0000740 t i o n ( a n t i c l o c k 0000760 w i s e ) \r \t s a w o r d 2 0001000 \t \t / / S t a r t i n g a d d 0001020 r e s s 376 001 \0 : W o f d a t 0001040 a p a r t \r \t l e n w o r d 0001060 2 \t \t / / L e n g t h o f 0001100 d a t a p a r t \r \t \t \t \t / / 0001120 W i d t h t y p e e n d s 0001140 h e r e \r \t \t \t \t / / S p l i n 0001160 e t y p e e n d s h e r e 0001200 \r \t r e s o l u t i o n x w o 0001220 r d \t / / 1 0 * ( n u m b e r 0001240 o f b i t s / i n c h ) \r \t 0001260 r e s o l u t i o n y w o r d 0001300 \t / / d i t t o \r 0001320 \t ] \r \r m a n i f e s t [ \r / 0001340 / I X H t y p e s \r \t I X T y 0001360 p e E n d = 0 \r \t I X T y p e N 0001400 a m e = 1 \r \t I X T y p e S p l 0001420 i n e s = 2 \r \t I 376 001 \0 263 342 X T 0001440 y p e C h a r s = 3 \r \t I X T y 0001460 p e W i d t h s = 4 \r / / I X H 0001500 l e n g t h s \r \t I X L E n d 0001520 = 1 \r \t I X L N a m e = s i z e 0001540 I X N / 1 6 \r \t I X L S p l i 0001560 n e s = 9 \r \t I X L C h a r s = 0001600 1 1 \r \t I X L W i d t h s = 9 \r 0001620 \t I X L M a x = 1 1 \r \t ] \r \r / 0001640 / W I D T H s e 0001660 g m e n t d e f i n i t i o n 0001700 s \r \r s t r u c t u r e W T B 0001720 : [ \t \t / / W i d t h T a b 0001740 l e B l o c k \r \t X L w o r 0001760 d \t \t \t / / X o f f s e t \r \t 0002000 Y B w o r d \t \t \t / / Y o f 0002020 f s e t \r \t X W w o r d \t 376 001 0002040 \0 330 314 \t \t / / w i d t h \r \t Y 0002060 H w o r d \t \t \t / / h e i g 0002100 h t \r \t X W i d t h F i x e d 0002120 b i t \r \t Y W i d t h F i x e d 0002140 b i t \r \t s p a r e b i t 0002160 1 4 \r \t ] \r \r / / S P L 0002200 I N E s e g m e n 0002220 t d e f i n i t i o n s \r \r s 0002240 t r u c t u r e S p l i n e W 0002260 i d t h : [ \t \t / / B l o c k 0002300 d e s c r i b i n g s p l i 0002320 n e w i d t h s \r \t W X w o 0002340 r d 2 \t \t / / X w i d t h 0002360 - - F P \r \t W Y w o r d 2 0002400 \t \t / / Y w i d t h - - F 0002420 P \r \t X L w o r d 2 \t \t / / 0002440 X l 376 001 \0 250 \v e f t - - F 0002460 P \r \t Y B w o r d 2 \t \t / / 0002500 Y b o t t o m - - F P \r \t 0002520 X R w o r d 2 \t \t / / X r 0002540 i g h t - - F P \r \t Y T w 0002560 o r d 2 \t \t / / Y t o p - 0002600 - F P \r \t ] \r \r m a n i f e s 0002620 t S p l i n e W i d t h s i z 0002640 e = s i z e S p l i n e W i d 0002660 t h / 1 6 \r \r m a n i f e s t 0002700 [ \r / / C o d e s i n t h e 0002720 h e i g h t e n t r y f o 0002740 r a c h a r t h a t i n 0002760 d i c a t e s o m e t h i n g 0003000 e l s e \r \t H N o n E x C o d 0003020 e = - 1 \r \t H S p l i n e C o d 0003040 e = - 2 \r \r / / 376 001 \0 330 y D L 0003060 T y p e s ( f o r S p l i n 0003100 e F i l e ) \r \t D S p l i n e 0003120 F o n t M o v e T o = 1 \r \t D S 0003140 p l i n e F o n t D r a w T o = 0003160 2 \r \t D S p l i n e F o n t D r 0003200 a w C u r v e = 3 \r \r \t D S p l 0003220 i n e F o n t N e w O b j e c t 0003240 = - 1 \r \t D S p l i n e F o n t 0003260 E n d O b j e c t s = - 2 \r \t ] 0003300 \r \r \r / / C H A R 0003320 s e g m e n t d e f i n 0003340 i t i o n s ( s c a n - c o n 0003360 v e r t e d c h a r s ) \r \r s 0003400 t r u c t u r e C h a r W i d 0003420 t h : [ \t \t / / B l o c k d 0003440 e s c r i b i n g c h a 376 001 \0 0003460 300 ~ r w i d t h s \r \t W X w 0003500 o r d 2 \t \t / / X w i d t h 0003520 - - D P \r \t W Y w o r d 0003540 2 \t \t / / Y w i d t h - - 0003560 D P \r \t X L w o r d \t \t \t / / 0003600 X l e f t ( o f f s e t ) 0003620 i n t e g e r \r \t Y B w o r d 0003640 \t \t \t / / Y b o t t o m ( o 0003660 f f s e t ) i n t e g e r \r \t 0003700 W w o r d \t \t \t / / W i d t h 0003720 ( i n t e g e r ) \r \t H w o 0003740 r d \t \t \t / / H e i g h t ( i 0003760 n t e g e r ) o r s p e c i 0004000 a l c o d e \r \t ] \r \r m a n i 0004020 f e s t C h a r W i d t h s i 0004040 z e = s i z e C h a r W i d t 0004060 h / 376 001 \0 177 . 1 6 \r \r s t r u c 0004100 t u r e F H E A D : [ \t \t / 0004120 / F o n t h e a d e r , s c 0004140 a n c o n v e r t e d \r \t h w 0004160 b i t 6 \t \t \t / / H e i g h 0004200 t i n w o r d s \r \t n s b 0004220 i t 1 0 \t \t \t / / w i d t h 0004240 i n s c a n l i n e s \r \t ] 0004260 \r \r \r / / M i s c . \r s t r u c 0004300 t u r e C o n v e r t : [ \r 0004320 \t M o n o t o n e w o r d \t \t 0004340 / / T r u e i f i n p u t 0004360 t o c o n v e r s i o n i s 0004400 m o n o t o n e \r \t S p l i n 0004420 e O k w o r d \t \t / / T r u e 0004440 i f o u t p u t c a n b 0004460 e s p l i n 376 001 \0 325 023 e ( t 0004500 o o b i g ) \r \t B B G o o d 0004520 w o r d \t \t / / T r u e i f 0004540 b o u n d i n g b o x w i l 0004560 l b e c o r r e c t \r \t P r 0004600 e s s F o n t P a r t w o r d 0004620 \t / / T r u e i f s c a n 0004640 c o n v e r t i n g a p r e 0004660 s s f o n t p a r t \r \t L e 0004700 n w o r d \t \t \t / / \t ( i f 0004720 s o , t h i s i s t h e 0004740 l e n g t h ) \r \t ] \r \r m a n i 0004760 f e s t [ \r \t g o t n a m e = 0005000 1 \r \t g o t f a c e = 2 \r \t g o 0005020 t s i z e = 4 \r \t g o t r o t a 0005040 t i o n = 8 \r \t g o t i n c l i 0005060 n e = 1 6 \r \t g o t r e 376 \0 / \n 0005100 210 s o l u t i o n = 3 2 \r \t g o 0005120 t r e c o r d = 6 4 \r \t g o t f 0005140 a c t o r s = 1 2 8 \r \t ] \r \r \r 0005160 377 \0 \0 c o n v e r t . b c p l \0 0005200 376 001 \0 002 $ / / C O N V 0005220 E R T - - r e a d S 0005240 D , c r e a t e C D ( P 0005260 R E P R E S S , P R E S S ) \r / 0005300 / c a t a l o g n u m b e r 0005320 ? ? ? \r \r / / C o n v e r t A 0005340 W i d t h ( p s , p c , p ) \r / 0005360 / \t C o n v e r t t h e w i 0005400 d t h s o f a s i n g l e 0005420 c h a r a c t e r . \r / / \t p 0005440 s - > S p l i n e W i d t h 0005460 . F i l l s u p p c - 0005500 > C h a r W i d t h . \r / / \t 0005520 p - > C o n v e r t s t r 0005540 u c t u r e . \r / / C o n v e r 0005560 t A C h a r ( w , w o , p c , p 0005600 , F S G e 376 001 \0 f 031 t , F S P u 0005620 t ) \r / / \t C o n v e r t s a 0005640 s i n g l e c h a r a c t e 0005660 r . p - > C o n v e r t 0005700 s t r u c t u r e , \r / / \t w h 0005720 i c h d e s c r i b e s s o 0005740 m e p a r a m e t e r s . \r / 0005760 / \t w i s w i n d o w t o 0006000 r e a d s p l i n e s f r 0006020 o m ; w o w i n d o w t o 0006040 p u t \r / / \t s c a n - c o n 0006060 v e r t e d c h a r a c t e r 0006100 s i n t o . \r / / \t p c - > 0006120 C h a r W i d t h s t r u c 0006140 t u r e t o r e t u r n g 0006160 o o d i e s . \r / / \t R e t u r 0006200 n s a n e r r o 376 001 \0 8 351 r 0006220 c o d e : \r / / \t \t 0 = A 0006240 l l O K \r / / \t \t 1 = n o t 0006260 e n o u g h c o r e i n 0006300 S C V \r / / \t \t 2 , 3 = S C 0006320 V e r r o r s i n s p l i 0006340 n e s \r / / \t \t 1 0 = S p l i 0006360 n e d e s c r i p t i o n f 0006400 i l e i l l e g a l \r / / \t \t 0006420 1 1 = I l l e g a l P r e s 0006440 s f o n t o b j e c t \r / / 0006460 \t \t 1 2 = S c a n c o n v e 0006500 r t s c r e w e d u p - - 0006520 n o t e v e n # i n t e 0006540 r s e c t i o n s \r / / \t \t 1 3 0006560 = B i t i n t e r s e c t i 0006600 o n o u t o f r a n g e 376 0006620 001 \0 363 z \r / / \t \t 1 4 = C o n 0006640 v e r s i o n d i d n o t 0006660 t e r m i n a t e p r o p e r 0006700 l y . \r / / \t F S G e t , F S P 0006720 u t a r e r o u t i n e s 0006740 f o r g e t t i n g , r e l 0006760 e a s i n g s t o r a g e . \r 0007000 / / S e t S C V T r a n s f o r 0007020 m ( s i z , r o t a t i o n , i 0007040 n c l i n e , r e s o l u t i o 0007060 n x , r e s o l u t i o n y ) \r 0007100 / / \t S e t u p S C V t r 0007120 a n s f o r m a t i o n m a t 0007140 r i x . \r / / C o s ( t h e t a 0007160 , l v s i g n , l v m a g ) \r / 0007200 / \t C o m p u t e s t h e c 0007220 o s i n 376 001 \0 026 214 e o f t h 0007240 e a n g l e " t h e t a " 0007260 ( i n m i n u t e s ) a n d 0007300 \r / / \t r e t u r n s s i g n 0007320 ( 0 i f p o s i t i v e , 0007340 - 1 i f n e g a t i v e ) 0007360 a n d m a g n i t u d e \r / 0007400 / \t ( 0 t o # 1 7 7 7 7 7 ) 0007420 \r \r \r g e t " i x . d f s " \r 0007440 g e t " s c v . d f s " \r \r / 0007460 / o u t g o i n g p r o c e 0007500 d u r e s \r e x t e r n a l \r \t 0007520 [ \r \t C o n v e r t A C h a r \r 0007540 \t C o n v e r t A W i d t h \r \t 0007560 S e t S C V T r a n s f o r m \r 0007600 \t C o s \r \t ] \r \r / / o u t g 0007620 o i n g s t a t 376 001 \0 332 177 i c 0007640 s \r e x t e r n a l \r \t [ \r \t c 0007660 o n v e r t T h i c k e n \r \t ] 0007700 \r s t a t i c \r \t [ \r \t c o n v 0007720 e r t T h i c k e n = f a l s e 0007740 \r \t ] \r \r / / i n c o m i n g 0007760 p r o c e d u r e s \r e x t e 0010000 r n a l \r \t [ \r / / I n S C V 0010020 p a c k a g e \r \t S C V I n i 0010040 t \r \t S C V B e g i n O b j e c 0010060 t \r \t S C V E n d O b j e c t \r 0010100 \t S C V M o v e T o F \r \t S C V 0010120 D r a w T o F \r \t S C V D r a w 0010140 C u r v e \r \t S C V M a t r i x 0010160 \r \t S C V R e a d R u n s \r \t S 0010200 C V T r a n s f o r m F \r \t S C 0010220 V F l u s h \r \t F l o o r \r 376 001 0010240 \0 276 336 \r \r / / W i n d o w p a 0010260 c k a g e \r \t W i n d o w S e t 0010300 P o s i t i o n \r \t W i n d o w 0010320 G e t P o s i t i o n \r \t W i n 0010340 d o w R e a d B l o c k \r \t W i 0010360 n d o w W r i t e B l o c k \r \t 0010400 W i n d o w R e a d \r \t W i n d 0010420 o w W r i t e \r \t W i n d o w C 0010440 o p y \r \r / / B l o c k m o v 0010460 e , s t o r e \r \t Z e r o ; 0010500 S e t B l o c k ; M o v e B l 0010520 o c k \r \r / / M i s c \r \t M u l 0010540 D i v \r \r / / F l o a t i n g 0010560 p o i n t \r \t F L D ; F S T ; F 0010600 T R ; F L D I ; F N E G ; F A D 0010620 ; F S B ; F M L ; F D V ; F C M 0010640 ; F S 376 001 \0 O 266 N \r \t F L D V ; 0010660 F S T V ; F L D D P ; F S T D P 0010700 ; D P A D ; D P S B \r \t ] \r \r / 0010720 / i n c o m i n g s t a t i 0010740 c s \r / / e x t e r n a l \r / / 0010760 \t [ \r / / \t ] \r \r / / i n t e 0011000 r n a l s t a t i c s \r / / s 0011020 t a t i c \r / / \t [ \r / / \t ] \r 0011040 \r / / F i l e - w i d e s t 0011060 r u c t u r e a n d m a n i 0011100 f e s t d e c l a r a t i o n 0011120 s . \r \r / / P r o c e d u r e 0011140 s \r \r l e t \r \r \f C o n v e r t 0011160 A W i d t h ( s , c , p ) = 0011200 v a l o f [ \r \r / / s - > 0011220 S p l i n e W i d t h s t r 0011240 u c t u r e o 376 001 \0 U 003 f c 0011260 h a r t o c o m p u t e w 0011300 i d t h s . \r / / c - > C 0011320 h a r W i d t h s t r u c t u 0011340 r e t o r e c e i v e r e 0011360 s u l t s . \r / / p - > C 0011400 o n v e r t s t r u c t u r e 0011420 t h a t g o v e r n s h o 0011440 w t h i n g s a r e d o n 0011460 e . \r / / R e t u r n s t r 0011500 u e i f s p l i n e w i l 0011520 l b e n e e d e d . \r \r \t l 0011540 e t s p l i n e = f a l s e \r 0011560 \t l e t p w = l v s > > S p 0011600 l i n e W i d t h . W X \r \t t e 0011620 s t p w ! 0 e q 0 & p 0011640 w ! 1 e q - 1 t h e 376 001 \0 0011660 J 4 n \r \t [ \t \t \t \t \t / / 0011700 N o n e x i s t e n t c h a 0011720 r \r \t \t c > > C h a r W i d t h 0011740 . H = H N o n E x C o d e \r \t 0011760 ] \r \t o r \r \t [ \t \t \t 0012000 \t \t / / T r a n s f o r m w i 0012020 d t h s \r \t \t S C V T r a n s f 0012040 o r m F ( l v s > > S p l i n 0012060 e W i d t h . W X , l v s > > 0012100 S p l i n e W i d t h . W Y ) \r 0012120 \t \t F S T D P ( 8 , l v c > > 0012140 C h a r W i d t h . W X ) \t / / 0012160 a n d s a v e f o r C D 0012200 f i l e \r \t \t F S T D P ( 9 , l 0012220 v c > > C h a r W i d t h . W 0012240 Y ) \t / / a s d o u b l e - p 0012260 r e 376 001 \0 z 217 c i s i o n \r \r / 0012300 / C a l c u l a t e b o u n d 0012320 i n g b o x . \r \r / / W a r n 0012340 i n g : t h e c a l c u l a 0012360 t i o n f o r t h e b o u 0012400 n d i n g b o x i s r e a 0012420 l l y n o t g o o d e n o 0012440 u g h . \r / / T h i s i s 0012460 b e c a u s e t h e b o u n 0012500 d i n g b o x k e p t w i 0012520 t h t h e S D d e s c r i 0012540 p t i o n i s c a l c u l a 0012560 t e d \r / / a l i t t l e 0012600 d i f f e r e n t l y t h a n 0012620 w i l l b e t h e e n d 0012640 p o i n t s o f t h e s p 0012660 l i n e s w 376 001 \0 R 344 h e n 0012700 p a s s e d \r / / t o S C V 0012720 d u r i n g c o n v e r s i 0012740 o n . A s a r e s u l t 0012760 , s m a l l r o u n d - o f 0013000 f e r r o r s w i l l o c 0013020 c u r \r / / ( p a r t l y b 0013040 e c a u s e S C V D r a w C u 0013060 r v e u s e s - > r e l a t 0013100 i v e < - n u m b e r s ! ) . 0013120 T h i s c a n c h a n g 0013140 e \r / / 2 E - 9 i n t o - 0013160 2 E - 9 , w h i c h w i l l 0013200 c a u s e a d i f f e r e 0013220 n t b o u n d i n g b o x 0013240 t o b e c a l c u l a t e d 0013260 . \r \r \t i f p > > C o 376 001 \0 3 0013300 351 n v e r t . B B G o o d t h 0013320 e n \r \t \t [ \t \t \t / / T r a n s 0013340 f o r m b o u n d i n g b o 0013360 x \r \t \t S C V T r a n s f o r m 0013400 F ( l v s > > S p l i n e W i 0013420 d t h . X L , l v s > > S p l 0013440 i n e W i d t h . Y B ) \r \t \t F 0013460 L D ( 1 , 8 ) \t \t \t / / S a v e 0013500 l e f t e d g e \r \t \t l e t 0013520 y b = F l o o r ( 9 ) \t \t / / 0013540 Y b o t t o m \r \r \t \t S C V T 0013560 r a n s f o r m F ( l v s > > 0013600 S p l i n e W i d t h . X R , l 0013620 v s > > S p l i n e W i d t h 0013640 . Y T ) \r \t \t l e t y h = F l 0013660 o o r ( 9 ) \r \r / / N o w s w 0013700 a 376 001 \0 246 367 p y b o t t o m 0013720 a n d y h e i g h t i f i 0013740 n v e r t e d ( w i l l h a 0013760 p p e n i f c h a r a c t e 0014000 r i s r o t a t e d ) . \r \t 0014020 \t i f y b g r y h t h e 0014040 n [ l e t t = y b ; y b 0014060 = y h ; y h = t ] \r \t \t y h 0014100 = y h - y b + 1 \r \r / / A n d 0014120 s a m e f o r x , b u t 0014140 ( 1 ) c h e c k f o r e m 0014160 p t y c h a r a c t e r , a 0014200 n d ( 2 ) \r / / i n s c a 0014220 n d i r e c t i o n , t h i 0014240 n g s a r e a s s y m e t r 0014260 i c , b e c a u s e o f t 0014300 h e k i n 376 001 \0 221 322 d o f \r 0014320 / / s c a n c o n v e r s i 0014340 o n w e a r e d o i n g . 0014360 \r \r \t \t l e t x l , x w = n 0014400 i l , n i l \r \t \t l e t s g = 0014420 F C M ( 1 , 8 ) \r \t \t s w i t c 0014440 h o n s g i n t o [ \r \t c 0014460 a s e 0 : \t x l = 0 ; x w = 0014500 0 ; y b = 0 ; y h = 0 \t / / 0014520 C h a r a c t e r i s e m p 0014540 t y \r \t \t e n d c a s e \r \t c a 0014560 s e 1 : \t F L D ( 2 , 1 ) ; F 0014600 L D ( 1 , 8 ) ; F L D ( 8 , 2 ) 0014620 / / S w a p - - a c 1 0014640 < a c 8 \r \t c a s e - 1 : 0014660 \t x l = F l o o r ( 1 ) + 1 \t \t 0014700 / / A s s y m e t r y 376 001 \0 g 321 0014720 \r \t \t x w = F l o o r ( 8 ) - x 0014740 l + 1 \r \t \t e n d c a s e \r \t \t 0014760 ] \r \t \t c > > C h a r W i d t h 0015000 . X L = x l \r \t \t c > > C h a r 0015020 W i d t h . Y B = y b \r \t \t c > 0015040 > C h a r W i d t h . H = y h \r 0015060 \t \t c > > C h a r W i d t h . W 0015100 = x w \r \r \t \t i f p > > C o n 0015120 v e r t . S p l i n e O k & 0015140 S p l i n e N e e d e d ( c ) 0015160 t h e n \r \t \t \t [ \r \t \t \t c > > 0015200 C h a r W i d t h . H = H S p l 0015220 i n e C o d e \r \t \t \t s p l i n 0015240 e = t r u e \r \t \t \t ] \r \t \t ] \r 0015260 \t ] \r \t r e s u l t i s 0015300 s p l i n e \r ] \r \r a n d \r \r \f 0015320 376 001 \0 215 3 C o n v e r t A C h a 0015340 r ( w , w o , p c , p , F S G e 0015360 t , F S P u t ) = v a l o f 0015400 [ \r \r / / A s s u m e w p 0015420 o s i t i o n e d a t s p l 0015440 i n e , w o p o s i t i o n 0015460 e d t o r e c e i v e i t 0015500 . \r / / p c - > C h a r W 0015520 i d t h s t r u c t u r e t 0015540 o r e c e i v e r e s u l t 0015560 s ( b o u n d i n g b o x 0015600 o n l y ) \r / / p - > C 0015620 o n v e r t s t r u c t u r e 0015640 t h a t g o v e r n s h o 0015660 w t h i n g s a r e d o n 0015700 e . \r \r \t l e t o r i g i n a 0015720 l l e n = 376 001 \0 002 334 3 2 0 0 0 \t 0015740 \t / / G e n e r o u s e s t i 0015760 m a t e ! \r \t i f p > > C o n 0016000 v e r t . P r e s s F o n t P a 0016020 r t t h e n o r i g i n a l 0016040 l e n = p > > C o n v e r t . L 0016060 e n \r \r \t S C V I n i t ( F S G 0016100 e t , F S P u t ) \r \t S C V B e 0016120 g i n O b j e c t ( n o t p > 0016140 > C o n v e r t . M o n o t o n 0016160 e , p > > C o n v e r t . M o n 0016200 o t o n e ) \r \r \t l e t o p o 0016220 s = v e c 3 \t \t \t / / R e m e 0016240 m b e r o l d p o s f o r 0016260 s p l i n e \r \t W i n d o w G 0016300 e t P o s i t i o n ( w , o p o 0016320 s ) \r \t W i n d o w 376 001 \0 274 W G 0016340 e t P o s i t i o n ( w o , o p 0016360 o s + 2 ) \r \r \t l e t s t u f 0016400 f = v e c 1 2 \r \t l e t l e 0016420 n = o r i g i n a l l e n \r \r [ 0016440 \t i f l e n l e 0 t h e 0016460 n b r e a k \r \t l e t o p = 0016500 W i n d o w R e a d ( w ) \r \t s 0016520 w i t c h o n o p i n t o 0016540 [ \r \r \t c a s e D S p l i n e 0016560 F o n t M o v e T o : \t \t \t / / 0016600 M o v e T o \r \t \t W i n d o w R 0016620 e a d B l o c k ( w , s t u f f 0016640 , 4 ) \r \t \t S C V M o v e T o F 0016660 ( s t u f f , s t u f f + 2 ) \r 0016700 \t \t l e n = l e n - 5 \r \t \t e n 0016720 d c a s e ; \r \t c a s e D S 376 0016740 001 \0 276 033 p l i n e F o n t D r a 0016760 w T o : \t \t \t / / D r a w T o \r 0017000 \t \t W i n d o w R e a d B l o c 0017020 k ( w , s t u f f , 4 ) \r \t \t S 0017040 C V D r a w T o F ( s t u f f , 0017060 s t u f f + 2 ) \r \t \t l e n = l 0017100 e n - 5 \r \t \t e n d c a s e ; \r 0017120 \t c a s e D S p l i n e F o n 0017140 t D r a w C u r v e : \t \t \t / / 0017160 D r a w C u r v e \r \t \t W i n d 0017200 o w R e a d B l o c k ( w , s t 0017220 u f f , 1 2 ) \r \t \t S C V D r a 0017240 w C u r v e ( s t u f f , s t u 0017260 f f + 2 , s t u f f + 4 , s t u 0017300 f f + 6 , \r \t \t \t \t s t u f f + 0017320 8 , s t u f f + 1 0 ) \r \t \t l e 0017340 n = l e 376 001 \0 325 . n - 1 3 \r \t \t 0017360 e n d c a s e ; \r \t c a s e D 0017400 S p l i n e F o n t E n d O b j 0017420 e c t s : \t \t / / E n d \r \t \t 0017440 b r e a k \r \t \t e n d c a s e \r 0017460 \t d e f a u l t : \t r e s u l t 0017500 i s 1 0 \t \t \t / / I l l e g a 0017520 l f i l e f o r m a t \r \t ] 0017540 \r ] r e p e a t \r \r \t l e t 0017560 v = v e c ( s i z e S C V / 0017600 1 6 ) \r \t S C V E n d O b j e c 0017620 t ( v ) \t \t \t \t / / F i n i s h 0017640 o f f \r \t i f v > > S C V . 0017660 E r r o r t h e n [ \t \t / / 0017700 E r r o r - - r e t u r n 0017720 c o d e \r \t \t \t S C V F l u s h 0017740 ( v ) \r \t \t \t r e 376 001 \0 303 344 s u 0017760 l t i s v > > S C V . E r r o 0020000 r \r \t \t \t ] \r \r / / C o m p u t 0020020 e o f f s e t s ( o x , o y 0020040 ) , w i d t h ( n s ) a n 0020060 d h e i g h t ( n b ) \r \t l 0020100 e t n s , n b = n i l , n i l 0020120 \r \t l e t o x = v > > S C V . 0020140 S m i n \r \t t e s t o x g r 0020160 v > > S C V . S m a x t h e 0020200 n [ o x = 0 ; n s = 0 ] 0020220 o r \r \t \t n s = v > > S C V . S 0020240 m a x - o x + 1 \r \t l e t o y 0020260 = v > > S C V . R m i n \r \t t e 0020300 s t o y g r v > > S C V . 0020320 R m a x t h e n [ o y = 0 0020340 ; n b = 0 ] o r \r \t \t n 376 001 0020360 \0 363 276 b = v > > S C V . R m a x 0020400 - o y + 1 \r \r \t i f p > > C o 0020420 n v e r t . P r e s s F o n t P 0020440 a r t t h e n \r \t \t [ \r \t \t i 0020460 f l e n n e 0 t h e n \r 0020500 \t \t \t [ \r \t \t \t S C V F l u s h 0020520 ( v ) \r \t \t \t r e s u l t i s 0020540 1 1 \r \t \t \t ] \r \t \t S C V T r 0020560 a n s f o r m F ( s t u f f , s 0020600 t u f f + 2 ) \t / / U s e l a 0020620 s t M O V E T O \r \t \t F S T D 0020640 P ( 8 , l v p c > > C h a r W 0020660 i d t h . W X ) \t / / t o c 0020700 o m p u t e w i d t h s \r \t \t 0020720 F S T D P ( 9 , l v p c > > C 0020740 h a r W i d t h . W Y ) \r \t \t ] 0020760 \r / / 376 001 \0 322 2 S a l t a w a 0021000 y g o o d i e s i n t h e 0021020 s t r u c t u r e \r \t p c > > 0021040 C h a r W i d t h . X L = o x \r 0021060 \t p c > > C h a r W i d t h . Y 0021100 B = o y \r \t p c > > C h a r W i 0021120 d t h . W = n s \r \t p c > > C h 0021140 a r W i d t h . H = n b \r \r \t l 0021160 e t n b w = ( n b + 1 5 ) r 0021200 s h i f t 4 \t \t / / N u m b e 0021220 r o f " w o r d s " h i g 0021240 h \r \r / / N o w d e c i d e 0021260 i f s p l i n e s n e e d e 0021300 d . \r \t t e s t p > > C o n v 0021320 e r t . S p l i n e O k & S 0021340 p l i n e N e e d e d ( p c ) 0021360 t h e n \r \t [ \r 376 001 \0 335 , \r / / 0021400 T h e c h a r a c t e r w i 0021420 l l o c c u p y t o o m u 0021440 c h s p a c e i f s c a n 0021460 - c o n v e r t e d a n d \r / 0021500 / s a v e d i n a c h a 0021520 r a c t e r f i l e a s b 0021540 i t s . S o , w e s i m 0021560 p l y s c a l e t h e \r / / 0021600 s p l i n e d e f i n i t i 0021620 o n , a n d p l a c e i t 0021640 i n t h e c h a r a c t e 0021660 r f i l e . I n a d d i 0021700 t i o n , \r / / t h e C h a 0021720 r W i d t h . H e n t r y i 0021740 s c h a n g e d t o h a v 0021760 e a s p e c i a l c 376 001 \0 0022000 \ 361 o d e t h a t \r / / i n 0022020 d i c a t e s t h i s c h a 0022040 r a c t e r i s d e s c r i 0022060 b e d b y s p l i n e s , 0022100 a n d X L a n d Y B \r / / 0022120 h a v e i n t h e m t h 0022140 e f i l e p o s i t i o n 0022160 o f t h e s p l i n e e n 0022200 c o d i n g . \r \r \t \t W i n d o 0022220 w S e t P o s i t i o n ( w , o 0022240 p o s ) \t / / R e s t a r t \r \t 0022260 \t W i n d o w G e t P o s i t i 0022300 o n ( w o , o p o s + 2 ) \r \t \t 0022320 p c > > C h a r W i d t h . H = 0022340 H S p l i n e C o d e \r \t \t p c 0022360 > > C h a r W i d t h . X L = o 0022400 p o 376 001 \0 : 310 s ! 2 \t \t / / S a 0022420 v e p o s i t i o n \r \t \t p c 0022440 > > C h a r W i d t h . Y B = o 0022460 p o s ! 3 \r \t \t l e n = o r i g 0022500 i n a l l e n \r \t [ \t i f l e 0022520 n e q 0 t h e n b r e a 0022540 k \t \t / / C o p y s p l i n e 0022560 s t o w o \r \t \t l e t o p 0022600 = W i n d o w R e a d ( w ) \r \t 0022620 \t s t u f f ! 0 = o p \r \t \t l e 0022640 t l = s e l e c t o n o 0022660 p i n t o [ \r \t \t c a s e 0022700 D S p l i n e F o n t M o v e T 0022720 o : \r \t \t c a s e D S p l i n 0022740 e F o n t D r a w T o : \t 4 \r \t 0022760 \t c a s e D S p l i n e F o n 0023000 t D r a w C u 376 001 \0 251 265 r v e : 0023020 1 2 \r \t \t c a s e D S p l i 0023040 n e F o n t N e w O b j e c t : 0023060 \r \t \t c a s e D S p l i n e F 0023100 o n t E n d O b j e c t s : 0 0023120 \r \t \t \t ] \r \t \t W i n d o w R e 0023140 a d B l o c k ( w , s t u f f + 0023160 1 , l ) \r \t \t f o r p = 1 t 0023200 o l b y 4 d o \t / / S p 0023220 l i n e s m u s t b e s c 0023240 a l e d , r o t ' d \r \t \t \t [ 0023260 \r \t \t \t S C V T r a n s f o r m 0023300 F ( s t u f f + p , s t u f f + 0023320 p + 2 ) \r \t \t \t F S T ( 8 , s t 0023340 u f f + p ) \r \t \t \t F S T ( 9 , 0023360 s t u f f + p + 2 ) \r \t \t \t ] \r 0023400 \t \t W i n d o w W r i t 376 001 \0 367 0023420 347 e B l o c k ( w o , s t u f f 0023440 , l + 1 ) \r \t \t i f l e q 0023460 0 t h e n b r e a k \t / / E 0023500 n d \r \t ] r e p e a t \r \t \t S 0023520 C V F l u s h ( v ) \t \t / / R e 0023540 l e a s e a n y s t o r a g 0023560 e \r \t ] \r o r \r \t [ \t \t \t \t / / 0023600 C a n c o n v e r t O K \r \r 0023620 / / T h e c h a r a c t e r 0023640 c a n b e c o n v e r t e d 0023660 i n t o a b i t m a t r 0023700 i x , a n d s t o r e d i 0023720 n \r / / t h e c h a r a c t 0023740 e r d e f i n i t i o n f i 0023760 l e a s s u c h . \r \r \t l e 0024000 t s l = n i l \r \t s l < < F H 0024020 E 376 001 \0 0 033 A D . h w = n b w \r 0024040 \t s l < < F H E A D . n s = n s 0024060 \t \t \t / / M a k e u p f o n 0024100 t h e a d e r \r \t W i n d o w 0024120 W r i t e ( w o , s l ) \r \t i f 0024140 s l e q 0 t h e n r e 0024160 s u l t i s 0 \t \t / / ( O n l 0024200 y i f s p a c e ) \r \r \t l e 0024220 t M a s k s = t a b l e [ 0024240 \r \t \t # 1 7 7 7 7 7 ; # 0 7 7 0024260 7 7 7 ; # 0 3 7 7 7 7 ; # 0 0024300 1 7 7 7 7 ; # 0 0 7 7 7 7 ; \r 0024320 \t \t # 0 0 3 7 7 7 ; # 0 0 1 7 0024340 7 7 ; # 0 0 0 7 7 7 ; # 0 0 0024360 0 3 7 7 ; # 0 0 0 1 7 7 ; \r \t 0024400 \t # 0 0 0 0 7 7 ; # 0 0 0 0 3 0024420 7 ; # 0 0 376 001 \0 260 314 0 0 1 7 ; 0024440 # 0 0 0 0 0 7 ; # 0 0 0 0 0 0024460 3 ; \r \t \t # 0 0 0 0 0 1 ; # 0 0024500 0 0 0 0 0 ] \r \r \t l e t s l 0024520 b u f = v e c 1 0 0 \t \t / / F 0024540 o r m a k i n g u p s c a 0024560 n l i n e s \r \t Z e r o ( s l 0024600 b u f , 1 0 0 ) \r \t \r / / P r e 0024620 p a r e t o c a l l S C V 0024640 R e a d R u n s t o o b t a 0024660 i n a l l r u n s u n t i 0024700 l t h e c h a r a c t e r \r 0024720 / / e x h a u s t s . \r \r \t l 0024740 e t b u f = v e c 1 0 0 0 \r 0024760 \t l e t s l = v > > S C V . S 0025000 m i n \r \t v > > S C V . S e n d 0025020 = s l - 1 \r [ \t v > > 376 001 \0 W 351 0025040 S C V . S b e g i n = v > > S C 0025060 V . S e n d + 1 \t / / M o v e 0025100 r i g h t \r \t v > > S C V . S e 0025120 n d = v > > S C V . S m a x \t \t 0025140 / / O p t i m i s t i c \r \t S C 0025160 V R e a d R u n s ( v , b u f , 0025200 1 0 0 0 ) \r \t l e t n = v > > 0025220 S C V . I n t C n t \r \t i f n 0025240 e q 0 t h e n b r e a k 0025260 \t \t / / N o m o r e i n t e 0025300 r s e c t i o n s \r \t l e t p 0025320 = v > > S C V . I n t P t r \r \r 0025340 \t f o r i = 1 t o n b y 0025360 2 d o \r \t \t [ \r \t \t w h i l 0025400 e s l n e p ! 0 d o \t / 0025420 / G o i n g t o n e w s c 0025440 376 001 \0 231 301 a n l i n e . \r \t \t 0025460 \t [ \r \t \t \t W i n d o w W r i t 0025500 e B l o c k ( w o , s l b u f , 0025520 n b w ) \r \t \t \t Z e r o ( s l b 0025540 u f , n b w ) \r \t \t \t s l = s l 0025560 + 1 \r \t \t \t ] \r \t \t i f p ! 2 0025600 n e s l t h e n r e s u 0025620 l t i s 1 2 \r \t \t l e t y b 0025640 = p ! 1 - o y \t \t \t / / B o t t 0025660 o m y \r \t \t l e t y t = p ! 0025700 3 - o y + ( c o n v e r t T h i 0025720 c k e n ? 1 , 0 ) \t \t / / T o 0025740 p y + 1 \r \t \t p = p + 4 \t \t \t 0025760 / / B u m p t o n e x t i 0026000 n t e r s e c t i o n \r \r / / 0026020 T u r n o n b i t s f r o 0026040 m y b 376 001 \0 267 006 t o y t - 0026060 1 ( i n c l u s i v e ) \r \t \t 0026100 i f y b l s 0 % y t 0026120 g r n b t h e n r e s u l 0026140 t i s 1 3 \r \t \t i f y t g 0026160 e y b t h e n \t \t / / O n l 0026200 y s h o w n o n - z e r o 0026220 r u n s \r \t \t [ \r \t \t l e t L 0026240 e f t M a s k = ( M a s k s ! ( 0026260 y b & # 1 7 ) ) \r \t \t l e t R 0026300 i g h t M a s k = n o t ( M 0026320 a s k s ! ( y t & # 1 7 ) ) \r \t 0026340 \t y b = y b r s h i f t 4 \r 0026360 \t \t l e t w c = ( y t r s h 0026400 i f t 4 ) - y b \t / / W o r d 0026420 c o u n t \r \t \t l e t w = s 0026440 l b u f + y b \t \t / 376 001 \0 305 $ / 0026460 W o r d a d d r e s s \r \t \t l 0026500 e t b w = ( @ w & ( n o t 0026520 L e f t M a s k ) ) % ( - 1 0026540 & L e f t M a s k ) \r \t \t f o 0026560 r i = 0 t o w c - 1 d o 0026600 \r \t \t \t [ w ! i = b w ; b w 0026620 = - 1 ] \r \t \t w ! w c = ( w ! 0026640 w c & ( n o t R i g h t M 0026660 a s k ) ) % ( b w & R i g h 0026700 t M a s k ) \r \t \t ] \r \t \t ] \r \r 0026720 ] r e p e a t \r \t W i n d o w 0026740 W r i t e B l o c k ( w o , s l 0026760 b u f , n b w ) \t / / L a s t 0027000 l i n e . . . . \r \t i f s l 0027020 n e v > > S C V . S m a x t 0027040 h e n r e s u l t i s 1 4 376 0027060 001 \0 246 322 \r \t ] \r \r \t r e s u l t 0027100 i s 0 \r ] \r \r a n d \r \r \f / / 0027120 S e t u p t h e S C V t 0027140 r a n s f o r m a t i o n m a 0027160 t r i x f r o m p a r a m e 0027200 t e r s t h a t a r e \r / / 0027220 s u p p l i e d f o r c o 0027240 n v e r t i n g a f o n t : 0027260 \r / / s i z \t \t S i z e o f 0027300 t h e f o n t i n m i c 0027320 a s \r / / r o t a t i o n \t R 0027340 o t a t i o n o f t h e f 0027360 o n t i n m i n u t e s \r / 0027400 / i n c l i n e \t I n c l i n 0027420 e o f t h e f o n t i n 0027440 p e r c e n t \r / / r e s x 0027460 , r e s 376 001 \0 M . y \t R e s o l 0027500 u t i o n o f t h e o u t 0027520 p u t d e v i c e \r / / \t \t ( 0027540 i f n o t s u p p l i e d , 0027560 F P A C ' s 3 & 4 a s s u 0027600 m e d s e t u p ) \r \r S e t 0027620 S C V T r a n s f o r m ( s i z 0027640 , r o t a t i o n , i n c l i n 0027660 e , r e s x , r e s y ; n u m 0027700 a r g s n ) b e [ \r \t F L 0027720 D I ( 5 , 2 5 4 0 0 ) \r \t F L D 0027740 I ( 1 , s i z ) ; F L D I ( 2 0027760 , s i z ) \r \t i f n g r 3 0030000 t h e n [ F L D I ( 3 , r 0030020 e s x ) ; F L D I ( 4 , r e s 0030040 y ) ] \r \t F M L ( 1 , 3 ) ; 0030060 F M L ( 2 , 4 ) \r 376 001 \0 n W \t F 0030100 D V ( 1 , 5 ) ; F D V ( 2 , 5 0030120 ) \t \t / / x a n d y s c a 0030140 l e s . \r \t t e s t r o t a t 0030160 i o n n e 0 t h e n \r \t \t 0030200 [ \t \t \t / / G e t s i n e a 0030220 n d c o s i n e \r \t \t G e t F 0030240 l o a t i n g C o s ( r o t a t 0030260 i o n , 3 ) \r \t \t G e t F l o a 0030300 t i n g C o s ( r o t a t i o n 0030320 - 9 0 * 6 0 , 4 ) \r \t \t ] \r \t o 0030340 r \r \t \t [ \r \t \t F L D I ( 3 , 0030360 1 ) ; F L D I ( 4 , 0 ) \r \t \t 0030400 ] \r \t F L D ( 5 , 3 ) ; F M L 0030420 ( 5 , 1 ) \t \t / / m [ 1 , 1 ] \r 0030440 \t F L D ( 6 , 4 ) ; F M L ( 6 0030460 , 1 ) \t \t / / m [ 1 , 2 ] \r 376 001 0030500 \0 F $ \t F N E G ( 4 ) \r \t F L D 0030520 I ( 7 , i n c l i n e ) ; F L D 0030540 I ( 0 , 1 0 0 ) ; F D V ( 7 , 0 0030560 ) \r \t F M L ( 7 , 3 ) ; F A D ( 0030600 4 , 7 ) ; F M L ( 4 , 2 ) \t / / 0030620 m [ 2 , 1 ] \r \t F M L ( 3 , 2 ) 0030640 \t \t \t / / m [ 2 , 2 ] \r \t S C V 0030660 M a t r i x ( 5 , 6 , 4 , 3 ) \r 0030700 ] \r \r a n d \r \r \f / / R e t u r 0030720 n f l o a t i n g c o s i n 0030740 e i n a c . A r g u m e n 0030760 t i s m i n u t e s o f 0031000 a r c . \r \r G e t F l o a t i n 0031020 g C o s ( m i n , a c ) b e 0031040 [ \r \t l e t v = v e c 4 \r \t 0031060 v ! 1 = 0 \t \t \t / / E x p o n e 0031100 n t \r 376 001 \0 225 j \t v ! 3 = 0 \t \t 0031120 \t / / L o w m a n t i s s a \r 0031140 \t l e t o n e = t a b l e [ 0031160 0 ; 0 ; # 1 7 7 7 7 7 ; 0 ] 0031200 / / N o r m a l i z a t i o n 0031220 c o n s t a n t \r \r \t C o s ( 0031240 m i n , v , v + 2 ) \r / / N o 0031260 w n o r m a l i z e t h e 0031300 n u m b e r \r \t i f v ! 2 t 0031320 h e n \r \t w h i l e ( 0031340 ( v ! 2 ) & # 1 0 0 0 0 0 ) e 0031360 q 0 d o [ v ! 2 = v ! 2 0031400 l s h i f t 1 ; v ! 1 = v 0031420 ! 1 - 1 ] \r \t F L D V ( a c , 0031440 v ) \r \t F L D V ( 0 , o n e ) \r 0031460 \t F D V ( a c , 0 ) \r ] \r \r a n 0031500 d \r \r C o s ( t 376 001 \0 D 245 h e t 0031520 a , l v s i g n , l v m a g ) 0031540 b e [ \r / / C a l c u l a t e 0031560 t h e c o s i n e o f t 0031600 h e g i v e n a n g l e , 0031620 a n d r e t u r n t h e \r / 0031640 / m a g n i t u d e a s a 0031660 f r a c t i o n o f # 1 7 0031700 7 7 7 7 ( l a r g e s t n u 0031720 m b e r ) \r / / A l s o r e 0031740 t u r n s i g n ( 0 i f 0031760 p o s i t i v e , - 1 i f 0032000 n e g a t i v e ) \r \r \t i f t 0032020 h e t a l s 0 t h e n t 0032040 h e t a = - t h e t a \r \t @ l v 0032060 s i g n = - ( ( ( t h e t a + 9 0032100 0 * 6 0 ) / ( 1 8 0 * 6 0 376 001 \0 0032120 276 0 ) ) & 1 ) \r \t l e t d = t 0032140 h e t a r e m 9 0 * 6 0 \r \t 0032160 i f ( ( t h e t a / ( 9 0 * 6 0032200 0 ) ) & 1 ) n e 0 t h e n 0032220 d = 9 0 * 6 0 - d \r \t l e t 0032240 m i n = d r e m 6 0 \t \t \t / 0032260 / M i n u t e s p a r t \r \t d 0032300 = d / 6 0 \t \t \t \t / / D e g r e 0032320 e s p a r t \r / / N o w d 0032340 i n r a n g e 0 - 9 0 d e 0032360 g r e e s \r \r \t l e t r e t r 0032400 i e v e c o s ( d , m i n ) = 0032420 v a l o f [ \t / / 0 l e d 0032440 l e 4 5 \r \t \t l e t c o s 0032460 a r = t a b l e [ \r \t \t # 1 7 0032500 7 7 7 7 ; \r \t \t # 1 7 7 7 6 5 ; 0032520 # 376 001 \0 S 1 7 7 7 2 7 ; # 0032540 1 7 7 6 4 5 ; # 1 7 7 5 3 7 ; 0032560 # 1 7 7 4 0 5 ; \r \t \t # 1 7 0032600 7 2 2 7 ; # 1 7 7 0 2 6 ; # 0032620 1 7 6 6 0 1 ; # 1 7 6 3 3 0 ; 0032640 # 1 7 6 0 3 3 ; \r \t \t # 1 7 0032660 5 5 1 2 ; # 1 7 5 1 4 6 ; # 0032700 1 7 4 5 5 7 ; # 1 7 4 1 4 4 ; 0032720 # 1 7 3 5 0 5 ; \r \t \t # 1 7 0032740 3 0 2 4 ; # 1 7 2 3 1 7 ; # 0032760 1 7 1 5 6 7 ; # 1 7 1 0 1 4 ; 0033000 # 1 7 0 2 1 6 ; \r \t \t # 1 6 0033020 7 3 7 6 ; # 1 6 6 5 3 2 ; # 0033040 1 6 5 6 4 5 ; # 1 6 4 7 3 5 ; 0033060 # 1 6 4 0 0 2 ; \r \t \t # 1 6 0033100 3 0 2 6 ; # 1 6 2 0 3 0 ; # 0033120 1 6 1 0 0 7 ; 376 001 \0 256 303 # 1 5 0033140 7 7 4 6 ; # 1 5 6 6 6 2 ; \r 0033160 \t \t # 1 5 5 5 5 6 ; # 1 5 4 4 0033200 3 0 ; # 1 5 3 2 6 2 ; # 1 5 0033220 2 0 7 2 ; # 1 5 0 6 6 3 ; \r 0033240 \t \t # 1 4 7 4 3 2 ; # 1 4 6 1 0033260 6 2 ; # 1 4 4 6 7 2 ; # 1 4 0033300 3 3 6 2 ; # 1 4 2 0 3 2 ; \r 0033320 \t \t # 1 4 0 4 6 3 ; # 1 3 7 0 0033340 7 5 ; # 1 3 5 4 7 1 ; # 1 3 0033360 4 0 4 5 ; # 1 3 2 4 0 5 ; \r 0033400 \t \t # 1 3 0 7 4 3 ; \t / / 4 6 0033420 d e g r e e s b e c a u s e 0033440 o f i n t e r p o l a t i o n 0033460 \r \t \t ] \r \r \t \t l e t a = c o 0033500 s a r ! d \t \t / / F i r s t a 0033520 n s w e r \r \t \t i f m 376 001 \0 275 0033540 & i n n e 0 t h e n \t / / 0033560 M u s t i n t e r p o l a t e 0033600 \r \t \t [ \r \t \t l e t b 0033620 = c o s a r ! ( d + 1 ) \r \t \t 0033640 a = a - M u l D i v ( a - b , 0033660 m i n , 6 0 ) \t / / C a r e f u 0033700 l a b o u t s i g n s \r \t \t 0033720 ] \r \t \t r e s u l t i s a 0033740 \r \t ] \r \r \t t e s t d g r 0033760 4 5 t h e n \r \t \t [ \t \t \t / / 0034000 U s e h a l f - a n g l e f 0034020 o r m u l a e \r \t \t i f ( d & 0034040 1 ) n e 0 t h e n m i n 0034060 = m i n + 6 0 / / D i v i d e 0034100 a n g l e b y 2 \r \t \t l e 0034120 t a = r e t r i e v e c o s ( 0034140 d 376 001 \0 X 364 r s h i f t 1 , 0034160 m i n r s h i f t 1 ) \r \t \t 0034200 a = M u l D i v ( a , a , # 1 7 0034220 7 7 7 7 ) \t / / c o s ^ 2 ( t 0034240 h e t a / 2 ) \r \t \t a = a - # 1 0034260 0 0 0 0 0 \t \t / / c o s ^ 2 0034300 - 1 / 2 \r \t \t @ l v m a g = a 0034320 l s h i f t 1 \t / / 2 c o s 0034340 ^ 2 - 1 \r \t \t ] \r \t o r \t @ l 0034360 v m a g = r e t r i e v e c o s 0034400 ( d , m i n ) \r \t \r ] \r \r \r a n 0034420 d \r \r / / R e t u r n t r u e 0034440 i f c h a r a c t e r d e 0034460 s c r i b e d b y p c > > C 0034500 h a r W i d t h . . . \r / / 0034520 w i l l b e t o o b i g 0034540 f o r a 376 \0 215 Z j s c a n - 0034560 c o n v e r t e d f o r m . \r 0034600 \r S p l i n e N e e d e d ( p c 0034620 ) = v a l o f [ \r \t l e t 0034640 n b w = ( p c > > C h a r W i 0034660 d t h . H + 1 5 ) / 1 6 \r \t r e 0034700 s u l t i s ( n b w g r 1 0034720 0 0 ) % ( n b w * p c > > C 0034740 h a r W i d t h . W g r 2 0 0034760 0 0 ) \r ] \r \r \0 377 \0 \0 c o n v e 0035000 r t c o m . b c p l \0 376 001 \0 S b 0035020 / / C O N V E R T 0035040 C O M ( P R E P R E S 0035060 S ) \r / / c a t a l o g n u 0035100 m b e r ? ? ? \r / / \r / / C o 0035120 n v e r t ( t h i c k e n ) \r / 0035140 / \t P r o c e s s e s t h e 0035160 c o n v e r t c o m m a n d \r 0035200 / / \r \r g e t " i x . d f s " 0035220 \r \r / / o u t g o i n g p r 0035240 o c e d u r e s \r e x t e r n a 0035260 l \r \t [ \r \t C o n v e r t \r \t ] 0035300 \r \r / / o u t g o i n g s t 0035320 a t i c s \r / / e x t e r n a l 0035340 \r / / \t [ \r / / \t ] \r / / s t a 0035360 t i c \r / / \t [ \r / / \t ] \r \r / 0035400 / i n c o m i n g p r o c e 0035420 376 001 \0 3 x d u r e s \r e x t e r 0035440 n a l \r \t [ \r / / P R E P R E S 0035460 S \r \t P r e P r e s s W i n d o 0035500 w I n i t \r \t C h e c k P a r a 0035520 m s \r \t R e a d I X T e m p F i 0035540 l e \r \t W r i t e I X T e m p F 0035560 i l e \r \t S e t P o s R e l a t 0035600 i v e \r \t G e t P o s R e l a t 0035620 i v e \r \t T y p e C h a r \r \t I 0035640 l l C o m m a n d \r \r / / U T I 0035660 L \r \t C h e c k C D \r \t Z e r o 0035700 \r \t M o v e B l o c k \r \t F S G 0035720 e t X \r \t F S P u t \r \r / / W I 0035740 N D O W \r \t W i n d o w R e a d 0035760 B l o c k \r \t W i n d o w G e t 0036000 P o s i t i o n \r \t W i n d o w 0036020 S e t P o 376 001 \0 R W s i t i o n 0036040 \r \t W i n d o w W r i t e B l o 0036060 c k \r \t W i n d o w C l o s e \r 0036100 \r / / C O N V E R T \r \t S e t S 0036120 C V T r a n s f o r m \r \t C o n 0036140 v e r t A W i d t h \r \t C o n v 0036160 e r t A C h a r \r \r / / S C A N 0036200 \r \t T y p e F o r m \r \t ] \r \r / 0036220 / i n c o m i n g s t a t i 0036240 c s \r e x t e r n a l \r \t [ \r \t 0036260 s i z \t \t \t / / P o i n t s i 0036300 z e o f f o n t \r \t r o t a 0036320 t i o n \t \t \t / / R o t a t i o 0036340 n o f f o n t \r \t i n c l i 0036360 n e \t \t \t / / I n c l i n e o 0036400 f f o n t \r \t r e s o l u t i 0036420 o n x \t \t / / R e s 376 001 \0 246 ? o 0036440 l u t i o n s \r \t r e s o l u t 0036460 i o n y \r \t c o n v e r t T h i 0036500 c k e n \r \t ] \r \r / / i n t e 0036520 r n a l s t a t i c s \r / / s 0036540 t a t i c \r / / \t [ \r / / \t ] \r 0036560 \r / / F i l e - w i d e s t 0036600 r u c t u r e a n d m a n i 0036620 f e s t d e c l a r a t i o n 0036640 s . \r \r / / P r o c e d u r e 0036660 s \r \r \r \f / / C O N V E R T c 0036700 o m m a n d p r o c e s s o r 0036720 . I n c l u d e d h e r e 0036740 s o t h a t t h e f i l 0036760 e \r / / C O N V E R T . C c 0037000 a n b e u s e d b y t h 0037020 e f o n t s p a s s w i 376 0037040 001 \0 ] 334 t h o u t r e q u i r 0037060 i n g a l l \r / / t h i s 0037100 s t u f f . \r \r l e t C o n v 0037120 e r t ( t h i c k e n ) b e 0037140 [ \r \t c o n v e r t T h i c k e 0037160 n = t h i c k e n \r \t u n l e s 0037200 s C h e c k P a r a m s ( g o 0037220 t s i z e + g o t r e s o l u t 0037240 i o n ) t h e n I l l C o m 0037260 m a n d ( ) \r \t l e t w s = P 0037300 r e P r e s s W i n d o w I n i 0037320 t ( - 2 , f a l s e ) \t / / S D 0037340 t e m p \r \t l e t w c = P r e 0037360 P r e s s W i n d o w I n i t ( 0037400 - 1 ) \t / / C D t e m p \r \r \t l 0037420 e t f n = v e c I X L N a m 0037440 e \r \t l 376 001 \0 235 346 e t i x o = 0037460 v e c I X L M a x \r \t R e a d 0037500 I X T e m p F i l e ( w s , f n 0037520 , i x o ) \r \t l e t i x = v e 0037540 c I X L M a x \r \t M o v e B l 0037560 o c k ( i x , i x o , I X L M a 0037600 x ) \t \t / / I X i s t h e 0037620 n e w o n e , i x o t h e 0037640 o l d \r \t i x > > I X . T y p 0037660 e = I X T y p e C h a r s \t \t / 0037700 / C o n v e r t i n g t o c 0037720 h a r a c t e r s \r \t i x > > I 0037740 X . s i z = s i z \r \t i x > > I 0037760 X . r o t a t i o n = r o t a t 0040000 i o n \r \t i x > > I X . r e s o 0040020 l u t i o n x = r e s o l u t i 0040040 o n x \r \t i x > > 376 001 \0 331 370 I X 0040060 . r e s o l u t i o n y = r e s 0040100 o l u t i o n y \t / / R e m e m 0040120 b e r f o r m a t c h e s . 0040140 \r \t l e t b c = i x > > I X . 0040160 b c \r \t l e t e c = i x > > I 0040200 X . e c \r \t l e t n c = e c - 0040220 b c + 1 \r \t l e t W T = F S G 0040240 e t X ( n c * S p l i n e W i d 0040260 t h s i z e ) \r \t W i n d o w R 0040300 e a d B l o c k ( w s , W T , n 0040320 c * S p l i n e W i d t h s i z 0040340 e ) \r \t l e t o f f o = v e c 0040360 1 \r \t W i n d o w G e t P o s 0040400 i t i o n ( w s , o f f o ) \t \t 0040420 / / C D o f f s e t \r \t l e t 0040440 C D = F S G e t X ( n c * 376 001 0040460 \0 260 035 2 ) \r \t W i n d o w R e a 0040500 d B l o c k ( w s , C D , n c * 0040520 2 ) \r \t l e t C W T = F S G e 0040540 t X ( n c * C h a r W i d t h s 0040560 i z e ) \r \t Z e r o ( C W T , 0040600 n c * C h a r W i d t h s i z e 0040620 ) \t / / A l l w i d t h s 0 0040640 , e v e n o f u n d e f 0040660 c h a r s \r / / W r i t e n e 0040700 w f i l e . \r \t W r i t e I X 0040720 T e m p F i l e ( w c , f n , i 0040740 x ) \t \t / / W r i t e d i r e 0040760 c t o r i e s . \r \t W i n d o w 0041000 G e t P o s i t i o n ( w c , l 0041020 v i x > > I X . s a ) \t / / R 0041040 e m e m b e r b a s e a d d 0041060 r e s 376 001 \0 = 005 s \r \t W i n d o 0041100 w W r i t e B l o c k ( w c , C 0041120 W T , n c * C h a r W i d t h s 0041140 i z e ) \r \t l e t o f f n = v 0041160 e c 1 \r \t W i n d o w G e t P 0041200 o s i t i o n ( w c , o f f n ) 0041220 \t \t / / C D o f f s e t f o 0041240 r n e w o n e s \r \t W i n d 0041260 o w W r i t e B l o c k ( w c , 0041300 C D , n c * 2 ) \r \r \t S e t S C 0041320 V T r a n s f o r m ( s i z , r 0041340 o t a t i o n , i n c l i n e , 0041360 r e s o l u t i o n x , r e s o 0041400 l u t i o n y ) \r \r \t l e t b 0041420 b g o o d = ( ( r o t a t i o n 0041440 r e m ( 6 0 * 9 0 ) ) e q 0041460 0 ) & ( i 376 001 \0 300 205 n c l 0041500 i n e e q 0 ) \r \t l e t p 0041520 = v e c s i z e C o n v e r 0041540 t / 1 6 \t \t / / P r e p a r e 0041560 p a r a m e t e r s \r \t p > > C 0041600 o n v e r t . S p l i n e O k = 0041620 f a l s e \t \t / / C h a r a c t 0041640 e r s o n l y ! \r \t p > > C o 0041660 n v e r t . P r e s s F o n t P 0041700 a r t = f a l s e \r \t p > > C o 0041720 n v e r t . B B G o o d = b b g 0041740 o o d \r \t p > > C o n v e r t . 0041760 M o n o t o n e = b b g o o d \t 0042000 / / I f n o r o t a t i o n 0042020 , s p l i n e s m o n o t o 0042040 n e \r \r \t l e t p s = W T ; 0042060 l e t p c = C W T \r f o 376 001 \0 0042100 201 X r c = 1 t o n c d o 0042120 \r \t [ \r \t C o n v e r t A W i d 0042140 t h ( p s , p c , p ) \r \t p s = 0042160 p s + S p l i n e W i d t h s i 0042200 z e \r \t p c = p c + C h a r W i 0042220 d t h s i z e \r \t ] \r \r \t p c = 0042240 C W T \r f o r c = 0 t o n 0042260 c - 1 d o \r \t [ \r \t i f C D 0042300 ! ( c * 2 ) n e - 1 t h e 0042320 n \r \t [ \t \t \t \t / / C o n v e r 0042340 t c h a r a c t e r . \r \t S e 0042360 t P o s R e l a t i v e ( w s , 0042400 o f f o , C D + c * 2 ) \r \t G e 0042420 t P o s R e l a t i v e ( w c , 0042440 o f f n , C D + c * 2 ) \t / / S 0042460 a v e n e w p o s i t i o n 0042500 . \r 376 001 \0 340 ( \t T y p e C h a r 0042520 ( c + b c ) \t \t \t / / S i g n a 0042540 l w e a r e c o n v e r t 0042560 i n g \r \t l e t p n c = v e c 0042600 C h a r W i d t h s i z e \r \t 0042620 l e t r e s = C o n v e r t A 0042640 C h a r ( w s , w c , p n c , p 0042660 , F S G e t X , F S P u t ) \t / 0042700 / D o t h e w o r k . \r \t i 0042720 f r e s n e 0 t h e n 0042740 T y p e F o r m ( " E r r o r , 0042760 C o n v e r t A C h a r r e 0043000 t u r n s " , 1 0 , r e s , 0 0043020 ) \r \r / / I f b b g o o d , 0043040 c h e c k t o s e e i f 0043060 b o u n d i n g b o x w a s 0043100 c o m p u t 376 001 \0 z 006 e d c 0043120 o r r e c t l y . \r / / ( s e 0043140 e c o m m e n t s i n C o 0043160 n v e r t A W i d t h ) \r \t i f 0043200 b b g o o d t h e n \r \t i f 0043220 p c > > C h a r W i d t h . X 0043240 L n e p n c > > C h a r W i 0043260 d t h . X L % \r \t p c > > 0043300 C h a r W i d t h . Y B n e 0043320 p n c > > C h a r W i d t h . Y 0043340 B % \r \t p c > > C h a r W 0043360 i d t h . W n e p n c > > C 0043400 h a r W i d t h . W % \r \t 0043420 p c > > C h a r W i d t h . H 0043440 n e p n c > > C h a r W i d t 0043460 h . H t h e n \r \t \t T y p e F 0043500 o r m ( " [ B o u n d 376 001 \0 242 0043520 321 i n g b o x i n c o r r e 0043540 c t . ] " ) \r \r / / S t o r e 0043560 b o u n d i n g b o x i n f 0043600 o r m a t i o n i n t o W T 0043620 t a b l e . \r \t p c > > C h a 0043640 r W i d t h . X L = p n c > > C 0043660 h a r W i d t h . X L \r \t p c > 0043700 > C h a r W i d t h . Y B = p n 0043720 c > > C h a r W i d t h . Y B \r 0043740 \t p c > > C h a r W i d t h . W 0043760 = p n c > > C h a r W i d t h . 0044000 W \r \t p c > > C h a r W i d t h 0044020 . H = p n c > > C h a r W i d t 0044040 h . H \r \r \t C h e c k C D ( p c 0044060 ) \r \t T y p e F o r m ( 0 ) \r \t 0044100 ] \r \t p c = p c + C h a r W i d 0044120 t 376 001 \0 g 033 h s i z e \r \t ] \t \t 0044140 \t \t / / C o n v e r t l o o p 0044160 \r \r \t l e t t l = v e c 1 ; 0044200 W i n d o w G e t P o s i t i 0044220 o n ( w c , t l ) \r \t G e t P o 0044240 s R e l a t i v e ( w c , l v 0044260 i x > > I X . s a , l v i x > 0044300 > I X . l e n ) / / S a v e 0044320 l e n g t h \r \r \t W i n d o w S 0044340 e t P o s i t i o n ( w c , t a 0044360 b l e [ 0 ; 0 ] ) \t / / A 0044400 t b e g i n n i n g \r \t W r i 0044420 t e I X T e m p F i l e ( w c , 0044440 f n , i x ) \t \t / / R e W r i t 0044460 e d i r e c t o r y \r \t W i n 0044500 d o w W r i t e B l o c k ( w c 0044520 , C W T , n 376 \0 247 360 367 c * C h a 0044540 r W i d t h s i z e ) / / W 0044560 r i t e W T \r \t W i n d o w W 0044600 r i t e B l o c k ( w c , C D , 0044620 n c * 2 ) \t \t / / a n d C D 0044640 \r \r \t W i n d o w C l o s e ( w 0044660 s ) \r \t W i n d o w C l o s e ( 0044700 w c , t l ) \t \t / / C l o s e 0044720 & t r u n c a t e \r \r \t F S P 0044740 u t ( C D ) ; F S P u t ( W T 0044760 ) ; F S P u t ( C W T ) \r ] \r 0045000 \r \r 377 \0 \0 c o o r d i n a t e . 0045020 b c p l \0 376 001 \0 225 270 / / C O 0045040 O R D I N A T E 0045060 ( P R E P R E S S ) \r / / 0045100 c a t a l o g n u m b e r 0045120 ? ? ? \r / / \r / / C o o r d i n 0045140 a t e ( ) - - l i s t i n 0045160 f o a b o u t c o o r d i n 0045200 a t e d f o n t s \r / / \r \r g 0045220 e t " I x . d f s " \r g e t 0045240 " S t r e a m s . d " \r \r / / 0045260 o u t g o i n g p r o c e d u 0045300 r e s \r e x t e r n a l \r \t [ \r 0045320 \t C o o r d i n a t e \r \t ] \r \r 0045340 / / o u t g o i n g s t a t 0045360 i c s \r / / e x t e r n a l \r / 0045400 / \t [ \r / / \t ] \r / / s t a t i 0045420 c \r / / \t [ \r / / \t 376 001 \0 : t ] 0045440 \r \r / / i n c o m i n g p r 0045460 o c e d u r e s \r e x t e r n a 0045500 l \r \t [ \r \t P r e P r e s s W i 0045520 n d o w I n i t \r \t W i n d o w 0045540 C l o s e \r \t W i n d o w R e a 0045560 d B l o c k \r \t W i n d o w S e 0045600 t P o s i t i o n \r \t R e a d I 0045620 X T e m p F i l e \r \r \t C h e c 0045640 k P a r a m s \r \t T y p e C h a 0045660 r \r \t P r i n t I X \r \r \t M u l 0045700 D i v \r \t F L D I ; F L D D P 0045720 ; F L D ; F M L ; F A D ; 0045740 F D V ; F T R ; F C M \r \r 0045760 \t T y p e F o r m \r \t O p e n F 0046000 i l e \r \t C l o s e s \r \t ] \r \r 0046020 / / i n c o m i n g s t a 376 0046040 001 \0 N i t i c s \r e x t e r n a 0046060 l \r \t [ \r \t o u t s t r e a m \r 0046100 \t s i z \r \t r e s o l u t i o n 0046120 x \r \t p a r a m s \r \t ] \r \r / / 0046140 i n t e r n a l s t a t i c 0046160 s \r / / s t a t i c \r / / \t [ \r 0046200 / / \t ] \r \r / / F i l e - w i 0046220 d e s t r u c t u r e a n d 0046240 m a n i f e s t d e c l a r 0046260 a t i o n s . \r \r / / P r o c 0046300 e d u r e s \r \r l e t C o o r 0046320 d i n a t e ( ) b e \r [ \r \t l 0046340 e t f s p l = v e c 1 0 \r \t 0046360 l e t f c h r = v e c 1 0 \r 0046400 \t T y p e F o r m ( " S p l i n 0046420 e f i l e n a m e : " , 1 0046440 , f s p 376 001 \0 325 307 l , " C h a r 0046460 a c t e r f i l e n a m e : 0046500 " , 1 , f c h r , 0 ) \r \t l e 0046520 t s s p l = P r e P r e s s W 0046540 i n d o w I n i t ( f s p l , f 0046560 a l s e ) \r \t l e t s c h r = 0046600 P r e P r e s s W i n d o w I n 0046620 i t ( f c h r , f a l s e ) \r \t 0046640 o u t s t r e a m = O p e n F i 0046660 l e ( " P r e P r e s s . L s t 0046700 " , k s T y p e W r i t e O n 0046720 l y , 1 ) \r \t T y p e F o r m 0046740 ( " C o o r d i n a t e " , f 0046760 s p l , " w i t h " , f c h 0047000 r , 0 ) \r \r \t l e t s p l x = 0047020 v e c I X L M a x \r \t l e t 0047040 c h r x = v e c 376 001 \0 343 002 I X 0047060 L M a x \r \t l e t s p l n = v 0047100 e c I X L N a m e \r \t l e t 0047120 c h r n = v e c I X L N a m e 0047140 \r \r \t R e a d I X T e m p F i l 0047160 e ( s s p l , s p l n , s p 0047200 l x ) \r \t R e a d I X T e m p F 0047220 i l e ( s c h r , c h r n , 0047240 c h r x ) \r \t T y p e H e a d e 0047260 r ( " S p l i n e s : " , s 0047300 p l n , s p l x ) \r \t T y p e 0047320 H e a d e r ( " C h a r a c t e 0047340 r s : " , c h r n , c h r 0047360 x ) \r / / N o w m o d i f y 0047400 t h e a c t u a l p a r a 0047420 m e t e r s g i v e n s w i 0047440 t c h e s i n c o m m a 376 001 0047460 \0 E 222 n d \r \t i f ( p a r a m 0047500 s & g o t s i z e ) n e 0 0047520 t h e n c h r x > > I X . s i 0047540 z = s i z \r \t i f ( p a r a m 0047560 s & g o t r e s o l u t i o n ) 0047600 n e 0 t h e n c h r x > 0047620 > I X . r e s o l u t i o n x = 0047640 r e s o l u t i o n x \r \r \t W i 0047660 n d o w S e t P o s i t i o n ( 0047700 s s p l , l v s p l x > > I 0047720 X . s a ) \r \t W i n d o w S e t 0047740 P o s i t i o n ( s c h r , l 0047760 v c h r x > > I X . s a ) \r \r 0050000 \t l e t b c = s p l x > > I X 0050020 . b c \r \t l e t o b c = c h r 0050040 x > > I X . b c \r \t l e t v = 0050060 v e c 376 001 \0 ( 320 1 0 0 \r \r \t w 0050100 h i l e b c g r o b c d 0050120 o \r \t \t [ \r \t \t W i n d o w R e 0050140 a d B l o c k ( s c h r , v , 0050160 C h a r W i d t h s i z e ) \r 0050200 \t \t o b c = o b c + 1 \r \t \t ] \r 0050220 \t w h i l e o b c g r b c 0050240 d o \r \t \t [ \r \t \t W i n d o w 0050260 R e a d B l o c k ( s s p l , 0050300 v , S p l i n e W i d t h s i 0050320 z e ) \r \t \t b c = b c + 1 \r \t \t 0050340 ] \r \r \t l e t m a x t o p = - 0050360 1 0 0 0 \r \t l e t m i n b o t 0050400 t o m = 1 0 0 0 \r \t w h i l e 0050420 b c l e s p l x > > I X . e 0050440 c & b c l e c h r x > > 0050460 I X . e c d o 376 001 \0 323 C \r \t \t 0050500 [ \r \t \t l e t c h r = v e c 0050520 C h a r W i d t h s i z e \r \t \t 0050540 W i n d o w R e a d B l o c k ( 0050560 s c h r , c h r , C h a r W 0050600 i d t h s i z e ) \r \t \t l e t 0050620 s p l = v e c S p l i n e W i 0050640 d t h s i z e \r \t \t W i n d o w 0050660 R e a d B l o c k ( s s p l , 0050700 s p l , S p l i n e W i d t h 0050720 s i z e ) \r \r \t \t b c = b c + 1 0050740 \r \t \t i f ( s p l ! 0 e q 0050760 0 & s p l ! 1 e q - 1 ) 0051000 % \r \t \t \t c h r > > C h a r W 0051020 i d t h . H e q H N o n E x 0051040 C o d e t h e n l o o p \r \r 0051060 / / N o w s t a r t p 376 001 \0 0051100 0 \0 r i n t i n g : \r \t \t T y p 0051120 e C h a r ( b c - 1 ) \r \t \t l e 0051140 t l e f t = c h r > > C h a r 0051160 W i d t h . X L \r \t \t l e t r 0051200 i g h t = l e f t + c h r > > C 0051220 h a r W i d t h . W \r \t \t l e t 0051240 b o t t o m = c h r > > C h a 0051260 r W i d t h . Y B \r \t \t l e t 0051300 t o p = b o t t o m + c h r > > 0051320 C h a r W i d t h . H \r \t \t i f 0051340 t o p g r m a x t o p t 0051360 h e n m a x t o p = t o p \r \t 0051400 \t i f b o t t o m l s m i 0051420 n b o t t o m t h e n m i n 0051440 b o t t o m = b o t t o m \r \t \t 0051460 T y p e F o r m ( " W i d t 0051500 h 376 001 \0 352 # i s " , 3 , l v 0051520 c h r > > C h a r W i d t h . 0051540 W X ) \r \t \t F L D ( 1 , l v 0051560 s p l > > S p l i n e W i d t h 0051600 . W X ) \r \t \t C o n v R e s ( 1 0051620 , c h r x ) \r \t \t T y p e F o 0051640 r m ( " s / b " , 2 , 1 0051660 ) \r \t \t F L D D P ( 2 , l v 0051700 c h r > > C h a r W i d t h . W 0051720 X ) \r \t \t i f F C M ( 2 , 1 0051740 ) g r 0 t h e n \r \t \t \t T 0051760 y p e F o r m ( " [ w i d t h ] 0052000 " ) \r \t \t T y p e F o r m ( " * 0052020 N " ) \r \t \t T y p e D 0052040 i m ( " L : " , l e f t , l 0052060 v s p l > > S p l i n e W i d 0052100 t h . X L , 376 001 \0 020 \0 c h r x 0052120 ) \r \t \t T y p e D i m ( " R : 0052140 " , r i g h t , l v s p l > 0052160 > S p l i n e W i d t h . X R , 0052200 c h r x ) \r \t \t T y p e D i m 0052220 ( " B : " , b o t t o m , l 0052240 v s p l > > S p l i n e W i d 0052260 t h . Y B , c h r x ) \r \t \t T 0052300 y p e D i m ( " T : " , t o p 0052320 , l v s p l > > S p l i n e 0052340 W i d t h . Y T , c h r x ) \r 0052360 \t \t T y p e F o r m ( 0 ) \r \t \t 0052400 ] \r \r / / N o w p r i n t 0052420 s u m m a r y s t u f f a t 0052440 e n d : \r \t T y p e F o r m ( 0052460 " * N * N * N S u m m a r y : * 0052500 N " ) \r \t T y p e F o r 376 001 \0 D 0052520 ) m ( " M a x i m u m n u m b 0052540 e r o f b i t s b e l o w 0052560 b a s e l i n e : " , 1 0 , 0052600 - m i n b o t t o m ) \r \t T y p 0052620 e F o r m ( " * N M a x i m u m 0052640 n u m b e r o f b i t s 0052660 a b o v e b a s e l i n e : 0052700 " , 1 0 , m a x t o p ) \r \t l e 0052720 t h = m a x t o p - m i n b o 0052740 t t o m \r \t T y p e F o r m ( " 0052760 * N F o n t s i z e i s " 0053000 , 1 0 , c h r x > > I X . s i z 0053020 , " m i c a s , o r " ) \r 0053040 \t T y p e F o r m ( 1 0 , M u 0053060 l D i v ( c h r x > > I X . s i 0053100 z , 1 8 , 6 3 5 ) , " p o i 0053120 n 376 001 \0 221 004 t s . " ) \r \t F L D 0053140 I ( 1 , 1 ) \r \t C o n v R e s 0053160 ( 1 , c h r x ) \r \t F L D I ( 0053200 2 , 1 ) ; F L D I ( 3 , 2 0053220 ) ; F D V ( 2 , 3 ) ; F A 0053240 D ( 1 , 2 ) \r \t l e t s b h 0053260 = F T R ( 1 ) \r \t i f s b h 0053300 l s h t h e n T y p e F o 0053320 r m ( " * N C h a r a c t e r s 0053340 a r e t o o h i g h f o 0053360 r t h i s p o i n t s i z 0053400 e - - t o t a l a l l o w 0053420 e d i s " , 1 0 , s b h ) \r 0053440 \r \t T y p e F o r m ( 0 ) \r \r \t 0053460 C l o s e s ( o u t s t r e a m 0053500 ) \r \t W i n d o w C l o s e ( s 0053520 s p l ) \r \t 376 001 \0 332 370 W i n d o 0053540 w C l o s e ( s c h r ) \r \t ] \r 0053560 \r a n d T y p e D i m ( m e s 0053600 , i v a l , f p v a l , c 0053620 v ) b e \r [ \r \t T y p e F o r 0053640 m ( m e s , 1 0 , i v a l , 0053660 $ | ) \r \t F L D ( 1 , f p v 0053700 a l ) \r \t C o n v R e s ( 1 , 0053720 c v ) \r \t T y p e F o r m ( 2 , 0053740 1 , " " ) \r ] \r \r / / 0053760 C o n v e r t f r a c t i o n 0054000 s o f c h a r s i z e t 0054020 o r e s o l u t i o n u n i 0054040 t s \r a n d C o n v R e s ( a 0054060 c , i x ) b e \r [ \r \t F L D 0054100 I ( 3 1 , i x > > I X . s i z 0054120 ) \r \t F M L ( 1 , 3 376 \0 304 340 256 0054140 1 ) \r \t F L D I ( 3 1 , i x > 0054160 > I X . r e s o l u t i o n x ) 0054200 \r \t F M L ( a c , 3 1 ) \r \t F 0054220 L D I ( 3 1 , 2 5 4 0 0 ) \r \t 0054240 F D V ( a c , 3 1 ) \t \t / / 0054260 1 = i n r e s . u n i t 0054300 s \r ] \r \r a n d T y p e H e a 0054320 d e r ( h e r a l d , n a m , 0054340 i x ) b e \r [ \r \t T y p e F 0054360 o r m ( h e r a l d , l v n 0054400 a m > > I X N . N a m e , " 0054420 " ) \r \t P r i n t I X ( i x ) 0054440 \r ] \r \r 377 \0 \0 f i l o p s . b c 0054460 p l \0 376 001 \0 317 233 / / F I L 0054500 E O P S ( P R E P R 0054520 E S S ) \r / / c a t a l o g 0054540 n u m b e r ? ? ? \r / / \r / / 0054560 E x t r a c t ( f ) \t \t P e r 0054600 f o r m s e x t r a c t o p 0054620 e r a t i o n o n f i l e 0054640 f . \r / / M e r g e D e l e t 0054660 e ( f , m f l g ) \t P e r f o r 0054700 m s m e r g e , s u p e r c 0054720 e d e , d e l e t e o p e 0054740 r a t i o n o n f i l e f 0054760 . \r / / R e n a m e ( f ) \t \t 0055000 P e r f o r m s r e n a m e 0055020 o p e r a t i o n o n f i l 0055040 e f . \r / / W i d t h C a l 0055060 c ( f ) \t \t P e 376 001 \0 336 300 r f o 0055100 r m w i d t h m e r g e f 0055120 r o m f i l e f . \r / / L 0055140 i s t ( f ) \t \t M a k e a l 0055160 i s t i n g o f a f i l e 0055200 . \r \r g e t " I x . d f s " \r 0055220 g e t " S t r e a m s . d " \r 0055240 \r / / o u t g o i n g p r o 0055260 c e d u r e s \r e x t e r n a l 0055300 \r \t [ \r \t E x t r a c t \r \t M e 0055320 r g e D e l e t e \r \t R e n a m 0055340 e \r \t W i d t h C a l c \r \t L i 0055360 s t \r \t ] \r \r / / i n c o m i 0055400 n g p r o c e d u r e s \r e x 0055420 t e r n a l \r \t [ \r \t P r e P r 0055440 e s s W i n d o w I n i t \r \r / 0055460 / W I N D O W \r \t W i n d 376 001 \0 0055500 f 307 o w S e t P o s i t i o n \r 0055520 \t W i n d o w G e t P o s i t i 0055540 o n \r \t W i n d o w R e a d B l 0055560 o c k \r \t W i n d o w W r i t e 0055600 B l o c k \r \t W i n d o w R e a 0055620 d \r \t W i n d o w W r i t e \r \t 0055640 W i n d o w C o p y \r \t W i n d 0055660 o w E n d \r \t W i n d o w C l o 0055700 s e \r \r / / U T I L \r \t F S G e 0055720 t X \r \t F S P u t \r \t Z e r o ; 0055740 S e t B l o c k ; M o v e B 0055760 l o c k \r \r \t R e a d I X \r \t W 0056000 r i t e I X \r \t C o m p a r e I 0056020 X \r \t P r i n t I X \r \t R e a d 0056040 I X T e m p F i l e \r \t W r i t 0056060 e I X T e m p F i l e \r \t T y p 0056100 e C 376 001 \0 277 < h a r \r \t C h e c 0056120 k P a r a m s \r \t S c r e a m \r 0056140 \t I l l F o r m a t \r \t I l l C 0056160 o m m a n d \r \r / / F O N T W I 0056200 D T H \r \t D e c o d e F a c e \r 0056220 \r / / S C A N \r \t S t r E q \r \t 0056240 S t r C o p \r \t T y p e F o r m 0056260 \r \r / / O S \r \t O p e n F i l e 0056300 \r \t C l o s e s \r \r / / F L O A 0056320 T \r \t F L D ; F S T ; F T R ; F 0056340 L D I ; F N E G ; F A D ; F S B 0056360 ; F M L ; F D V ; F C M ; F S N 0056400 \r \t F L D V ; F S T V ; F L D D 0056420 P ; F S T D P ; D P A D ; D P S 0056440 B \r \t D P C o p \r \t ] \r \r / / 0056460 i n c o m i n g s t a t i c s 0056500 \r e x t e r n 376 001 \0 274 223 a l \r \t 0056520 [ \r \t f a m \r \t f a c e \r \t s i 0056540 z \r \t r o t a t i o n \r \t r e s 0056560 o l u t i o n x \r \t r e s o l u 0056600 t i o n y \r \t p a r a m s \r \t o 0056620 u t s t r e a m \r \t ] \r \r / / 0056640 i n t e r n a l s t a t i c s 0056660 \r / / s t a t i c \r / / \t [ \r / 0056700 / \t ] \r \r / / F i l e - w i d 0056720 e s t r u c t u r e a n d 0056740 m a n i f e s t d e c l a r a 0056760 t i o n s . \r \r s t r u c t u r 0057000 e I X D : \r [ \r \t n e x t 0057020 \t w o r d \t \t / / L i s t o f 0057040 I X e n t r i e s \r \t f i l 0057060 e \t w o r d \t \t / / W h i c h 0057100 f i l e i t i s i 376 001 \0 232 0057120 \r n \r \t O l d C o d e 0 \t w o r 0057140 d \t \t / / F o r f a m i l y 0057160 n a m e c o n v e r s i o n \r 0057200 \t O l d C o d e 1 \t w o r d \t \t 0057220 / / " \r \t I X \t w o r d \t \t / 0057240 / . . . f o l l o w i n g i s 0057260 I X e n t r y . . . \r ] \r 0057300 \r / / P r o c e d u r e s \r \r 0057320 l e t \r \r \f / / E x t r a c t 0057340 a f o n t f r o m a f i 0057360 l e f ( C D o r S D ) \r 0057400 \r E x t r a c t ( f ) b e [ 0057420 \r \t i f C h e c k P a r a m s 0057440 ( g o t n a m e ) e q f a l 0057460 s e t h e n I l l C o m m a 0057500 n d ( ) \r \t l e t p r o t o = 0057520 v 376 001 \0 240 362 e c I X L M a x \r 0057540 \t F i l l I X ( p r o t o ) \t \t 0057560 \t / / F i l l i n f r o m 0057600 p a r a m e t e r s r e a d \r 0057620 \t l e t f a m s e e n = f a l 0057640 s e \t \t / / N o c o d e s e 0057660 e n y e t \r \t l e t f n = v 0057700 e c I X L N a m e \r \t l e t 0057720 d = v e c I X L M a x \r \t l e 0057740 t w = P r e P r e s s W i n d 0057760 o w I n i t ( f , f a l s e ) \r 0060000 \r [ \t R e a d I X ( w , d ) \t \t 0060020 \t / / G e t a n e n t r y \r 0060040 \r \t s w i t c h o n d > > I X 0060060 H . T y p e i n t o \r \t [ \r c 0060100 a s e I X T y p e E n d : \r \t 0060120 \t T y p e F 376 001 \0 342 < o r m ( " 0060140 N o s u c h f o n t i n 0060160 t h e f i l e * N " ) \r \t \t r 0060200 e t u r n \r c a s e I X T y p 0060220 e N a m e : \r \t \t [ \r \t \t i f 0060240 S t r E q ( f a m , l v d > > 0060260 I X N . N a m e ) t h e n \r \t 0060300 \t \t [ \r \t \t \t f a m s e e n = t 0060320 r u e \r \t \t \t p r o t o > > I X 0060340 . f a m = d > > I X N . C o d e 0060360 \r \t \t \t M o v e B l o c k ( f n 0060400 , d , I X L N a m e ) \r \t \t \t ] 0060420 \r \t \t ] \r \t \t e n d c a s e \r d 0060440 e f a u l t : \t i f f a m s e 0060460 e n & C o m p a r e I X ( d 0060500 , p r o t o ) t h e n b r e 0060520 a k \r \t ] \r ] r e p 376 001 \0 T 370 0060540 e a t \r \r \t l e t o w = P r e 0060560 P r e s s W i n d o w I n i t ( 0060600 - f , t r u e ) \r \t W i n d o w 0060620 S e t P o s i t i o n ( w , l v 0060640 d > > I X . s a ) \t / / G o 0060660 g e t i t . \r \t W r i t e I X 0060700 T e m p F i l e ( o w , f n , d 0060720 ) \r \t W i n d o w C o p y ( w , 0060740 o w , l v d > > I X . l e n ) 0060760 \r \t W i n d o w C l o s e ( w ) 0061000 \r \t W i n d o w C l o s e ( o w 0061020 , - 1 ) \r ] \r \r a n d \r \r \f / / 0061040 M e r g e D e l e t e - - f 0061060 o r t h e M E R G E , S U 0061100 P E R C E D E o r D E L E T 0061120 E c o m m a n d s \r / / f = 0061140 376 001 \0 322 271 1 , 2 , 3 0061160 m e r g e o r d e l e t e 0061200 s e g m e n t s o f S D , C 0061220 D , W D \r / / m e r g e f l a g 0061240 = : \r / / 0 \t D e l e t e 0061260 s e g m e n t m e n t i o n e 0061300 d i n c o m m a n d l i n 0061320 e . \r / / 1 \t S t a n d a r d 0061340 m e r g e ( a n y s t u f 0061360 f i n f i l e - f m e r 0061400 g e d i n t o f i l e f ) 0061420 \r / / 2 \t S u p e r c e d e 0061440 ( s a m e a s m e r g e , 0061460 b u t s p l i n e w i d t h 0061500 s i n f s u p e r c e d e 0061520 f i x e d \r / / \t \t v e r s i 0061540 o n s i 376 001 \0 313 251 n - f ) \r 0061560 \r \r M e r g e D e l e t e ( f , 0061600 m e r g e f l a g ) b e [ \r 0061620 \r \t l e t w = P r e P r e s s 0061640 W i n d o w I n i t ( f ) \t \t / 0061660 / B i g f i l e ( f i l e = 0061700 1 ) \r \t l e t w x = n i l \r \t 0061720 t e s t m e r g e f l a g t 0061740 h e n \r \t [ \t \t \t / / L o 0061760 o k f o r t h e f i l e 0062000 t o m e r g e f r o m \r \t 0062020 w x = P r e P r e s s W i n 0062040 d o w I n i t ( - f , f a l s e 0062060 ) / / L i t t l e f i l e 0062100 ( f i l e = 0 ) \r \t ] \r \t 0062120 o r u n l e s s C h e c k P 0062140 a r a m s ( g o t n 376 001 \0 267 r a 0062160 m e ) t h e n I l l C o m m 0062200 a n d ( ) \r \r \t l e t d = v e 0062220 c I X L M a x \r \t F i l l I X 0062240 ( d ) \t \t / / G e t p a r a m 0062260 e t e r s \r \r \r \t l e t w s = 0062300 P r e P r e s s W i n d o w I n 0062320 i t ( 0 ) / / S c r a t c h 0062340 f i l e \r \t l e t f o u n d i 0062360 t = f a l s e \t / / D i d w e 0062400 f i n d w h a t t h e u 0062420 s e r w a n t s ( d e l e t 0062440 e ) ? \r \t l e t f a m c o d e 0062460 = 0 \t \t / / M a x f a m i l y 0062500 n a m e c o d e s e e n \r 0062520 \t l e t I X D L i s t = 0 \t \t 0062540 / / L i s t o f I X ' s 376 0062560 001 \0 N D t o p r o c e s s \r \t 0062600 l e t e = v e c I X L M a x 0062620 \r \r \t l e t f f i l e = ( m e 0062640 r g e f l a g ? 0 , 1 ) \r \t f 0062660 o r f i l e = f f i l e t o 0062700 1 d o \r [ \t l e t w i = ( 0062720 f i l e e q 0 ) ? w x , w 0062740 \r \r [ \t i f W i n d o w E n d 0062760 ( w i ) t h e n b r e a k \t 0063000 / / I f n e w f i l e i s 0063020 e m p t y , . . . \r \t R e a d 0063040 I X ( w i , e ) \t \t / / R e a d 0063060 a n e n t r y \r \t s w i t c 0063100 h o n e > > I X H . T y p e 0063120 i n t o \r \t [ \r c a s e I X T 0063140 y p e E n d : \t b r e a k \t / / 0063160 D o n e 376 001 \0 002 : \r c a s e I 0063200 X T y p e N a m e : [ \r \t \t l 0063220 e t p = I X D L i s t \r \t \t w 0063240 h i l e p d o \r \t \t [ 0063260 \r \t \t l e t p t = l v 0063300 p > > I X D . I X \r \t \t i 0063320 f p t > > I X . T y p e e q 0063340 I X T y p e N a m e & \r \t \t 0063360 S t r E q ( l v e > > I 0063400 X N . N a m e , l v p t > > I 0063420 X N . N a m e ) t h e n \r \t \t 0063440 \t b r e a k \r \t \t p = p > 0063460 > I X D . n e x t \r \t \t ] 0063500 \r \t \t i f p e q 0 t h e 0063520 n \r \t \t [ \r \t \t p = 0063540 F S G e t X ( s i z e I X D / 0063560 1 6 + I X L N a m 376 001 \0 272 242 e ) 0063600 \r \t \t l e t p t = l v 0063620 p > > I X D . I X \r \t \t p 0063640 > > I X D . n e x t = I X D L i 0063660 s t \t / / L i n k i t i n \r 0063700 \t \t I X D L i s t = p \r \t 0063720 \t M o v e B l o c k ( p t 0063740 , e , I X L N a m e ) \r \t \t 0063760 p > > I X D . O l d C o d e 0 0064000 = - 1 \r \t \t p > > I X D . 0064020 O l d C o d e 1 = - 1 \t / / S o 0064040 w i l l n o t c o m p a r 0064060 e \r \t \t f a m c o d e = f 0064100 a m c o d e + 1 \r \t \t p t 0064120 > > I X N . C o d e = f a m c o 0064140 d e \t / / N e w c o d e \r \t \t 0064160 i f S t r E q ( f a 376 001 0064200 \0 9 261 m , l v e > > I X N . N 0064220 a m e ) t h e n d > > I X . 0064240 f a m = f a m c o d e \r \t \t 0064260 ] \r \t \t l e t t h i s c o d 0064300 e = e > > I X N . C o d e \t / / 0064320 O l d f a m c o d e \r \t \t t 0064340 e s t f i l e e q 0 \r \t \t 0064360 i f s o p > > I X D . O l d C 0064400 o d e 0 = t h i s c o d e \r \t \t 0064420 i f n o t p > > I X D . O l d 0064440 C o d e 1 = t h i s c o d e \r \t 0064460 \t ] \r \t \t e n d c a s e \r d e f 0064500 a u l t : \t [ \r \t \t l e t c o 0064520 p y i t = t r u e \r \t \t / / L o 0064540 o k f o r f a m i l y & 0064560 i n s t a l l n e w f a m i 0064600 l y 376 001 \0 # q c o d e . \r \t \t 0064620 l e t p = I X D L i s t \r \t \t 0064640 w h i l e p d o \r \t \t 0064660 [ \r \t \t l e t p t = l v 0064700 p > > I X D . I X \r \t \t 0064720 i f p t > > I X . T y p e e 0064740 q I X T y p e N a m e & \r \t 0064760 \t e > > I X . f a m 0065000 e q ( ( f i l e e q 0 ) ? 0065020 p > > I X D . O l d C o d e 0 0065040 , p > > I X D . O l d C o d e 1 0065060 ) \r \t \t \t t h e n [ e > > I 0065100 X . f a m = p t > > I X N . C o 0065120 d e ; b r e a k ] \r \t \t 0065140 p = p > > I X D . n e x t \r \t 0065160 \t ] \r \t \t i f m e r g e 0065200 f l a g e q 376 001 \0 R 016 0 & 0065220 f i l e e q 1 & C o m 0065240 p a r e I X ( e , d ) t h e n 0065260 \r \t \t [ c o p y i t = f 0065300 a l s e ; f o u n d i t = t r 0065320 u e ] \r \t \t / / L o o k t h 0065340 r o u g h e x i s t i n g o 0065360 n e s t o s e e i f t h 0065400 i s s h o u l d b e o m i 0065420 t t e d \r \t \t l e t p = I X D 0065440 L i s t \r \t \t w h i l e p d 0065460 o \r \t \t [ \r \t \t l e 0065500 t p t = l v p > > I X D . I 0065520 X \r \t \t i f p t > > I X 0065540 . T y p e e q e > > I X . T 0065560 y p e & \r \t \t p t 0065600 > > I X . f a m f a c e 376 001 \0 0065620 { 325 e q e > > I X . f a m f a 0065640 c e t h e n \r \t \t \t [ \r \t \t \t 0065660 i f C o m p a r e I X ( e , p 0065700 t ) % ( m e r g e f l a g 0065720 e q 2 & \r \t \t \t p t > > I 0065740 X . T y p e e q I X T y p e 0065760 W i d t h s & \r \t \t \t p t > 0066000 > I X . s i z e q 0 ) t h 0066020 e n \r \t \t \t [ \r \t \t \t 0066040 c o p y i t = f a l s e \r \t 0066060 \t \t b r e a k \r \t \t \t 0066100 ] \r \t \t \t ] \r \t \t p = p 0066120 > > I X D . n e x t \r \t \t 0066140 ] \r \t \t / / P u t o n l i s 0066160 t t o d o ! \r \t \t i f c o 0066200 p y i t t h e n \r \t \t [ 0066220 \r \t 376 001 \0 233 360 \t p = F S G 0066240 e t X ( s i z e I X D / 1 6 + 0066260 I X L M a x ) \r \t \t p > > 0066300 I X D . n e x t = I X D L i s t 0066320 \r \t \t p > > I X D . f i l 0066340 e = f i l e \r \t \t I X D L 0066360 i s t = p \r \t \t M o v e B 0066400 l o c k ( l v p > > I X D . I 0066420 X , e , I X L M a x ) \r \t \t 0066440 ] \r \t \t ] \r \t \t e n d c a s e 0066460 \r \t ] \r ] r e p e a t \r ] \t \t 0066500 \t \t \t / / F o r f i l e \r \r \t 0066520 W r i t e N e w H e a d e r s ( 0066540 w s , I X D L i s t ) \t / / G o 0066560 w r i t e t h e m . \r \r / / 0066600 N o w c o p y f r o m o r 0066620 i g i n a l 376 001 \0 z 211 f i l e 0066640 s t o s c r a t c h . \r \t l 0066660 e t p = I X D L i s t \r \t w h 0066700 i l e p d o \r \t [ \r \t 0066720 l e t p t = l v p > > 0066740 I X D . I X \r \t i f p t 0066760 > > I X . T y p e n e I X T 0067000 y p e N a m e t h e n \r \t \t [ 0067020 \r \t \t l e t i f i l e = ( ( p 0067040 > > I X D . f i l e e q 0 ) 0067060 ? w x , w ) \r \t \t W i n d o w 0067100 S e t P o s i t i o n ( i f i l 0067120 e , l v p t > > I X . s a ) \r 0067140 \t \t W i n d o w G e t P o s i t 0067160 i o n ( w s , l v p t > > I X 0067200 . s a ) \r \t \t W i n d o w C o p 0067220 y ( i f i l e , w s , l 376 001 \0 277 0067240 177 v p t > > I X . l e n ) \r \t 0067260 \t ] \r \t p = p > > I X D . 0067300 n e x t \r \t ] \r \r / / R e 0067320 m e m b e r t o t a l l e n 0067340 g t h \r \t l e t t l = v e c 0067360 1 ; W i n d o w G e t P o s i 0067400 t i o n ( w s , t l ) \r \r / / N 0067420 o w r e - w r i t e h e a d 0067440 e r s \r \t W r i t e N e w H e a 0067460 d e r s ( w s , I X D L i s t ) 0067500 \r \r / / N o w c o p y s c r 0067520 a t c h b a c k t o o r i 0067540 g i n a l \r \t l e t z e r o = 0067560 t a b l e [ 0 ; 0 ] \r \t W 0067600 i n d o w S e t P o s i t i o n 0067620 ( w , z e r o ) \r \t W i n d o w 0067640 S 376 001 \0 244 303 e t P o s i t i o n 0067660 ( w s , z e r o ) \r \t W i n d o 0067700 w C o p y ( w s , w , t l ) \r \t 0067720 W i n d o w C l o s e ( w , - 1 0067740 ) \r \t W i n d o w C l o s e ( w 0067760 s ) \r \t i f m e r g e f l a g 0070000 e q 0 & f o u n d i t 0070020 e q f a l s e t h e n T y 0070040 p e F o r m ( " C o u l d n o 0070060 t f i n d s p e c i f i e d 0070100 s e c t i o n t o d e l e 0070120 t e . * n " ) \r ] \r \r a n d W 0070140 r i t e N e w H e a d e r s ( w 0070160 , l i s t ) b e [ \r \t W i n 0070200 d o w S e t P o s i t i o n ( w 0070220 , t a b l e [ 0 ; 0 ] ) \r 0070240 / / W r i t 376 001 \0 262 363 e n a m 0070260 e s f i r s t \r \t l e t p = 0070300 l i s t \r \t w h i l e p d o 0070320 \r \t [ \r \t l e t p 0070340 t = l v p > > I X D . I X \r \t 0070360 i f p t > > I X . T y p 0070400 e e q I X T y p e N a m e 0070420 t h e n \r \t \t W r i t e I X ( w 0070440 , - 1 , p t ) \r \t p = p > 0070460 > I X D . n e x t \r \t ] \r 0070500 / / W r i t e I X e n t r i 0070520 e s \r \t p = l i s t \r \t w h i l 0070540 e p d o \r \t [ \r \t 0070560 l e t p t = l v p > > I X 0070600 D . I X \r \t i f p t > > 0070620 I X . T y p e n e I X T y p 0070640 e N a m e t h e n \r 376 001 \0 ) \r 0070660 \t \t W r i t e I X ( w , - 1 , p 0070700 t ) \r \t p = p > > I X D . 0070720 n e x t \r \t ] \r \t W r i t 0070740 e I X ( w , I X T y p e E n d ) 0070760 \t / / W r i t e t h e e n d 0071000 c o d e \r ] \r \r a n d \r \r \f / 0071020 / R e n a m e - - i n s t a 0071040 l l n e w f e a t u r e s 0071060 i n a " t e m p " f i l e 0071100 . \r \r R e n a m e ( f ) b e 0071120 [ \r \t l e t w f = P r e P r e 0071140 s s W i n d o w I n i t ( - f , 0071160 t r u e ) \t / / G e t t h e 0071200 f i l e , R W \r \t l e t f n 0071220 = v e c I X L N a m e \t \t / / 0071240 P l a c e f o r n a m e \r \t 0071260 376 001 \0 225 V l e t i x = v e c 0071300 I X L M a x \t \t \t / / a n d t 0071320 h i n g . \r \t R e a d I X T e m 0071340 p F i l e ( w f , f n , i x ) \r 0071360 \t i f ( p a r a m s & g o t n 0071400 a m e ) n e 0 t h e n \r 0071420 \t \t [ \r \t \t Z e r o ( f n , I X 0071440 L N a m e ) \r \t \t S t r C o p ( 0071460 f a m , l v f n > > I X N . N 0071500 a m e ) \r \t \t ] \r \t i f ( p a 0071520 r a m s & g o t f a c e ) n e 0071540 0 t h e n i x > > I X . f 0071560 a c e = f a c e \r \t i f ( p a 0071600 r a m s & g o t s i z e ) n e 0071620 0 t h e n i x > > I X . s 0071640 i z = s i z \r \t i f ( p a r a 0071660 m s & g o 376 001 \0 ` 030 t r o t a t 0071700 i o n ) n e 0 t h e n i 0071720 x > > I X . r o t a t i o n = r 0071740 o t a t i o n \r \t i f ( p a r 0071760 a m s & g o t r e s o l u t i o 0072000 n ) n e 0 t h e n \r \t \t [ 0072020 \r \t \t i x > > I X . r e s o l u 0072040 t i o n x = r e s o l u t i o n 0072060 x \r \t \t i x > > I X . r e s o l 0072100 u t i o n y = r e s o l u t i o 0072120 n y \r \t \t ] \r \t W i n d o w S e 0072140 t P o s i t i o n ( w f , t a b 0072160 l e [ 0 ; 0 ] ) \r \t W r i 0072200 t e I X T e m p F i l e ( w f , 0072220 f n , i x ) \r \t W i n d o w C l 0072240 o s e ( w f , 0 ) \r ] \r \r a n d 0072260 \r \r \f / / L I S T 376 001 \0 311 % c 0072300 o m m a n d p r o c e s s o r 0072320 . F i l e f i s l i s t 0072340 e d . \r \r L i s t ( f , f u l 0072360 l L i s t ) b e [ \r \t l e t 0072400 s t r p = n i l \r \t l e t s 0072420 w = P r e P r e s s W i n d o w 0072440 I n i t ( f , f a l s e , l v 0072460 s t r p ) \r \t l e t o a = v e 0072500 c 1 ; o a ! 0 = 0 ; o a ! 0072520 1 = 0 \r \t o u t s t r e a m = O 0072540 p e n F i l e ( " P r e p r e s 0072560 s . L s t " , k s T y p e W r 0072600 i t e O n l y , 1 ) / / r e 0072620 d i r e c t o u t p u t \r \t T 0072640 y p e F o r m ( " F i l e : " 0072660 , s t r p , 0 ) \r \r [ \t W i n 376 0072700 001 \0 M x d o w S e t P o s i t i 0072720 o n ( s w , o a ) \r \t l e t s 0072740 x = v e c I X L M a x \r \t R e 0072760 a d I X ( s w , s x ) \r \t W i n 0073000 d o w G e t P o s i t i o n ( s 0073020 w , o a ) \t / / S o w e m a 0073040 y g e t b a c k . \r \t l e t 0073060 b c = s x > > I X . b c \r \t l 0073100 e t e c = s x > > I X . e c \r 0073120 \t l e t n c = e c - b c + 1 \r 0073140 \r \t s w i t c h o n s x > > I 0073160 X H . T y p e i n t o \r \t [ \r 0073200 c a s e I X T y p e E n d : \t 0073220 b r e a k \r c a s e I X T y p 0073240 e N a m e : \r \t T y p e F o r m 0073260 ( " N a m e : " , l v s x > 0073300 > I X N 376 001 \0 : 246 . N a m e , " 0073320 . C o d e : " , 1 0 , s x > 0073340 > I X N . C o d e , 0 ) \r \t e n 0073360 d c a s e \r c a s e I X T y p 0073400 e S p l i n e s : \r \t [ \r \t T y 0073420 p e F o r m ( " S p l i n e s : 0073440 " ) \r \t P r i n t I X ( s x ) 0073460 \r \t i f f u l l L i s t t h 0073500 e n \r \t [ \r \t W i n d o w S e t 0073520 P o s i t i o n ( s w , l v s 0073540 x > > I X . s a ) \r \t f o r c 0073560 = b c t o e c d o \r \t 0073600 [ \r \t \t l e t p = v e c S 0073620 p l i n e W i d t h s i z e \r \t 0073640 \t W i n d o w R e a d B l o c k 0073660 ( s w , p , S p l i n e W i d t 0073700 h s i z e ) \r \t \t 376 001 \0 001 022 l e 0073720 t p w = l v p > > S p l i n 0073740 e W i d t h . W X \r \t \t u n l e 0073760 s s p w ! 0 e q 0 & p 0074000 w ! 1 e q - 1 t h e n \r \t 0074020 \t [ \t \t \t / / C h a r e x i s 0074040 t s . \r \t \t T y p e C h a r ( c 0074060 ) \r \t \t l e t q = p w \r \t \t f 0074100 o r i = 0 t o 5 d o \r \t 0074120 \t [ \r \t \t T y p e F 0074140 o r m ( 2 , q , $ * s ) ; q = 0074160 q + 2 \r \t \t ] \r \t \t T y p 0074200 e F o r m ( 0 ) \r \t \t i f ( p 0074220 a r a m s & g o t s i z e ) n 0074240 e 0 t h e n \r \t \t [ \r \t 0074260 \t F L D I ( 1 , s i z ) ; 0074300 F L D I ( 2 , r e s o l 376 001 0074320 \0 034 206 u t i o n x ) ; F L D I 0074340 ( 3 , 2 5 4 0 0 ) \r \t \t F 0074360 M L ( 1 , 2 ) ; F D V ( 1 , 3 0074400 ) \r \t \t T y p e F o r m ( " 0074420 " ) \r \t \t l e t 0074440 q = p w \r \t \t f o r i = 0074460 0 t o 5 d o \r \t \t \t [ \r \t 0074500 \t \t F L D ( 2 , q ) ; F M L 0074520 ( 2 , 1 ) \r \t \t \t T y p e F o 0074540 r m ( 2 , 2 , $ * s ) ; q = q 0074560 + 2 \r \t \t \t ] \r \t \t T y p e 0074600 F o r m ( 0 ) \r \t \t ] \r \t \t 0074620 ] \r \t ] \r \t ] \r \t ] \r \t e 0074640 n d c a s e \r c a s e I X T y 0074660 p e C h a r s : \r \t [ \r \t T y p 0074700 e F o r m ( " C h a r a c t e r 0074720 s : 376 001 \0 K 214 " ) \r \t P r i n 0074740 t I X ( s x ) \r \t i f f u l l 0074760 L i s t t h e n \r \t [ \r \t W i 0075000 n d o w S e t P o s i t i o n ( 0075020 s w , l v s x > > I X . s a ) 0075040 \r \t f o r c = b c t o e c 0075060 d o \r \t [ \r \t \t l e t 0075100 p = v e c C h a r W i d t h s 0075120 i z e \r \t \t W i n d o w R e a d 0075140 B l o c k ( s w , p , C h a r W 0075160 i d t h s i z e ) \r \t \t u n l e 0075200 s s p > > C h a r W i d t h . 0075220 H e q H N o n E x C o d e 0075240 t h e n \r \t \t [ \t \t \t / / C h a 0075260 r e x i s t s \r \t \t T y p e C 0075300 h a r ( c ) \r \t \t T y p e F o r 0075320 m ( 3 , l v p 376 001 \0 250 E > > C 0075340 h a r W i d t h . W X , # 4 0 , 0075360 3 , l v p > > C h a r W i d t 0075400 h . W Y , $ * s ) \r \t \t T y p e 0075420 F o r m ( 1 0 , p > > C h a r W 0075440 i d t h . X L , $ * s , 1 0 , p 0075460 > > C h a r W i d t h . Y B , $ 0075500 * s ) \r \t \t T y p e F o r m ( 1 0075520 0 , p > > C h a r W i d t h . W 0075540 , $ * s , 1 0 , p > > C h a r W 0075560 i d t h . H , 0 ) \r \t \t ] \r \t 0075600 ] \r \t ] \r \t ] \r \t e n d c a 0075620 s e \r c a s e I X T y p e W i 0075640 d t h s : \r \t [ \r \t T y p e F o 0075660 r m ( " W i d t h s : " ) \r \t 0075700 P r i n t I X ( s x ) \r \t i f 0075720 f u l l L i s t t h e n 376 001 \0 0075740 \r \t [ \r \t W i n d o w S e t 0075760 P o s i t i o n ( s w , l v s 0076000 x > > I X . s a ) \r \t l e t s 0076020 = v e c s i z e W T B / 1 6 0076040 \r \t W i n d o w R e a d B l o c 0076060 k ( s w , s , ( s i z e W T B 0076100 / 1 6 ) ) \r \t T y p e F o r m ( 0076120 " B o x : " ) \r \t f o r 0076140 i = 0 t o 3 d o T y p e 0076160 F o r m ( 1 0 , s ! i , # 4 0 ) 0076200 \r \t f o r w h a t = 0 t o 0076220 1 d o \r \t [ \r \t T y p e F o r 0076240 m ( ( w h a t ? " * N Y : 0076260 " , " * N X : " ) ) \r \t t e 0076300 s t ( ( w h a t ) ? s > > W 0076320 T B . Y W i d t h F i x e d , 0076340 s > 376 001 \0 r 246 > W T B . X W i d 0076360 t h F i x e d ) \r \t t h e 0076400 n T y p e F o r m ( 1 0 , W i 0076420 n d o w R e a d ( s w ) , 0 ) \r 0076440 \t o r [ f o r c 0076460 = b c t o e c d o \r \t \t [ 0076500 \r \t \t i f c g r # 3 7 t 0076520 h e n T y p e F o r m ( c ) \r 0076540 \t \t T y p e F o r m ( " ( # " , 0076560 8 , c , " ) " ) \r \t \t l e t 0076600 w i d = W i n d o w R e a d ( s 0076620 w ) \r \t \t t e s t w i d e q 0076640 # 1 0 0 0 0 0 \r \t \t i f s o 0076660 T y p e F o r m ( " x x x ; 0076700 " ) \r \t \t i f n o t T y p e F 0076720 o r m ( 1 0 , w i d , " ; " 0076740 ) \r \t \t i f 376 001 \0 211 200 ( c & 3 0076760 ) e q 3 t h e n T y p e 0077000 F o r m ( 0 ) \r \t \t ] \r \t \t T y 0077020 p e F o r m ( 0 ) \r \t 0077040 ] \r \t ] \r \t ] \r \t ] \r \t e n 0077060 d c a s e \r \r \t ] \t / / S w i t 0077100 c h o n \r \t T y p e F o r m ( 0 0077120 , 0 , 0 ) \r ] r e p e a t \r \t 0077140 C l o s e s ( o u t s t r e a m 0077160 ) \r \t o u t s t r e a m = 0 \t \t 0077200 / / N o m o r e r e d i r e 0077220 c t i o n \r \t W i n d o w C l o 0077240 s e ( s w ) \r ] \r \r a n d \r \r \f 0077260 / / W I D T H c o m m a n d 0077300 p r o c e s s o r . B u i l 0077320 d a f i l e W D t e m p 0077340 t h a t c o n t a i n 376 001 \0 211 0077360 240 s w i d t h \r / / i n f o 0077400 r m a t i o n . W i d t h i 0077420 n f o r m a t i o n i s e x 0077440 t r a c t e d f r o m f i l 0077460 e f . \r \r W i d t h C a l c ( 0077500 f ) b e [ \r \t l e t w = P 0077520 r e P r e s s W i n d o w I n i 0077540 t ( - f , f a l s e ) \r \t l e t 0077560 w w = P r e P r e s s W i n d 0077600 o w I n i t ( - 3 , t r u e ) \r 0077620 \r \t l e t f n = v e c I X L 0077640 N a m e \r \t l e t e = v e c 0077660 I X L M a x \r \t R e a d I X T e 0077700 m p F i l e ( w , f n , e ) \r \t 0077720 W i n d o w S e t P o s i t i o 0077740 n ( w , l v e > > I X . s a ) 0077760 \r 376 001 \0 025 f \t l e t t = e > > 0100000 I X H . T y p e \r \t l e t b c 0100020 = e > > I X . b c \r \t l e t e 0100040 c = e > > I X . e c \r \t l e t 0100060 n c = e c - b c + 1 \r \r \t l e t 0100100 f w t = v e c s i z e W T 0100120 B / 1 6 \t \t / / F o r f o n t 0100140 w i d t h b l o c k . \r \t M 0100160 o v e B l o c k ( f w t , t a b 0100200 l e [ 1 6 0 0 0 ; 1 6 0 0 0 0100220 ; - 1 6 0 0 0 ; - 1 6 0 0 0 ] 0100240 , 4 ) \r \r \t l e t w x = v e c 0100260 2 5 6 * 3 ; S e t B l o c k 0100300 ( w x , # 1 0 0 0 0 0 , 2 5 6 * 0100320 3 ) / / A l l n o n - e x i 0100340 s t e n t \r \t l e t w y = w x 0100360 + 2 5 6 \r \t 376 001 \0 365 6 l e t a 0100400 b s e n t = w y + 2 5 6 \r \r t e 0100420 s t t e q I X T y p e C h 0100440 a r s \r i f s o \t [ \r \t F L D I 0100460 ( 1 , 2 5 4 0 0 ) ; F L D I ( 2 0100500 , e > > I X . r e s o l u t i o 0100520 n x ) ; F D V ( 1 , 2 ) \r \t F L 0100540 D I ( 2 , 2 5 4 0 0 ) ; F L D I 0100560 ( 3 , e > > I X . r e s o l u t 0100600 i o n y ) ; F D V ( 2 , 3 ) \r \r 0100620 \t f o r c = b c t o e c 0100640 d o \r \t [ \r \t \t l e t p 0100660 = v e c C h a r W i d t h s i 0100700 z e \r \t \t W i n d o w R e a d B 0100720 l o c k ( w , p , C h a r W i d 0100740 t h s i z e ) \r \t \t u n l e s s 0100760 p > > C h a r W i d 376 001 \0 ] [ 0101000 t h . H e q H N o n E x C o 0101020 d e t h e n \r \t \t [ \r \t \t a b 0101040 s e n t ! c = f a l s e \r \t \t l 0101060 e t c 2 = c * 2 \r \t \t F L D D 0101100 P ( 3 , l v p > > C h a r W i 0101120 d t h . W X ) ; F M L ( 3 , 1 ) 0101140 ; w x ! c = F T R o u n d ( 3 0101160 ) \r \t \t F L D D P ( 3 , l v p 0101200 > > C h a r W i d t h . W Y ) ; 0101220 F M L ( 3 , 2 ) ; w y ! c = F 0101240 T R o u n d ( 3 ) \r \t \t F L D I 0101260 ( 3 , p > > C h a r W i d t h . 0101300 X L ) ; F L D I ( 4 , p > > C h 0101320 a r W i d t h . Y B ) \r \t \t F L 0101340 D I ( 5 , p > > C h a r W i d t 0101360 h . W ) ; F L D I ( 6 , p > > C 0101400 376 001 \0 ] 025 h a r W i d t h . H ) 0101420 \r \t \t F o n t M i n M a x ( 1 , 0101440 2 , f w t ) \r \t \t ] \r \t ] 0101460 \r \t ] \r i f n o t \t [ \r \t F L D 0101500 I ( 1 , 1 0 0 0 ) \r \r \t f o r 0101520 c = b c t o e c d o \r \t 0101540 [ \r \t \t l e t p = v e c 0101560 S p l i n e W i d t h s i z e \r 0101600 \t \t W i n d o w R e a d B l o c 0101620 k ( w , p , S p l i n e W i d t 0101640 h s i z e ) \r \t \t l e t p w = 0101660 l v p > > S p l i n e W i d t 0101700 h . W X \r \t \t u n l e s s p w 0101720 ! 0 e q 0 & p w ! 1 e 0101740 q - 1 t h e n \r \t \t [ \r \t \t 0101760 a b s e n t ! c = f a l s e \r \t 0102000 \t F L D ( 376 001 \0 020 K 2 , l v p 0102020 > > S p l i n e W i d t h . W X 0102040 ) ; F M L ( 2 , 1 ) ; w x ! c 0102060 = F T R o u n d ( 2 ) \r \t \t F L 0102100 D ( 2 , l v p > > S p l i n e 0102120 W i d t h . W Y ) ; F M L ( 2 , 0102140 1 ) ; w y ! c = F T R o u n d 0102160 ( 2 ) \r \t \t F L D ( 3 , l v p 0102200 > > S p l i n e W i d t h . X L 0102220 ) ; F L D ( 4 , l v p > > S 0102240 p l i n e W i d t h . Y B ) \r \t 0102260 \t F L D ( 5 , l v p > > S p l 0102300 i n e W i d t h . X R ) ; F L 0102320 D ( 6 , l v p > > S p l i n e 0102340 W i d t h . Y T ) \r \t \t F S B ( 0102360 5 , 3 ) ; F S B ( 6 , 4 ) \r \t 0102400 \t F o n t M i n M a 376 001 \0 005 025 x 0102420 ( 1 , 1 , f w t ) \r \t \t ] \r \t 0102440 ] \r \t ] \r \r \t W i n d o w C 0102460 l o s e ( w ) \r \r / / N o w d 0102500 e c i d e i f e i t h e r 0102520 x o r y w i d t h s a r 0102540 e t h e s a m e \r \t l e t 0102560 x w v , y w v = w x ! b c , w y 0102600 ! b c \r \t l e t x s a m e , y 0102620 s a m e = t r u e , t r u e \r \r 0102640 \t f o r c = b c t o e c 0102660 d o u n l e s s a b s e n t 0102700 ! c t h e n \r \t \t [ \r \t \t i f 0102720 w x ! c n e x w v t h e 0102740 n x s a m e = f a l s e \r \t \t 0102760 i f w y ! c n e y w v t 0103000 h e n y s a m e = f a l s e 376 0103020 001 \0 303 \f \r \t \t ] \r \t f w t > > W 0103040 T B . X W i d t h F i x e d = x 0103060 s a m e \r \t f w t > > W T B . Y 0103100 W i d t h F i x e d = y s a m e 0103120 \r \r / / N o w w r i t e t h 0103140 e f i l e \r \t e > > I X H . T 0103160 y p e = I X T y p e W i d t h s 0103200 \r \t W r i t e I X T e m p F i l 0103220 e ( w w , f n , e , \r \t ( 0103240 s i z e W T B / 1 6 ) + ( ( x 0103260 s a m e ) ? 1 , n c ) + ( ( y 0103300 s a m e ) ? 1 , n c ) ) \r \t W 0103320 i n d o w W r i t e B l o c k ( 0103340 w w , f w t , ( s i z e W T B 0103360 / 1 6 ) ) \r \t t e s t x s a m 0103400 e t h e n W i n d o w W r i 0103420 t e ( w 376 001 \0 + 3 w , x w v ) 0103440 o r \r \t \t W i n d o w W r i t e 0103460 B l o c k ( w w , w x + b c , n 0103500 c ) \r \t t e s t y s a m e t 0103520 h e n W i n d o w W r i t e ( 0103540 w w , y w v ) o r \r \t \t W i n 0103560 d o w W r i t e B l o c k ( w w 0103600 , w y + b c , n c ) \r \t W i n d 0103620 o w C l o s e ( w w , - 1 ) \r ] 0103640 \r \r a n d \r \r F o n t M i n M a 0103660 x ( s x , s y , m i n m a x ) 0103700 b e [ \r \t f o r i = 0 t o 0103720 3 d o \r \t [ \r \t \t l e 0103740 t a c = 3 + i \r \t \t F M L ( a 0103760 c , ( ( ( i & 1 ) e q 0 ) ? 0104000 s x , s y ) ) \r \t \t l e t v 0104020 = F T R ( a c ) \r 376 001 \0 031 032 \t \t 0104040 t e s t i l e 1 t h e n 0104060 \r \t \t [ i f v l s m i n 0104100 m a x ! i t h e n m i n m a 0104120 x ! i = v ] \r \t \t o r \r \t \t [ 0104140 i f v g r m i n m a x ! 0104160 i t h e n m i n m a x ! i = 0104200 v ] \r \t ] \r ] \r \r a n d 0104220 \r \r F i l l I X ( s ) b e [ 0104240 \r \t s > > I X . f a c e = f a c 0104260 e \r \t s > > I X . s i z = s i z 0104300 \r \t s > > I X . r o t a t i o n 0104320 = r o t a t i o n \r \t s > > I X 0104340 . r e s o l u t i o n x = r e s 0104360 o l u t i o n x \r \t s > > I X . 0104400 r e s o l u t i o n y = r e s o 0104420 l u t i o n y \r ] \r \r a n d 376 \0 0104440 _ ` 305 F T R o u n d ( a c ) 0104460 = v a l o f [ \r \t F L D D P 0104500 ( 3 1 , t a b l e [ 0 ; 0104520 # 1 0 0 0 0 0 ] ) / / . 5 0104540 \r \t F A D ( 3 1 , a c ) \r \t r 0104560 e s u l t i s F T R ( 3 1 ) \r 0104600 ] \r 377 \0 \0 f o n t w i d t h s . 0104620 b c p l \0 376 001 \0 n z / / F O 0104640 N T W I D T H S 0104660 - - p u b l i c l y d i s 0104700 t r i b u t e d f i l e . 0104720 ( P R E P R E S S ) \r / / c a 0104740 t a l o g n u m b e r ? ? ? 0104760 \r / / E n c o d e F a c e ( w e 0105000 i g h t , s l o p e , e x p a n 0105020 s i o n ) = > 8 - b i t f 0105040 a c e c o d e . \r / / \t A n 0105060 e n t r y t h a t i s o m 0105100 i t t e d o r m a d e z e 0105120 r o i s d e f a u l t e d . 0105140 \r / / \t A r g u m e n t s a r 0105160 e u p p e r c a s e l e t 0105200 t e r s ( e . g . M R R 0105220 ) \r / / D e c o d e 376 001 \0 # G F 0105240 a c e ( f a c e , l v w e i g h 0105260 t , l v s l o p e , l v e x p a 0105300 n s i o n ) \r / / \t T a k e s 0105320 8 - b i t f a c e c o d e 0105340 a n d r e t u r n s t h e 0105360 t h r e e d e s c r i p t i v 0105400 e \r / / \t l e t t e r s . \r / / 0105420 L o o k u p F o n t N a m e ( s 0105440 , n a m e , f a c e , s i z e , 0105460 r o t a t i o n , b u f x , b u 0105500 f y , b o u n d b o x \r / / \t \t 0105520 [ , b u f f e r l e n g t h , l 0105540 v p ] ) \r / / \t L o o k s u p 0105560 t h e f o n t n a m e d 0105600 b y n a m e ( s t r i n g ) , 0105620 f a c e ( e n c o d e d a s 376 0105640 001 \0 275 245 a b o v e ) , \r \n / / 0105660 \t s i z e ( < 0 = > m i c r o 0105700 n s , > 0 = > p o i n t s 0105720 ) , r o t a t i o n ( m i n u 0105740 t e s ) . R e t u r n s \r / 0105760 / \t t r u e i f m a t c h 0106000 e x i s t s , f a l s e o t 0106020 h e r w i s e . " s " i s 0106040 a s t r e a m \r / / \t w i t 0106060 h F O N T S . W I D T H S o 0106100 p e n o n i t . " b u f 0106120 x " a n d " b u f y " w i 0106140 l l b e f i l l e d \r / / \t 0106160 w i t h x a n d y w i d 0106200 t h s r e s p e c t i v e l 0106220 y ( i n d e x e d b y c h 0106240 a r c 376 001 \0 247 M o d e ) . \r / 0106260 / \t " b o u n d b o x " i s 0106300 a 4 - w o r d v e c t o r 0106320 t o r e c e i v e t h e b 0106340 o u n d i n g b o x \r / / \t ( 0106360 r o t a t i o n s o f b o u 0106400 n d i n g b o x a r e n o 0106420 t p e r f o r m e d ! ) \r / / 0106440 \t " b u f f e r l e n g t h " 0106460 i s t h e l e n g t h o f 0106500 t h e b u f f e r ( 2 5 6 0106520 i f o m i t t e d ) . \r / / 0106540 \t " l v p " i s f i l l e d 0106560 @ w i t h f a m i l y c 0106600 o d e ( m a y b e o m i t 0106620 t e d ) \r / / C a l c u l a t e 0106640 W i d t h s ( b e 376 001 \0 021 i s t 0106660 , s , s i z , r o t , b o u n d 0106700 b o x , b u f x , b u f y , b u 0106720 f l ) \r / / \t I f y o u h a 0106740 v e a f i l e y o u w a 0106760 n t t o r e a d b y h a 0107000 n d , u s e t h i s p r o 0107020 c . \r / / \t b e s t i s a n 0107040 I X e n t r y t o g e t 0107060 w i d t h s f r o m ; s 0107100 i s t h e f i l e ; r o t 0107120 \r / / \t i s t h e r o t a t 0107140 i o n y o u d e s i r e ; 0107160 b o u n d b o x i s a v e 0107200 c 4 t h a t w i l l b e 0107220 \r / / \t f i l l e d w i t h 0107240 t h e b o u n d i n g b 376 001 0107260 \0 \n 204 o x ; b u f x a n d 0107300 b u f y a r e a s f o r \r 0107320 / / \t L o o k u p F o n t N a m 0107340 e \r / / M u l D i v ( a , b , c 0107360 ) = > a * b / c \r / / \t M u 0107400 l t i p l y a n d s c a l e 0107420 . A l l a r g u m e n t s 0107440 p o s i t i v e 1 6 - b i t 0107460 n u m b e r s . \r / / \t M a i 0107500 n t a i n s m a x i m u m p 0107520 r e c i s i o n . \r / / S i g n 0107540 e d M u l D i v ( a , b , c ) \r 0107560 / / \t S a m e a s M u l D i 0107600 v , b u t w i l l h a n d 0107620 l e s i g n e d n u m b e r 0107640 s . \r / / C o s ( t h e t a , l 0107660 v s i 376 001 \0 217 { g n , l v m a g 0107700 ) \r / / \t C o m p u t e s t h 0107720 e c o s i n e o f t h e 0107740 a n g l e " t h e t a " ( i 0107760 n m i n u t e s ) a n d \r / 0110000 / \t r e t u r n s s i g n ( 0110020 0 i f p o s i t i v e , - 0110040 1 i f n e g a t i v e ) a 0110060 n d m a g n i t u d e \r / / \t 0110100 ( 0 t o # 1 7 7 7 7 7 ) \r \r 0110120 \r g e t " i x . d f s " \r \r / 0110140 / o u t g o i n g p r o c e 0110160 d u r e s \r e x t e r n a l \r \t 0110200 [ \r \t E n c o d e F a c e \r \t L 0110220 o o k u p F o n t N a m e \r \t C 0110240 a l c u l a t e W i d t h s \r \t 0110260 D e c o d e F a 376 001 \0 F G c e \r 0110300 \t G e n L o o k u p \r \t M u l D 0110320 i v \r \t S i g n e d M u l D i v 0110340 \r \t C o s \r \t ] \r \r / / o u t 0110360 g o i n g s t a t i c s \r / / 0110400 e x t e r n a l \r / / \t [ \r / / 0110420 \t ] \r / / s t a t i c \r / / \t [ 0110440 \r / / \t ] \r \r / / i n c o m i 0110460 n g p r o c e d u r e s \r e x 0110500 t e r n a l \r \t [ \r \t M o v e B 0110520 l o c k ; S e t B l o c k ; Z 0110540 e r o \r \t G e t s \r \t R e a d B 0110560 l o c k \r \t R e s e t s \r \t P o 0110600 s i t i o n P a g e \r \t P o s i 0110620 t i o n P t r \r \t ] \r \r / / i 0110640 n c o m i n g s t a t i c s \r 0110660 / / e x t e r n a l \r / / 376 001 \0 0110700 274 204 \t [ \r / / \t ] \r \r / / i n 0110720 t e r n a l s t a t i c s \r / 0110740 / s t a t i c \r / / \t [ \r / / \t 0110760 ] \r \r / / F i l e - w i d e 0111000 s t r u c t u r e a n d m a 0111020 n i f e s t d e c l a r a t i 0111040 o n s . \r \r s t r u c t u r e 0111060 S T R : [ \r \t b y t ^ 0 , 2 0111100 5 5 b y t e \r \t ] \r \r / / P 0111120 r o c e d u r e s \r \r l e t \r \r 0111140 E n c o d e F a c e ( w e i g h 0111160 t , s l o p e , e x p a n s i o 0111200 n ; n u m a r g s n ) = 0111220 v a l o f [ \r \t f o r i = 2 0111240 t o n b y - 1 d o ( 0111260 l v w e i g h t ) ! i = 0 \r \t 0111300 l e 376 001 \0 o 274 t w = ( s e l e 0111320 c t o n w e i g h t i n t o 0111340 [ \r \t \t c a s e 0 : \r \t \t c 0111360 a s e $ M : 0 \r \n \t \t c a s 0111400 e $ B : 2 \r \t \t c a s e $ 0111420 L : 4 \r \t \t d e f a u l t : 0111440 - 1 0 0 ] ) + \r \t 0111460 ( s e l e c t o n s l o p e 0111500 i n t o [ \r \t \t c a s e 0 : 0111520 \r \t \t c a s e $ R : 0 \r \t \t 0111540 c a s e $ I : 1 \r \t \t d e f 0111560 a u l t : - 1 0 0 ] ) + \r 0111600 \t ( s e l e c t o n 0111620 e x p a n s i o n i n t o [ 0111640 \r \t \t c a s e 0 : \r \t \t c a s 0111660 e $ R : 0 \r \t \t c a s e $ 0111700 C : 6 \r \t \t 376 001 \0 , 224 c a s e 0111720 $ E : 1 2 \r \t \t d e f a u l 0111740 t : - 1 0 0 ] ) \r \t i f w 0111760 l s 0 t h e n r e s u l 0112000 t i s - 1 \r \t r e s u l t i s 0112020 w \r ] \r \r a n d \r \r D e c o d 0112040 e F a c e ( f a c e , w , s , e 0112060 ) b e [ \r \t @ s = ( t a b l 0112100 e [ $ R ; $ I ] ) ! ( f 0112120 a c e & 1 ) \r \t f a c e = f a c 0112140 e r s h i f t 1 \r \t @ w = ( 0112160 t a b l e [ $ M ; $ B ; 0112200 $ L ] ) ! ( f a c e r e m 0112220 3 ) \r \t f a c e = f a c e / 3 \r 0112240 \t @ e = ( t a b l e [ $ R ; 0112260 $ C ; $ E ] ) ! ( f a c e 0112300 r e m 3 ) \r ] \r \r a 376 001 \0 j 0112320 , n d \r \r L o o k u p F o n t N 0112340 a m e ( s , f a m s t r , f a c 0112360 e , s i z , r o t , b u f x , b 0112400 u f y , b o u n d b o x , b u f 0112420 l , l v p ; n u m a r g s n 0112440 a ) = v a l o f [ \r \t s i 0112460 z = ( s i z l s 0 ) ? - s 0112500 i z , M u l D i v ( s i z , 6 3 0112520 5 , 1 8 ) \t / / p o i n t s t 0112540 o m i c r o n s \r \t i f n a 0112560 e q 8 t h e n b u f l = 0112600 2 5 6 \r \t R e s e t s ( s ) \r \t 0112620 l e t p = v e c I X L M a x 0112640 \r [ \t f w R e a d I X ( s , p ) 0112660 \t \t / / R e a d a n I X e 0112700 n t r y \r \t i f p > > I X H . 0112720 T 376 001 \0 374 376 y p e e q I X T 0112740 y p e E n d t h e n r e s u 0112760 l t i s f a l s e \r \t i f p 0113000 > > I X H . T y p e e q I X 0113020 T y p e N a m e t h e n \r \t \t 0113040 [ \r \t \t l e t f n d = t r u e 0113060 \r \t \t l e t s t r = l v p > 0113100 > I X N . N a m e \r \t \t f o r 0113120 i = 0 t o s t r > > S T R . 0113140 b y t ^ 0 d o \r \t \t i f ( 0113160 ( s t r > > S T R . b y t ^ i 0113200 x o r f a m s t r > > S T R . 0113220 b y t ^ i ) & ( n o t # 4 0 ) 0113240 ) n e 0 t h e n \r \t \t \t \t 0113260 f n d = f a l s e \r \t \t i f f 0113300 n d t h e n b r e a k \r \t \t 0113320 ] \r ] r e 376 001 \0 352 | p e a t \r 0113340 \t l e t f a m = p > > I X N . 0113360 C o d e \r \t i f n a e q 1 0113400 0 t h e n @ l v p = f a m \r 0113420 \t l e t f o u n d = f a l s e 0113440 \r \t l e t b e s t = v e c I 0113460 X L M a x \r [ \t f w R e a d I X 0113500 ( s , p ) \r \t i f p > > I X H 0113520 . T y p e e q I X T y p e E 0113540 n d t h e n b r e a k \r \t i 0113560 f p > > I X H . T y p e e q 0113600 I X T y p e W i d t h s t h 0113620 e n \r \t \t i f p > > I X . f a 0113640 m e q f a m & \r \t \t 0113660 p > > I X . f a c e e q f a 0113700 c e & \r \t \t ( ( p > > I 0113720 X . s i z e q s i 376 001 \0 225 \a 0113740 z & p > > I X . r o t a t i 0113760 o n e q r o t ) % \r \t \t 0114000 ( p > > I X . s i z e q 0114020 0 ) ) t h e n \r \t \t \t [ \r 0114040 \t \t \t i f f o u n d e q f 0114060 a l s e % p > > I X . s i z 0114100 n e 0 t h e n \r \t \t \t \t M 0114120 o v e B l o c k ( b e s t , p , 0114140 I X L M a x ) \r \t \t \t f o u n d 0114160 = t r u e \r \t \t \t ] \r ] r e p 0114200 e a t \r \t u n l e s s f o u n 0114220 d t h e n r e s u l t i s 0114240 f a l s e \r \t C a l c u l a t e 0114260 W i d t h s ( b e s t , s , s i 0114300 z , r o t , b o u n d b o x , b 0114320 u f x , b u f y , b u f l ) \r \t 0114340 376 001 \0 0 6 r e s u l t i s t r 0114360 u e \r ] \r \r a n d \r \r C a l c u 0114400 l a t e W i d t h s ( b e s t , 0114420 s , s i z , r o t , b o u n d b 0114440 o x , b u f x , b u f y , b u f 0114460 l ) b e \r [ \r \t S e t B l o c 0114500 k ( b u f x , - 1 , b u f l ) \r 0114520 \t S e t B l o c k ( b u f y , - 0114540 1 , b u f l ) \r / / P o s i t i 0114560 o n s t o r e a d w i d 0114600 t h t a b l e \r \t l e t p = 0114620 l v b e s t > > I X . s a \t \t 0114640 / / D P a d d r e s s o f 0114660 f o n t p a r t . \r \t P o s i 0114700 t i o n P a g e ( s , ( p ! 0 0114720 l s h i f t 8 ) + ( p ! 1 r 0114740 s h i f t 376 001 \0 232 004 8 ) + 1 ) 0114760 \r \t P o s i t i o n P t r ( s , 0115000 ( ( p ! 1 & # 3 7 7 ) l s h i 0115020 f t 1 ) ) \r \t l e t w t = v 0115040 e c s i z e W T B / 1 6 \r \t 0115060 R e a d B l o c k ( s , w t , ( 0115100 s i z e W T B / 1 6 ) ) \r \t M 0115120 o v e B l o c k ( b o u n d b o 0115140 x , w t , 4 ) \t \t / / E x t r a 0115160 c t t h e b o u n d i n g 0115200 b o x i n f o \r \t l e t b c 0115220 = b e s t > > I X . b c \r \t l e 0115240 t e c = b e s t > > I X . e c 0115260 \r \t i f b u f l l s b c 0115300 t h e n r e t u r n \t \t / / 0115320 y e s b u t . . . \r \t l e t 0115340 e c b = ( e c g 376 001 \0 213 215 e 0115360 b u f l ) ? b u f l , e c \r 0115400 \r / / N o w r e a d e i t h 0115420 e r o n e w o r d o r a 0115440 n u m b e r o f w o r d s 0115460 f o r t h e w i d t h s . 0115500 \r \t f o r i = 0 t o 1 d 0115520 o \r \t [ \r \t l e t b u f p = 0115540 ( l v b u f x ) ! i + b c \r \t 0115560 t e s t ( ( i e q 0 ) ? 0115600 w t > > W T B . X W i d t h F 0115620 i x e d , w t > > W T B . Y W i 0115640 d t h F i x e d ) \r \t i f s o 0115660 \t [ \r \t \t l e t v = G e t s ( 0115700 s ) \r \t \t S e t B l o c k ( b u 0115720 f p , v , e c b - b c + 1 ) \r \t 0115740 \t ] \r \t i f n o t \t [ \r \t \t 376 0115760 001 \0 306 5 R e a d B l o c k ( s , 0116000 b u f p , e c b - b c + 1 ) \r \t 0116020 \t ] \r \t ] \r \r / / N o w d o 0116040 s c a l i n g i f n e e d e 0116060 d . \r \t i f b e s t > > I X . 0116100 s i z n e 0 t h e n r e 0116120 t u r n \r \t f o r i = b c t 0116140 o e c b d o i f b u f x 0116160 ! i n e # 1 0 0 0 0 0 t h 0116200 e n \r \t \t [ \r \t \t b u f x ! i = 0116220 M u l D i v ( b u f x ! i , s i 0116240 z , 1 0 0 0 ) \r \t \t b u f y ! i 0116260 = M u l D i v ( b u f y ! i , s 0116300 i z , 1 0 0 0 ) \r \t \t ] \r \t f o 0116320 r i = 0 t o 3 d o \r \t \t 0116340 b o u n d b o x ! i = S i g n e 0116360 d M u l 376 001 \0 N 374 D i v ( b o u 0116400 n d b o x ! i , s i z , 1 0 0 0 0116420 ) \r \r / / A n d r o t a t i o 0116440 n i f n e e d e d . \r \t i f 0116460 r o t e q 0 t h e n r 0116500 e t u r n \r \t l e t c m , c s 0116520 , s m , s s = n i l , n i l , n 0116540 i l , n i l \r \t C o s ( r o t , 0116560 l v c s , l v c m ) \t \t \t / 0116600 / G e t c o s i n e \r \t C o s 0116620 ( r o t - 9 0 * 6 0 , l v s s 0116640 , l v s m ) \t \t / / a n d s 0116660 i n e \r \t f o r i = b c t o 0116700 e c b d o i f b u f x ! 0116720 i n e # 1 0 0 0 0 0 t h e 0116740 n \r \t \t [ \r \t \t l e t t = M u 0116760 l D i v ( b u f x 376 001 \0 t % ! i 0117000 , c m , # 1 7 7 7 7 7 ) \r \t \t i 0117020 f c s t h e n t = - t \r \t 0117040 \t l e t s = M u l D i v ( b u 0117060 f y ! i , s m , # 1 7 7 7 7 7 ) 0117100 \r \t \t u n l e s s s s t h e 0117120 n s = - s \r \t \t l e t x = t 0117140 + s \r \t \t t = M u l D i v ( b u 0117160 f y ! i , c m , # 1 7 7 7 7 7 ) 0117200 \r \t \t i f c s t h e n t = 0117220 - t \r \t \t s = M u l D i v ( b u 0117240 f x ! i , s m , # 1 7 7 7 7 7 ) 0117260 \r \t \t i f s s t h e n s = 0117300 - s \r \t \t b u f x ! i = x \r \t \t 0117320 b u f y ! i = t + s \r \t \t ] \r ] 0117340 \r \r a n d \r \r f w R e a d I X ( 0117360 s , p ) b e [ \r \t l e t 376 001 0117400 \0 335 n a = G e t s ( s ) \t \t / 0117420 / T y p e w o r d . \r \t p ! 0 0117440 = a \r \t l e t l = p > > I X H 0117460 . L e n g t h \r \t i f l t h 0117500 e n R e a d B l o c k ( s , p 0117520 + 1 , l - 1 ) \r ] \r \r a n d \r \r 0117540 M u l D i v ( a , b , c ) = 0117560 v a l o f [ \r / / R e t u r 0117600 n s a * b / c u s i n g 0117620 u n s i g n e d a r i t h m e 0117640 t i c . \r M u l D i v = t a 0117660 b l e [ \r \t # 5 5 0 0 1 \t / / 0117700 S T A 3 , 1 , 2 \r \t # 1 5 5 0117720 0 0 0 / / M O V 2 , 3 0117740 s a v e s t a c k p o i n t 0117760 e r \r \t # 1 1 1 0 0 0 / / M 0120000 O V 376 001 \0 o & 0 , 2 a \r \t 0120020 # 2 1 4 0 3 \t / / L D A 0 , 0120040 3 , 3 \r \t # 1 0 1 2 2 0 \t / / 0120060 M O V Z R 0 , 0 \t c / 2 \r \t # 0120100 6 1 0 2 0 / / M U L \r \t # 0120120 3 1 4 0 3 / / L D A 2 , 0120140 3 , 3 c \r \t # 6 1 0 2 1 / 0120160 / D I V \r \t # 1 0 1 0 1 0 / 0120200 / M O V # 0 , 0 \r \t # 1 2 0120220 1 0 0 0 / / M O V 1 , 0 \r 0120240 \t # 1 7 1 0 0 0 / / M O V 0120260 3 , 2 \r \t # 3 5 0 0 1 \t / / L 0120300 D A 3 , 1 , 2 \r \t # 1 4 0 1 \t 0120320 / / J M P 1 , 3 \r \t ] \r \t r 0120340 e s u l t i s M u l D i v ( a 0120360 , b , c ) \r ] \r \r a n d \r \r S i 0120400 g n e d M u l D 376 001 \0 d + i v ( 0120420 a , b , c ) = v a l o f [ 0120440 \r \t l e t s g n = a x o r 0120460 b x o r c \t / / S i g n b 0120500 i t \r \t l e t a b s ( x ) = ( 0120520 x g e 0 ? x , - x ) \r \t l 0120540 e t r e s = M u l D i v ( a b 0120560 s ( a ) , a b s ( b ) , a b s ( 0120600 c ) ) \r \t r e s u l t i s ( s 0120620 g n l s 0 ? - r e s , r e 0120640 s ) \r ] \r \r a n d \r \r C o s ( t 0120660 h e t a , l v s i g n , l v m a 0120700 g ) b e [ \r / / C a l c u l 0120720 a t e t h e c o s i n e o 0120740 f t h e g i v e n a n g l 0120760 e , a n d r e t u r n t h 0121000 e \r / / m a g n i t u d 376 001 \0 0121020 314 205 e a s a f r a c t i o 0121040 n o f # 1 7 7 7 7 7 ( l a 0121060 r g e s t n u m b e r ) \r / / 0121100 A l s o r e t u r n s i g 0121120 n ( 0 i f p o s i t i v e 0121140 , - 1 i f n e g a t i v e 0121160 ) \r \r \t i f t h e t a l s 0121200 0 t h e n t h e t a = - t h 0121220 e t a \r \t @ l v s i g n = - ( ( 0121240 ( t h e t a + 9 0 * 6 0 ) / ( 1 0121260 8 0 * 6 0 ) ) & 1 ) \r \t l e t 0121300 d = t h e t a r e m 9 0 * 6 0121320 0 \r \t i f ( ( t h e t a / ( 9 0121340 0 * 6 0 ) ) & 1 ) n e 0 t 0121360 h e n d = 9 0 * 6 0 - d \r \t l 0121400 e t m i n = d r e m 6 0 \t 0121420 \t \t 376 001 \0 202 z / / M i n u t e s 0121440 p a r t \r \t d = d / 6 0 \t \t \t 0121460 \t / / D e g r e e s p a r t \r 0121500 / / N o w d i n r a n g e 0121520 0 - 9 0 d e g r e e s \r \r \t 0121540 l e t r e t r i e v e c o s ( 0121560 d , m i n ) = v a l o f [ \t 0121600 / / 0 l e d l e 4 5 \r \t 0121620 \t l e t c o s a r = t a b l e 0121640 [ \r \t \t # 1 7 7 7 7 7 ; \r \t \t 0121660 # 1 7 7 7 6 5 ; # 1 7 7 7 2 7 0121700 ; # 1 7 7 6 4 5 ; # 1 7 7 5 0121720 3 7 ; # 1 7 7 4 0 5 ; \r \t \t 0121740 # 1 7 7 2 2 7 ; # 1 7 7 0 2 6 0121760 ; # 1 7 6 6 0 1 ; # 1 7 6 3 0122000 3 0 ; # 1 7 6 0 3 3 ; \r \t \t 0122020 # 1 7 5 5 1 2 376 001 \0 030 035 ; # 1 0122040 7 5 1 4 6 ; # 1 7 4 5 5 7 ; 0122060 # 1 7 4 1 4 4 ; # 1 7 3 5 0 5 0122100 ; \r \t \t # 1 7 3 0 2 4 ; # 1 0122120 7 2 3 1 7 ; # 1 7 1 5 6 7 ; 0122140 # 1 7 1 0 1 4 ; # 1 7 0 2 1 6 0122160 ; \r \t \t # 1 6 7 3 7 6 ; # 1 0122200 6 6 5 3 2 ; # 1 6 5 6 4 5 ; 0122220 # 1 6 4 7 3 5 ; # 1 6 4 0 0 2 0122240 ; \r \t \t # 1 6 3 0 2 6 ; # 1 0122260 6 2 0 3 0 ; # 1 6 1 0 0 7 ; 0122300 # 1 5 7 7 4 6 ; # 1 5 6 6 6 2 0122320 ; \r \t \t # 1 5 5 5 5 6 ; # 1 0122340 5 4 4 3 0 ; # 1 5 3 2 6 2 ; 0122360 # 1 5 2 0 7 2 ; # 1 5 0 6 6 3 0122400 ; \r \t \t # 1 4 7 4 3 2 ; # 1 0122420 4 6 1 6 2 ; # 1 4 4 6 376 001 \0 < 0122440 277 7 2 ; # 1 4 3 3 6 2 ; # 1 0122460 4 2 0 3 2 ; \r \t \t # 1 4 0 4 6 0122500 3 ; # 1 3 7 0 7 5 ; # 1 3 5 0122520 4 7 1 ; # 1 3 4 0 4 5 ; # 1 0122540 3 2 4 0 5 ; \r \t \t # 1 3 0 7 4 0122560 3 ; \t / / 4 6 d e g r e e s 0122600 b e c a u s e o f i n t e r 0122620 p o l a t i o n \r \t \t ] \r \r \t \t 0122640 l e t a = c o s a r ! d \t \t / 0122660 / F i r s t a n s w e r \r \t \t 0122700 i f m i n n e 0 t h e n 0122720 \t / / M u s t i n t e r p o l 0122740 a t e \r \t \t [ \r \t \t l e 0122760 t b = c o s a r ! ( d + 1 ) \r 0123000 \t \t a = a - M u l D i v ( a 0123020 - b , m i n , 6 0 ) \t / / C a r 0123040 e 376 001 \0 227 a f u l a b o u t 0123060 s i g n s \r \t \t ] \r \t \t r e 0123100 s u l t i s a \r \t ] \r \r \t t e 0123120 s t d g r 4 5 t h e n \r 0123140 \t \t [ \t \t \t / / U s e h a l f 0123160 - a n g l e f o r m u l a e \r 0123200 \t \t i f ( d & 1 ) n e 0 0123220 t h e n m i n = m i n + 6 0 0123240 / / D i v i d e a n g l e b 0123260 y 2 \r \t \t l e t a = r e t r 0123300 i e v e c o s ( d r s h i f t 0123320 1 , m i n r s h i f t 1 ) 0123340 \r \t \t a = M u l D i v ( a , a , 0123360 # 1 7 7 7 7 7 ) \t / / c o s ^ 0123400 2 ( t h e t a / 2 ) \r \t \t a = a 0123420 - # 1 0 0 0 0 0 \t \t / / c o s 0123440 ^ 2 - 1 / 376 \0 L 271 ~ 2 \r \t \t @ 0123460 l v m a g = a l s h i f t 1 0123500 \t / / 2 c o s ^ 2 - 1 \r \t \t 0123520 ] \r \t o r \t @ l v m a g = r e t 0123540 r i e v e c o s ( d , m i n ) \r 0123560 \t \r ] \r \r \r \r 377 \0 \0 g r o w . b 0123600 c p l \0 376 001 \0 < B / / G R 0123620 O W ( P R E P R E S S ) \r 0123640 / / c a t a l o g n u m b e 0123660 r ? ? ? \r / / \r / / G R O W 0123700 c o m m a n d i s u s e d 0123720 t o " b o l d e n " c h a r 0123740 a c t e r s , o r t o " s 0123760 h r i n k " c h a r a c t e r 0124000 s \r / / v i a s i m p l e 0124020 i m a g e p r o c e s s i n g 0124040 f u n c t i o n s . \r \r g e t 0124060 " i x . d f s " \r \r / / o u 0124100 t g o i n g p r o c e d u r e 0124120 s \r e x t e r n a l \r \t [ \r \t G 0124140 r o w \r \t ] \r \r / / o u t g o 0124160 i n g s t a t i c s \r / / e x 0124200 t e r n a l \r / / 376 001 \0 304 346 \t [ 0124220 \r / / \t ] \r / / s t a t i c \r / 0124240 / \t [ \r / / \t ] \r \r / / i n c 0124260 o m i n g p r o c e d u r e s 0124300 \r e x t e r n a l \r \t [ \r / / W 0124320 I N D O W \r \t W i n d o w R e a 0124340 d \r \t W i n d o w R e a d B l o 0124360 c k \r \t W i n d o w W r i t e \r 0124400 \t W i n d o w W r i t e B l o c 0124420 k \r \t W i n d o w G e t P o s i 0124440 t i o n \r \t W i n d o w S e t P 0124460 o s i t i o n \r \t W i n d o w F 0124500 l u s h \r \t W i n d o w C o p y 0124520 \r \t W i n d o w C l o s e \r \r / 0124540 / M A P C D T E M P \r \t M a p C 0124560 D t e m p \r \r / / P R E P R E S 0124600 S U T I L \r \t F S G e t X \r 376 001 0124620 \0 002 ) \t F S P u t \r \r / / O S \r 0124640 \t N o o p \r \t Z e r o \r \t S e t 0124660 B l o c k \r \t M o v e B l o c k 0124700 \r \t ] \r \r / / i n c o m i n g 0124720 s t a t i c s \r e x t e r n a 0124740 l \r \t [ \r \t p a r a m s \r \t r e 0124760 s o l u t i o n x \r \t ] \r \r / / 0125000 i n t e r n a l s t a t i c 0125020 s \r / / s t a t i c \r / / \t [ \r 0125040 / / \t ] \r \r / / F i l e - w i 0125060 d e s t r u c t u r e a n d 0125100 m a n i f e s t d e c l a r 0125120 a t i o n s . \r \r / / G r o w 0125140 c o m m a n d - - i f g r 0125160 o w f l a g i s t r u e , 0125200 t h i s i s t o g r o w ; 0125220 e l 376 001 \0 \b " s e s h r i n 0125240 k . \r / / A r g u m e n t i 0125260 s p a s s e d v i a / d 0125300 s w i t c h . \r \r l e t G r o 0125320 w ( g r o w f l a g ) b e \r [ 0125340 \r \t l e t a r g = v e c 3 \r 0125360 \t a r g ! 0 = g r o w f l a g \r 0125400 \t l e t a m t = r e s o l u t 0125420 i o n x \r \t i f ( p a r a m s 0125440 & g o t r e s o l u t i o n ) 0125460 e q 0 t h e n a m t = 1 \r 0125500 \t a r g ! 1 = a m t \r \r \t M a p 0125520 C D t e m p ( N o o p , G r o 0125540 w F n , a r g ) \r ] \r \r a n d 0125560 G r o w F n ( p , s i , s 0125600 o , a r g ) b e \r [ \r \t l e 0125620 t g r o w f l 376 001 \0 s ~ a g = 0125640 a r g ! 0 \r \t l e t a m t = a 0125660 r g ! 1 \r \r \t l e t b u f = 0 0125700 \r \t l e t a = W i n d o w R e 0125720 a d ( s i ) \t \t / / F H E A D \r 0125740 \t l e t n s = a < < F H E A D 0125760 . n s \r \t l e t h w = a < < F 0126000 H E A D . h w \r \r \t l e t n e 0126020 w h i g h w o r d = n i l \r \t l 0126040 e t n e w h i g h = p > > C h 0126060 a r W i d t h . H \r \t i f n e 0126100 w h i g h t h e n \r \t \t [ \t \t 0126120 \t / / N o t a s p a c e \r \t 0126140 \t l e t n e w n s = n s \r \t \t 0126160 i f g r o w f l a g t h e n 0126200 \r \t \t \t [ \r \t \t \t n e w h i g h 0126220 = n e w h i g h + 2 * a m 376 001 \0 0126240 p 226 t \r \t \t \t n e w n s = n e w 0126260 n s + 2 * a m t \r \t \t \t ] \r \t \t 0126300 n e w h i g h w o r d = ( n e w 0126320 h i g h + 1 5 ) / 1 6 \r \t \t l e 0126340 t w c = n e w h i g h w o r d 0126360 * n e w n s \r \t \t b u f = F S G 0126400 e t X ( w c ) \t \t / / E n u f 0126420 r o o m \r \t \t Z e r o ( b u f , 0126440 w c ) \r \t \t f o r s = 0 t 0126460 o n s - 1 d o W i n d o w 0126500 R e a d B l o c k ( s i , b u 0126520 f + s * n e w h i g h w o r d , 0126540 h w ) \r \t \t f o r i = 1 t 0126560 o a m t d o \r \t \t \t [ \r \t \t 0126600 \t G r o w O n e ( b u f , n e 0126620 w n s , n e w h i g h w o r d 0126640 , 376 001 \0 200 7 p , ( g r o w f 0126660 l a g ? 1 , - 1 ) ) \r \t \t \t ] 0126700 \r \t \t i f p > > C h a r W i d 0126720 t h . W l e 0 % p > > C 0126740 h a r W i d t h . H l e 0 0126760 t h e n \r \t \t \t [ \t \t / / E x h 0127000 a u s t e d ! \r \t \t \t p > > C h 0127020 a r W i d t h . W = 0 \r \t \t \t p 0127040 > > C h a r W i d t h . H = 0 \r 0127060 \t \t \t p > > C h a r W i d t h . 0127100 X L = 0 \r \t \t \t p > > C h a r W 0127120 i d t h . Y B = 0 \r \t \t \t ] \r \t 0127140 \t ] \t \t \t / / N o t a s p a 0127160 c e \r \t h w = ( p > > C h a r W 0127200 i d t h . H + 1 5 ) / 1 6 \r \t n 0127220 s = p > > C h a r W i d t h . W 0127240 \r \t a < < F H 376 001 \0 \r \0 E A D . 0127260 n s = n s \r \t a < < F H E A D . 0127300 h w = h w \r \t W i n d o w W r i 0127320 t e ( s o , a ) \r \t f o r s 0127340 = 0 t o n s - 1 d o W i 0127360 n d o w W r i t e B l o c k ( s 0127400 o , b u f + s * n e w h i g h 0127420 w o r d , h w ) \r \t i f b u 0127440 f t h e n F S P u t ( b u f 0127460 ) \r ] \r \r \f / / G r o w O n e 0127500 ( a m t = 1 ) o r s h r i n 0127520 k ( a m t = - 1 ) o n e b 0127540 i t . b u f p o i n t s 0127560 t o b u f f e r t h a t \r / 0127600 / h a s " l i n e s " l i 0127620 n e s o f " w o r d s " w 0127640 o r d s e a c h . 376 001 \0 320 0127660 247 p i s p o i n t e r t o 0127700 C h a r W i d t h \r / / s t 0127720 r u c t u r e t o u p d a t 0127740 e . \r \r a n d G r o w O n e ( 0127760 b u f , l i n e s , w o r d 0130000 s , p , a m t ) b e \r [ \r 0130020 \t l e t w c = w o r d s * l i 0130040 n e s \r \t l e t w c m 1 = w c 0130060 - 1 \r \t l e t W o r k B u f = 0130100 F S G e t X ( w c ) \r \t l e t 0130120 R e s B u f = F S G e t X ( w c 0130140 ) \t \t / / R e s u l t b u f f 0130160 e r \r \t i f a m t g r 0 0130200 t h e n \t \t / / G r o w - - 0130220 m u s t m a k e \r \t \t [ \t \t \t 0130240 / / r o o m f o r n e w 0130260 b 376 001 \0 310 200 i t s . \r \t \t S h i 0130300 f t C h a r ( 4 , b u f , W 0130320 o r k B u f , l i n e s , w 0130340 o r d s ) \r \t \t S h i f t C h a 0130360 r ( 2 , W o r k B u f , b u 0130400 f , l i n e s , w o r d s ) 0130420 \r \t \t ] \r \t M o v e B l o c k ( 0130440 R e s B u f , b u f , w c ) 0130460 \t \t / / S t a r t w i t h o 0130500 r i g i n a l \r \t f o r d i r 0130520 e c t i o n = 1 t o 4 d o 0130540 \r \t \t [ \r \t \t S h i f t C h a r 0130560 ( d i r e c t i o n , b u f , 0130600 W o r k B u f , l i n e s , 0130620 w o r d s ) \r \t \t t e s t a 0130640 m t g r 0 \r \t \t i f s o f 0130660 o r i = 0 376 001 \0 342 2 t o w 0130700 c m 1 d o R e s B u f ! i = 0130720 R e s B u f ! i % W o r k B 0130740 u f ! i \r \t \t i f n o t f o r 0130760 i = 0 t o w c m 1 d o 0131000 R e s B u f ! i = R e s B u f ! 0131020 i & W o r k B u f ! i \r \t \t 0131040 ] \r \t u n l e s s a m t g r 0131060 0 t h e n \t \t / / S h r i n 0131100 k - - m o v e d o w n o 0131120 v e r n o w \r \t \t [ \t \t \t / / 0131140 b l a n k b i t s \r \t \t S h 0131160 i f t C h a r ( 3 , R e s B u 0131200 f , W o r k B u f , l i n e 0131220 s , w o r d s ) \r \t \t S h i f 0131240 t C h a r ( 1 , W o r k B u f 0131260 , R e s B u f , l 376 001 \0 336 ! 0131300 i n e s , w o r d s ) \r \t \t ] 0131320 \r \t M o v e B l o c k ( b u f , 0131340 R e s B u f , w c ) \t \t / / 0131360 S t o r e b a c k i n b u 0131400 f f e r \r \t F S P u t ( W o r k 0131420 B u f ) \r \t F S P u t ( R e s B 0131440 u f ) \r \r / / N o w f i x w 0131460 i d t h e n t r i e s \r \t p > 0131500 > C h a r W i d t h . W = p > > 0131520 C h a r W i d t h . W + 2 * a m 0131540 t \r \t p > > C h a r W i d t h . 0131560 H = p > > C h a r W i d t h . H 0131600 + 2 * a m t \r \t p > > C h a r W 0131620 i d t h . X L = p > > C h a r W 0131640 i d t h . X L - a m t \r \t p > > 0131660 C h a r W i d t h . Y B = p > > 0131700 376 001 \0 343 202 C h a r W i d t h . Y 0131720 B - a m t \r ] \r \r \f / / S h i f 0131740 t C h a r : h o w i s : 0131760 1 ( t o l e f t ) ; 2 ( 0132000 t o r i g h t ) ; 3 ( t o 0132020 b o t t o m ) ; 4 ( t o 0132040 t o p ) . \r / / s r c c h a 0132060 r a c t e r i s s h i f t e 0132100 d o n e b i t i n g i v 0132120 e n d i r e c t i o n , s t 0132140 o r e d i n d e s t \r / / 0132160 c h a r . l i n e s a n d 0132200 w o r d s a r e p a r a m 0132220 e t e r s o f e n c o d i n 0132240 g . T h e r e i s n o h 0132260 a r m i f \r / / s r c = d e 0132300 s t . \r \r 376 001 \0 $ & a n d S h 0132320 i f t C h a r ( h o w , s r c 0132340 , d e s t , l , w ) b e 0132360 \r [ \r \t l e t w m 1 = w - 1 \r 0132400 \t l e t l m 1 = l - 1 \r \t l e 0132420 t f i l l b i t s = 0 \t \t \t / 0132440 / o r - 1 \r \t s w i t c h o n 0132460 h o w i n t o [ \r \r c a s 0132500 e 1 : \t \t \t \t \t / / O n e b 0132520 i t t o l e f t \r \t [ \r \t f 0132540 o r i = 0 t o l - 2 d o 0132560 M o v e B l o c k ( d e s t + 0132600 i * w , s r c + i * w + w , 0132620 w ) \r \t S e t B l o c k ( d e s 0132640 t + l m 1 * w , f i l l b i t 0132660 s , w ) \r \t ] \r \t e n d c a s 0132700 e \r c a s e 2 : \t 376 001 \0 z W \t 0132720 \t \t \t / / O n e b i t t o 0132740 r i g h t \r \t [ \r \t f o r i = 0132760 l m 1 t o 1 b y - 1 d 0133000 o M o v e B l o c k ( d e s t 0133020 + i * w , s r c + i * w - w , 0133040 w ) \r \t S e t B l o c k ( d e 0133060 s t , f i l l b i t s , w ) 0133100 \r \t ] \r \t e n d c a s e \r c a s 0133120 e 3 : \t \t \t \t \t / / O n e b 0133140 i t d o w n \r \t [ \r \t f o r 0133160 i = 0 t o l m 1 d o \r \t \t 0133200 [ \r \t \t l e t p w = f i l l b 0133220 i t s \r \t \t f o r j = w m 1 0133240 t o 0 b y - 1 d o \r \t \t 0133260 \t [ \r \t \t \t d e s t ! j = ( s r 0133300 c ! j l s h i f t 1 ) + ( 376 0133320 001 \0 030 333 p w r s h i f t 1 5 0133340 ) \r \t \t \t p w = s r c ! j \r \t \t 0133360 \t ] \r \t \t d e s t = d e s t + w 0133400 \r \t \t s r c = s r c + w \r \t \t ] 0133420 \r \t ] \r \t e n d c a s e \r c a s 0133440 e 4 : \t \t \t \t \t / / O n e b 0133460 i t u p \r \t [ \r \t f o r i = 0133500 0 t o l m 1 d o \r \t \t [ \r 0133520 \t \t l e t p w = f i l l b i t 0133540 s \r \t \t f o r j = 0 t o w 0133560 m 1 d o \r \t \t \t [ \r \t \t \t d e 0133600 s t ! j = ( s r c ! j r s h i 0133620 f t 1 ) + ( p w l s h i f t 0133640 1 5 ) \r \t \t \t p w = s r c ! j 0133660 \r \t \t \t ] \r \t \t d e s t = d e s 0133700 t + w \r \t \t s r c = s r c + w \r 0133720 \t \t ] \r 376 \0 020 ` 341 \t ] \r \t e n d 0133740 c a s e \r ] \r ] \r 377 \0 \0 i m p o 0133760 s e w i d t h s . b c p l \0 376 001 0134000 \0 030 212 / / I M P O S 0134020 E W I D T H S ( 0134040 P R E P R E S S ) \r / / c a t 0134060 a l o g n u m b e r ? ? ? \r 0134100 / / \r / / R e a d t h e W 0134120 D t e m p f i l e f o r a 0134140 l i s t o f w i d t h s , 0134160 a n d " i m p o s e " t h 0134200 e m \r / / o n t h e S D t 0134220 e m p o r C D t e m p f i 0134240 l e , s e l o n t h e a r 0134260 g u m e n t t o I m p o s e 0134300 W i d t h s \r / / U s e d f 0134320 o r m a k i n g f o n t s 0134340 t h a t " m a t c h " p h o 0134360 t o t y p e s e t t e r f o 0134400 n t s 376 001 \0 227 P . \r \r g e t " 0134420 i x . d f s " \r \r / / o u t g 0134440 o i n g p r o c e d u r e s \r 0134460 e x t e r n a l \r \t [ \r \t I m p 0134500 o s e W i d t h s \r \t ] \r \r / / 0134520 o u t g o i n g s t a t i c 0134540 s \r / / e x t e r n a l \r / / \t 0134560 [ \r / / \t ] \r / / s t a t i c \r 0134600 / / \t [ \r / / \t ] \r \r / / i n 0134620 c o m i n g p r o c e d u r e 0134640 s \r e x t e r n a l \r \t [ \r / / 0134660 W I N D O W \r \t W i n d o w R e 0134700 a d \r \t W i n d o w R e a d B l 0134720 o c k \r \t W i n d o w W r i t e 0134740 B l o c k \r \t W i n d o w G e t 0134760 P o s i t i o n \r \t W i n d o w 0135000 S e t P o s i t 376 001 \0 245 025 i o n 0135020 \r \t W i n d o w C l o s e \r \r / 0135040 / P R E P R E S S \r \t R e a d I 0135060 X T e m p F i l e \r \t P r e P r 0135100 e s s W i n d o w I n i t \r \r / 0135120 / U T I L \r \t S c r e a m \r \t I 0135140 l l C o m m a n d \r \t F S G e t 0135160 X \r \t F S P u t \r \r / / O S \r \t 0135200 S e t B l o c k \r \r / / F L O A 0135220 T \r \t F L D I ; F D V ; F M 0135240 L ; F T R ; F S T ; F S T 0135260 D P ; F L D \r \t ] \r \r / / i 0135300 n c o m i n g s t a t i c s \r 0135320 / / e x t e r n a l \r / / \t [ \r 0135340 / / \t ] \r \r / / i n t e r n a 0135360 l s t a t i c s \r / / s t a t 0135400 i c \r / / \t [ \r / / \t ] \r 376 001 \0 0135420 226 025 \r / / F i l e - w i d e 0135440 s t r u c t u r e a n d m a 0135460 n i f e s t d e c l a r a t i 0135500 o n s . \r \r \r / / P r o c e d 0135520 u r e s \r \r l e t I m p o s e 0135540 W i d t h s ( f T y p e ) b e 0135560 \r [ \r \r / / G e t w i d t h s 0135600 f i l e : \r \t l e t s w = P 0135620 r e P r e s s W i n d o w I n i 0135640 t ( - 3 ) \t \t / / W D t e m p \r 0135660 \t l e t f n w = v e c I X L 0135700 N a m e \r \t l e t i x w = v e 0135720 c I X L M a x \r \t R e a d I X 0135740 T e m p F i l e ( s w , f n w 0135760 , i x w ) \r \t l e t n c w = 0136000 i x w > > I X . e c - i x w > > 0136020 I X 376 001 \0 246 215 . b c + 1 \r \t l e 0136040 t b b w = v e c s i z e W 0136060 T B / 1 6 \r \t W i n d o w R e a 0136100 d B l o c k ( s w , b b w , 0136120 s i z e W T B / 1 6 ) \r \t l e 0136140 t x W i d t h V e c = v e c 0136160 2 5 6 \r \t l e t y W i d t h V 0136200 e c = v e c 2 5 6 \r \t f o r 0136220 i = 0 t o 1 d o \r \t \t [ \r 0136240 \t \t l e t p = ( i e q 0 ) 0136260 ? x W i d t h V e c , y W i d 0136300 t h V e c \r \t \t t e s t ( ( i 0136320 e q 0 ) ? b b w > > W T B 0136340 . X W i d t h F i x e d , b b 0136360 w > > W T B . Y W i d t h F i x 0136400 e d ) \r \t \t i f s o S e t B l 0136420 o c k ( p , 376 001 \0 305 302 W i n d 0136440 o w R e a d ( s w ) , n c w ) 0136460 \r \t \t i f n o t W i n d o w R 0136500 e a d B l o c k ( s w , p , 0136520 n c w ) \r \t \t ] \r \t W i n d o w 0136540 C l o s e ( s w ) \r \r / / G e t 0136560 C D t e m p o r S D t e m 0136600 p \r \t l e t s i = P r e P r e 0136620 s s W i n d o w I n i t ( - f T 0136640 y p e ) \r \t l e t f n = v e c 0136660 I X L N a m e \r \t l e t i x 0136700 = v e c I X L M a x \r \t R e a 0136720 d I X T e m p F i l e ( s i , 0136740 f n , i x ) \r \r / / N o w c 0136760 o m p u t e s c a l e f a c 0137000 t o r s : x i n 3 , y 0137020 i n 4 \r \t t e s t f 376 001 \0 T 0137040 J T y p e e q 2 t h e n \t 0137060 \t / / I m p o s i n g o n s 0137100 p l i n e w i d t h s \r \t \t [ 0137120 \r \t \t F L D I ( 3 , 1 ) ; F 0137140 L D I ( 4 , 1 0 0 0 ) ; F D 0137160 V ( 3 , 4 ) ; F L D ( 4 , 0137200 3 ) \t / / 1 / 1 0 0 0 \r \t \t i 0137220 f i x w > > I X . s i z n e 0137240 0 t h e n S c r e a m ( " 0137260 C a n n o t i m p o s e a b 0137300 s o l u t e w i d t h s o n 0137320 s p l i n e s " ) \r \t \t ] \r \t 0137340 o r t e s t f T y p e e q 0137360 1 t h e n \r \t \t [ \r \t \t F L 0137400 D I ( 3 , 1 ) ; F L D I ( 4 0137420 , 1 ) \r \t \t i f i x w > > I 0137440 X 376 001 \0 Z 300 . s i z e q 0 0137460 t h e n \r \t \t \t [ \r \t \t \t F L D 0137500 I ( 1 , i x > > I X . s i z ) 0137520 \t / / M i c a s \r \t \t \t F L D I 0137540 ( 2 , 1 0 0 0 ) \r \t \t \t F D V 0137560 ( 1 , 2 ) \t \t \t / / S i z e 0137600 / 1 0 0 0 \r \t \t \t F L D I ( 2 , 0137620 2 5 4 0 0 ) \t / / 2 5 4 0 * 0137640 1 0 ( b e c a u s e r e s o 0137660 l u t i o n i s x 1 0 ) \r 0137700 \t \t \t F D V ( 1 , 2 ) \r \t \t \t 0137720 F L D I ( 3 , i x > > I X . r 0137740 e s o l u t i o n x ) ; F M L 0137760 ( 3 , 1 ) \r \t \t \t F L D I ( 4 0140000 , i x > > I X . r e s o l u t 0140020 i o n y ) ; F M L ( 4 , 1 ) 0140040 \r \t \t \t ] \r 376 001 \0 < 337 \t \t ] \r \t 0140060 \t o r I l l C o m m a n d ( ) 0140100 \r \r \t l e t f p = v e c 1 \r 0140120 \t W i n d o w G e t P o s i t i 0140140 o n ( s i , f p ) \t \t / / R e 0140160 m e m b e r f o r r e - w r 0140200 i t i n g \r \t l e t n c = i x 0140220 > > I X . e c - i x > > I X . b 0140240 c + 1 \r \t l e t w S i z = ( ( 0140260 f T y p e e q 1 ) ? C h a 0140300 r W i d t h s i z e , S p l i 0140320 n e W i d t h s i z e ) \r \t l e 0140340 t t l = n c * w S i z \r \t l e 0140360 t W D = F S G e t X ( t l ) \r 0140400 \t W i n d o w R e a d B l o c k 0140420 ( s i , W D , t l ) \r \r \t f 0140440 o r c = i x > > I X 376 001 \0 F 356 0140460 . b c t o i x > > I X . e c 0140500 d o \r \t \t [ \r \t \t l e t p = 0140520 ( c - i x > > I X . b c ) * w S 0140540 i z + W D \r \t \t l e t c h a r 0140560 A b s e n t = n i l \r \t \t t e s 0140600 t f T y p e e q 1 t h e 0140620 n c h a r A b s e n t = ( p > 0140640 > C h a r W i d t h . H e q 0140660 H N o n E x C o d e ) \r \t \t o 0140700 r c h a r A b s e n t = ( p ! 0140720 0 e q 0 ) & ( p ! 1 e q 0140740 - 1 ) \r \r \t \t u n l e s s c h 0140760 a r A b s e n t t h e n \r \t \t 0141000 [ \r \t \t l e t x W i d t h = # 0141020 1 0 0 0 0 0 \r \t \t l e t y W i 0141040 d t h = # 1 0 0 0 0 0 \r \t \t l e 0141060 376 001 \0 306 254 t r e l C = c - i x 0141100 w > > I X . b c \r \t \t i f r e 0141120 l C g e 0 & r e l C l 0141140 s n c w t h e n \r \t \t \t x W 0141160 i d t h , y W i d t h = x W i d 0141200 t h V e c ! r e l C , y W i d 0141220 t h V e c ! r e l C \r \t \t i f 0141240 x W i d t h n e # 1 0 0 0 0 0141260 0 & y W i d t h n e # 1 0141300 0 0 0 0 0 t h e n \r \t \t \t [ \r 0141320 \t \t \t F L D I ( 1 , x W i d t 0141340 h ) ; F M L ( 1 , 3 ) \r \t \t 0141360 \t F L D I ( 2 , y W i d t h ) 0141400 ; F M L ( 2 , 4 ) \r \t \t \t t 0141420 e s t f T y p e e q 1 \r \t 0141440 \t \t i f s o \t [ \r \t \t \t \t F S T 0141460 D P ( 1 , 376 001 \0 1 244 l v p > 0141500 > C h a r W i d t h . W X ) \r \t 0141520