$ od -c -N 50000 [_CDMiwok_01_]<bonsai2.0>cedar>release>CII>ciiicecream.c!2
0000000 / * c i i i c e c r e a m . c
0000020 \n * * C o p y r i g h t 323
0000040 1 9 9 0 , 1 9 9 3 b y X e
0000060 r o x C o r p o r a t i o n .
0000100 A l l r i g h t s r e s
0000120 e r v e d . \n * * M i c h a e
0000140 l P l a s s , S e p t e m b
0000160 e r 2 8 , 1 9 9 3 1 1 : 3
0000200 4 a m P D T \n * / \n # d e f
0000220 i n e T E S T V E R S I O N \n
0000240 # i n c l u d e " c i i . h "
0000260 \n # i n c l u d e " c i i _ m
0000300 a t r i x . h " \n \n s t a t i c
0000320 v o i d \n S h a p e 1 ( C I I
0000340 _ P a t h G e n e r a t o r s
0000360 e l f , C I I _ P a t h S i n
0000400 k s i n k ) \n { \n \t C I I _ R
0000420 e c t a n g l e R e p * r e c
0000440 t = s e l f - > d a t a ; \n
0000460 \t C I I _ V e c t o r R e p p
0000500 ; \n \t C I I _ V e c t o r R e p
0000520 c [ 3 ] ; \n \t p . x = r e
0000540 c t - > x ; \n \t p . y = r e
0000560 c t - > y ; \n \t C I I _ M o v e
0000600 T o ( s i n k , & p ) ; \n \t c
0000620 [ 0 ] . x = r e c t - > x ;
0000640 \n \t c [ 0 ] . y = r e c t -
0000660 > y + r e c t - > h ; \n \t c
0000700 [ 1 ] . x = r e c t - > x
0000720 + r e c t - > w ; \n \t c [ 1 ]
0000740 . y = r e c t - > y + r
0000760 e c t - > h ; \n \t c [ 2 ] . x
0001000 = r e c t - > x + r e c t
0001020 - > w ; \n \t c [ 2 ] . y = r
0001040 e c t - > y ; \n \t C I I _ C u r
0001060 v e T o ( s i n k , c ) ; \n }
0001100 \n \n f l o a t r e d [ 3 ]
0001120 = { 1 . 0 , 0 . 0 , 0 .
0001140 0 } ; \n f l o a t g r e e n [
0001160 3 ] = { 0 . 0 , 1 . 0 ,
0001200 0 . 0 } ; \n f l o a t b l u e
0001220 [ 3 ] = { 0 . 0 , 0 . 0
0001240 , 1 . 0 } ; \n \n f l o a t c
0001260 o n e R G B [ 3 ] = { 0 . 4
0001300 , 0 . 3 , 0 . 2 5 } ; \n f l o a
0001320 t s t r o k e R G B [ 3 ] =
0001340 { 0 . 0 , 0 . 0 , 0 . 1 } ; \n
0001360 \t \n s t a t i c C I I _ R E S
0001400 \n C o n e P a t h ( C I I _ P a
0001420 t h G e n e r a t o r s e l f
0001440 , C I I _ P a t h S i n k s
0001460 i n k ) \n { \n \t C I I _ V e c t
0001500 o r R e p p 0 = { 7 0 . 0
0001520 , 7 5 . 0 } ; \n \t C I I _ V e
0001540 c t o r R e p p 1 = { 5 0
0001560 . 0 , 2 5 . 0 } ; \n \t C I I _
0001600 V e c t o r R e p p 2 = {
0001620 3 0 . 0 , 7 5 . 0 } ; \n \t C I
0001640 I _ M o v e T o ( s i n k , &
0001660 p 0 ) ; \n \t C I I _ L i n e T o
0001700 ( s i n k , & p 1 ) ; \n \t C I
0001720 I _ L i n e T o ( s i n k , &
0001740 p 2 ) ; \n } \n \n s t a t i c C
0001760 I I _ R E S \n I c e C r e a m P
0002000 a t h ( C I I _ P a t h G e n e
0002020 r a t o r s e l f , C I I _
0002040 P a t h S i n k s i n k ) \n {
0002060 \n \t C I I _ V e c t o r R e p
0002100 p 0 = { 3 0 . 0 , 7 5 . 0
0002120 } ; \n \t C I I _ C o n i c C o n
0002140 t r o l R e p c 1 = { { 5
0002160 0 . 0 , 2 5 . 0 } , { 7 0 .
0002200 0 , 7 5 . 0 } , 0 . 1 } ; \n
0002220 \t C I I _ V e c t o r R e p c
0002240 2 [ 3 ] = { { 8 0 . 0 , 8
0002260 0 . 0 } , { 8 0 . 0 , 9 0 .
0002300 0 } , { 7 2 . 0 , 8 7 . 0 }
0002320 } ; \n \t C I I _ C o n i c C o n
0002340 t r o l R e p c 3 = { { 8
0002360 8 . 8 4 0 9 3 , 1 2 2 . 0 } ,
0002400 { 5 0 . 0 , 1 2 2 . 0 } ,
0002420 0 . 3 4 7 3 3 1 4 } ; \n \t C I I
0002440 _ C o n i c C o n t r o l R e p
0002460 c 4 = { { 1 1 . 1 5 9 0 8
0002500 , 1 2 2 . 0 } , { 2 8 . 0 ,
0002520 8 7 . 0 } , 0 . 3 4 7 3 3 1
0002540 5 } ; \n \t C I I _ C o n i c C o
0002560 n t r o l R e p c 5 = { {
0002600 1 5 . 0 , 9 0 . 0 } , { 3 0
0002620 . 0 , 7 5 . 0 } , 0 . 5 } ;
0002640 \n \t C I I _ M o v e T o ( s i n
0002660 k , & p 0 ) ; \n \t C I I _ C o
0002700 n i c T o ( s i n k , & c 1 )
0002720 ; \n \t C I I _ C u r v e T o ( s
0002740 i n k , c 2 ) ; \n \t C I I _ C
0002760 o n i c T o ( s i n k , & c 3
0003000 ) ; \n \t C I I _ C o n i c T o (
0003020 s i n k , & c 4 ) ; \n \t C I I
0003040 _ C o n i c T o ( s i n k , &
0003060 c 5 ) ; \n } \n \n s t a t i c v
0003100 o i d \n I c e C r e a m C o n e
0003120 ( d e v , m p , f l a v o r
0003140 ) \n \t C I I _ H a n d l e d e
0003160 v ; \n \t f l o a t m p [ ] ; \n
0003200 \t f l o a t f l a v o r [ ] ;
0003220 \n { \n \t C I I _ S t r o k e C o
0003240 n t r o l R e p s t r o k e
0003260 = C I I _ I N I T I A L S T R
0003300 O K E C O N T R O L ; \n \t C I I
0003320 _ P a t h G e n e r a t o r O b
0003340 j e c t R e p p ; \n \t s t r o
0003360 k e . s t r o k e T y p e =
0003400 C I I _ C L O S E D _ S T R O K
0003420 E ; \n \t s t r o k e . e n d =
0003440 C I I _ S Q U A R E _ E N D ;
0003460 \n \t s t r o k e . j o i n t =
0003500 C I I _ B E V E L _ J O I N T
0003520 ; \n \t s t r o k e . s t r o k e
0003540 W i d t h = 2 . 0 ; \n \t C I
0003560 I _ S e t M a t r i x ( d e v ,
0003600 m p ) ; \n \t p . d a t a =
0003620 ( v o i d * ) 0 ; \n \t p . G e n
0003640 e r a t e P a t h = & C o n
0003660 e P a t h ; \n \t C I I _ S e t R
0003700 G B ( d e v , c o n e R G B )
0003720 ; \n \t C I I _ M a s k F i l l (
0003740 d e v , & p , C I I _ N O N
0003760 Z E R O _ F I L L ) ; \n \t p . G
0004000 e n e r a t e P a t h = & I
0004020 c e C r e a m P a t h ; \n \t C I
0004040 I _ S e t H S V ( d e v , f l
0004060 a v o r ) ; \n \t C I I _ M a s k
0004100 F i l l ( d e v , & p , C I
0004120 I _ N O N Z E R O _ F I L L ) ;
0004140 \n \t C I I _ S e t R G B ( d e v
0004160 , s t r o k e R G B ) ; \n \t C
0004200 I I _ M a s k S t r o k e ( d e
0004220 v , & p , & s t r o k e ) ;
0004240 \n } \n \n s t a t i c v o i d \n
0004260 T C o n e ( d e v , m p , f
0004300 l a v o r ) \n \t C I I _ H a n d
0004320 l e d e v ; \n \t f l o a t m
0004340 p [ ] ; \n \t f l o a t f l a v
0004360 o r [ ] ; \n { \n \t f l o a t t
0004400 [ 6 ] ; \n \t C I I _ V e c t o r
0004420 R e p t 0 = { 0 . 0 , 2
0004440 0 0 . 0 } ; \n \t f l o a t r 0
0004460 = - 2 2 . 0 ; \n \t C I I _ V
0004500 e c t o r R e p t 1 = { -
0004520 5 0 . 0 , - 2 5 . 0 } ; \n \t C
0004540 I U _ M a k e S c a l e ( 1 . 0
0004560 , t ) ; \n \t C I U _ A p p l y
0004600 P r e C o n c a t ( m p , t )
0004620 ; \n \t C I U _ A p p l y P r e T
0004640 r a n s l a t e ( t 0 . x , t
0004660 0 . y , t ) ; \n \t C I U _ A p
0004700 p l y P r e R o t a t e ( r 0 ,
0004720 t ) ; \n \t C I U _ A p p l y P
0004740 r e T r a n s l a t e ( t 1 . x
0004760 , t 1 . y , t ) ; \n \t I c e
0005000 C r e a m C o n e ( d e v , &
0005020 t , f l a v o r ) ; \n } \n \n s
0005040 t a t i c v o i d \n S i x C o
0005060 n e s ( d e v , m p , h ,
0005100 s ) \n \t C I I _ H a n d l e d
0005120 e v ; \n \t f l o a t m p [ ] ;
0005140 \n \t f l o a t h , s ; \n { \n
0005160 \t f l o a t t [ 6 ] ; \n \t f l
0005200 o a t f l a v o r [ 3 ] =
0005220 { 1 . 0 , 1 . 0 , 0 . 8 } ;
0005240 \n \t C I I _ V e c t o r R e p
0005260 t 0 = { 0 . 0 , 2 0 0 . 0
0005300 } ; \n \t f l o a t r 0 = 6
0005320 0 . 0 ; \n \t C I I _ V e c t o r
0005340 R e p t 1 = { - 5 0 . 0 ,
0005360 - 2 5 . 0 } ; \n \t i n t i
0005400 = 6 ; \n \t C I U _ M a k e S c
0005420 a l e ( 1 . 0 , t ) ; \n \t C I
0005440 U _ A p p l y P r e C o n c a t
0005460 ( m p , t ) ; \n \t w h i l e
0005500 ( i > 0 ) { \n \t \t f l a v
0005520 o r [ 0 ] = h ; \n \t \t f l a
0005540 v o r [ 1 ] = s ; \n \t \t I c
0005560 e C r e a m C o n e ( d e v ,
0005600 t , f l a v o r ) ; \n \t \t C I
0005620 U _ A p p l y P r e R o t a t e
0005640 ( r 0 , t ) ; \n \t \t h + =
0005660 1 . 0 / 6 . 0 ; i f ( h >
0005700 1 . 0 ) { h - = 1 . 0 ;
0005720 } ; \n \t \t f l a v o r [ 0 ] =
0005740 h ; \n \t \t i - = 1 ; \n \t }
0005760 ; \n } \n \n s t a t i c C I I _
0006000 R E S \n C i r c l e P a t h ( C
0006020 I I _ P a t h G e n e r a t o r
0006040 s e l f , C I I _ P a t h S
0006060 i n k s i n k ) \n { \n \t C I I
0006100 _ V e c t o r R e p p = {
0006120 1 0 0 . 0 , 0 . 0 } ; \n \t i n
0006140 t i ; \n \t C I I _ M o v e T o
0006160 ( s i n k , & p ) ; \n \t i =
0006200 1 ; \n \t w h i l e ( i < =
0006220 4 ) { \n \t \t C I I _ C o n i
0006240 c C o n t r o l R e p c c ; \n
0006260 \t \t f l o a t x , y ; \n \t \t
0006300 x = - p . y ; \n \t \t y =
0006320 p . x ; \n \t \t c c . p 1 . x =
0006340 p . x + x ; \n \t \t c c . p
0006360 1 . y = p . y + y ; \n \t
0006400 \t c c . p 2 . x = x ; \n \t \t
0006420 c c . p 2 . y = y ; \n \t \t c
0006440 c . s = 0 . 4 1 4 2 ; \n \t \t
0006460 C I I _ C o n i c T o ( s i n k
0006500 , & c c ) ; \n \t \t p . x =
0006520 x ; \n \t \t p . y = y ; \n \t \t
0006540 i = i + 1 ; \n \t } \n } \n
0006560 \n s t a t i c v o i d \n C i r
0006600 c l e C l i p ( d e v ) \n \t C I
0006620 I _ H a n d l e d e v ; \n { \n
0006640 \t C I I _ P a t h G e n e r a t
0006660 o r O b j e c t R e p p ; \n \t
0006700 p . d a t a = ( v o i d * )
0006720 0 ; \n \t p . G e n e r a t e P a
0006740 t h = & C i r c l e P a t h
0006760 ; \n \t C I I _ C l i p ( d e v ,
0007000 & p , C I I _ N O N Z E R O
0007020 _ F I L L ) ; \n } \n \n C I I _ V
0007040 e c t o r R e p c e n t e r
0007060 = { 3 0 0 . 0 , 4 0 0 . 0 }
0007100 ; \n C I I _ V e c t o r R e p
0007120 s c a l e = { 4 . 0 , 4 .
0007140 0 } ; \n \n e x t e r n v o i d
0007160 \n r u n _ c i i i c e c r e a m
0007200 ( d e v ) \n \t C I I _ H a n d l
0007220 e d e v ; \n { \n \t f l o a t
0007240 r 0 = 2 5 . 0 ; \n \t f l o a
0007260 t m [ 6 ] ; \n \t f l o a t s
0007300 a v e [ 6 ] ; \n \t f l o a t h
0007320 , s ; \n \t f l o a t s h r i
0007340 n k = 0 . 7 ; \n \t i n t i
0007360 = 1 6 ; \n \t C I I _ G e t M
0007400 a t r i x ( d e v , m ) ; \n \t
0007420 C I I _ G e t M a t r i x ( d e
0007440 v , s a v e ) ; \n \t C I U _ A
0007460 p p l y P r e T r a n s l a t e
0007500 ( c e n t e r . x , c e n t e
0007520 r . y , m ) ; \n \t C I U _ A p
0007540 p l y P r e S c a l e ( ( f l o
0007560 a t ) 4 . 0 , m ) ; \n \t C I I
0007600 _ S e t M a t r i x ( d e v ,
0007620 m ) ; \n \t h = 1 . 0 ; \n \t s
0007640 = 1 . 0 ; \n \t C i r c l e C
0007660 l i p ( d e v ) ; \n \t w h i l e
0007700 ( i > 0 ) { \n \t \t S i x
0007720 C o n e s ( d e v , m , h ,
0007740 s ) ; \n \t \t C I U _ A p p l y
0007760 P r e R o t a t e ( r 0 , m )
0010000 ; \n \t \t C I U _ A p p l y P r e
0010020 S c a l e ( s h r i n k , m )
0010040 ; \n \t \t h + = 1 . 0 / 1 8 .
0010060 0 ; i f ( h > 1 . 0 )
0010100 { h - = 1 . 0 ; } ; \n \t \t s
0010120 * = s h r i n k ; \n \t \t i
0010140 - = 1 ; \n \t } ; \n \t C I I _ S
0010160 e t M a t r i x ( d e v , s a
0010200 v e ) ; \n } \n \n v o i d \n X R _
0010220 r u n _ c i i i c e c r e a m (
0010240 ) \n { \n # i f d e f T E S T V
0010260 E R S I O N \n \t C I I _ H a n d
0010300 l e d e v = ( C I I _ H a
0010320 n d l e ) C I I _ T e s t D e v
0010340 i c e ( ) ; \n \t f l o a t t [
0010360 6 ] ; \n \t C I I _ G e t I n i t
0010400 i a l M a t r i x ( d e v , t
0010420 ) ; \n \t C I I _ S e t M a t r i
0010440 x ( d e v , t ) ; \n \t r u n _
0010460 c i i i c e c r e a m ( d e v )
0010500 ; \n \t C I I _ D e s t r o y ( d
0010520 e v ) ; \n # e n d i f \n } \n
0010536