package Ġcom . example . view . bezier Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Type Evaluator Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics .* Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ Ċ class ĠThree View Ġ@ Jvm Over loads Ġconstructor ( context : ĠContext , Ġattribute Set : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style Attr : ĠInt Ġ= Ġ 0 ) ĊĠĠĠ Ġ: ĠView ( context , Ġattribute Set , Ġdef Style Attr ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm Big Listener Ġ: ĠBig Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġm Paint Ġ= ĠPaint (). also Ġ{ ĊĠĠĠĠĠĠĠ Ġit . is Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġit . style Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠ Ġit . color Ġ= ĠColor . WHITE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠString Text BIG Ġ= Ġ" åĳ¼ æ°Ķ " ĊĠĠĠ Ġprivate Ġvar ĠString Text SH R INK Ġ= Ġ" åĲ ¸ æ°Ķ " ĊĊĠĠĠ Ġprivate Ġvar ĠmCurrent Text Ġ= ĠString Text BIG ĊĊĠĠĠ Ġprivate Ġval Ġm Text Paint Ġ= ĠPaint (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . style Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠ Ġthis . stroke Width Ġ= Ġ 4 f ĊĠĠĠĠĠĠĠ Ġthis . text Size Ġ= Ġ 5 0 f ĊĠĠĠĠĠĠĠ Ġthis . textAlign Ġ= ĠPaint . Align . CENTER ĊĠĠĠĠĠĠĠ Ġthis . color Ġ= ĠColor . WHITE ĊĠĠĠĠĠĠĠ Ġthis . is Anti Alias Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġm Path Ġ= ĠPath () ĊĊĠĠĠ Ġprivate Ġvar Ġm Center Point Ġ= ĠPoint () ĊĊĠĠĠ Ġprivate Ġval Ġm Points Ġ= ĠArray ( 1 2 ) Ġ{ ĊĠĠĠĠĠĠĠ ĠPoint () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġm Init Points Ġ= ĠArray ( 1 2 ) Ġ{ ĊĠĠĠĠĠĠĠ ĠPoint () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġm Radius Ġ= Ġ 2 0 0 ĊĠĠĠ Ġprivate Ġval Ġm Big Radius Ġ= Ġ 1 0 0 ĊĊĠĠĠ Ġprivate Ġvar Ġm Is Shrink Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġm Is Running Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġval Ġm Big Animator Ġ= ĠValue Animator (). also Ġ{ ĊĠĠĠĠĠĠĠ Ġit . duration Ġ= Ġ 4 0 0 0 ĊĠĠĠĠĠĠĠ Ġit . add Update Listener Ġ{ Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreal Points Ġ= Ġvalue . animated Value Ġas ĠArray < Point > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġm Points . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( i ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Points [ 0 ]. y Ġ= Ġreal Points [ 0 ]. y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Points [ 3 ]. x Ġ= Ġreal Points [ 3 ]. x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 6 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Points [ 6 ]. y Ġ= Ġreal Points [ 6 ]. y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 9 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Points [ 9 ]. x Ġ= Ġreal Points [ 9 ]. x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Points [ i ]. x Ġ= Ġreal Points [ i ]. x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Points [ i ]. y Ġ= Ġreal Points [ i ]. y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit . addListener ( object Ġ: ĠAn imator . Animator Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( p 0 : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Is Running Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( p 0 : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Big Listener ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . big Animator End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġm Init Points . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Init Points [ i ]. x Ġ= Ġm Points [ i ]. x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Init Points [ i ]. y Ġ= Ġm Points [ i ]. y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Is Running Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmCurrent Text Ġ= ĠString Text SH R INK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Is Shrink Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Shrink Animator . set Object Values ( m Init Points , Ġm Init Points ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Shrink Animator . set Evaluator ( big Evaluator ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Shrink Animator . start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Cancel ( p 0 : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Repeat ( p 0 : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġm Shrink Animator Ġ= ĠValue Animator (). also Ġ{ ĊĠĠĠĠĠĠĠ Ġit . duration Ġ= Ġ 4 0 0 0 ĊĠĠĠĠĠĠĠ Ġit . add Update Listener Ġ{ Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreal Points Ġ= Ġvalue . animated Value Ġas ĠArray < Point > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġm Points . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( i ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Points [ 0 ]. y Ġ= Ġreal Points [ 0 ]. y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Points [ 3 ]. x Ġ= Ġreal Points [ 3 ]. x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 6 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Points [ 6 ]. y Ġ= Ġreal Points [ 6 ]. y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 9 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Points [ 9 ]. x Ġ= Ġreal Points [ 9 ]. x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Points [ i ]. x Ġ= Ġreal Points [ i ]. x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Points [ i ]. y Ġ= Ġreal Points [ i ]. y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit . addListener ( object Ġ: ĠAn imator . Animator Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( p 0 : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Is Running Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( p 0 : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġm Init Points . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Init Points [ i ]. x Ġ= Ġm Points [ i ]. x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Init Points [ i ]. y Ġ= Ġm Points [ i ]. y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Is Running Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmCurrent Text Ġ= ĠString Text BIG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Is Shrink Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Cancel ( p 0 : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Repeat ( p 0 : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġbig Evaluator Ġ= ĠBig Evaluator () ĊĊĠĠĠ Ġoverride Ġfun Ġon Size Changed ( w : ĠInt , Ġh : ĠInt , Ġold w : ĠInt , Ġold h : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Size Changed ( w , Ġh , Ġold w , Ġold h ) ĊĠĠĠĠĠĠĠ Ġm Center Point . x Ġ= Ġw Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġm Center Point . y Ġ= Ġ 5 0 0 ĊĊĠĠĠĠĠĠĠ Ġset Initial Points () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġm Path . reset () ĊĠĠĠĠĠĠĠ Ġm Path . moveTo ( m Points [ 0 ]. x . toFloat (), Ġm Points [ 0 ]. y . toFloat ()) ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġm Points . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġend Point Ġ= Ġif Ġ( i Ġ!= Ġ 1 0 ) Ġm Points [ i Ġ+ Ġ 2 ] Ġelse Ġm Points [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontrol Point 1 Ġ= Ġm Points [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontrol Point 2 Ġ= Ġm Points [ i Ġ+ Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcubic To ( control Point 1 , Ġcontrol Point 2 , Ġend Point ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ+= Ġ 3 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcanvas . draw Path ( m Path , Ġm Paint ) ĊĠĠĠĠĠĠĠ Ġval Ġfont Metrics : ĠPaint . Font Metrics Ġ= Ġm Text Paint . font Metrics ĊĠĠĠĠĠĠĠ Ġval Ġdistance Ġ= Ġ( font Metrics . bottom Ġ- Ġfont Metrics . top ) Ġ/ Ġ 2 Ġ- Ġfont Metrics . bottom ĊĠĠĠĠĠĠĠ Ġval Ġbaseline : ĠFloat Ġ= Ġm Center Point . y Ġ+ Ġdistance ĊĠĠĠĠĠĠĠ Ġcanvas . draw Text ( m Current Text , Ġm Center Point . x . toFloat (), Ġbaseline , Ġm Text Paint ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcubic To ( control Point 1 : ĠPoint , Ġcontrol Point 2 : ĠPoint , Ġend Point : ĠPoint ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Path . cubic To ( control Point 1 . x . toFloat (), Ġcontrol Point 1 . y . toFloat (), Ġcontrol Point 2 . x . toFloat (), Ġcontrol Point 2 . y . toFloat (), Ġend Point . x . toFloat (), Ġend Point . y . toFloat ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Initial Points () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġm Points [ 0 ]. x Ġ= Ġm Center Point . x ĊĠĠĠĠĠĠĠ Ġm Points [ 0 ]. y Ġ= Ġm Center Point . y Ġ- Ġm Radius ĊĠĠĠĠĠĠĠ Ġm Init Points [ 0 ]. x Ġ= Ġm Points [ 0 ]. x ĊĠĠĠĠĠĠĠ Ġm Init Points [ 0 ]. y Ġ= Ġm Points [ 0 ]. y ĊĊĠĠĠĠĠĠĠ Ġm Points [ 1 ]. x Ġ= Ġm Center Point . x Ġ+ Ġm Radius Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġm Points [ 1 ]. y Ġ= Ġm Center Point . y Ġ- Ġm Radius ĊĠĠĠĠĠĠĠ Ġm Init Points [ 1 ]. x Ġ= Ġm Points [ 1 ]. x ĊĠĠĠĠĠĠĠ Ġm Init Points [ 1 ]. y Ġ= Ġm Points [ 1 ]. y ĊĊĠĠĠĠĠĠĠ Ġm Points [ 2 ]. x Ġ= Ġm Center Point . x Ġ+ Ġm Radius ĊĠĠĠĠĠĠĠ Ġm Points [ 2 ]. y Ġ= Ġm Center Point . y Ġ- Ġm Radius Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġm Init Points [ 2 ]. x Ġ= Ġm Points [ 2 ]. x ĊĠĠĠĠĠĠĠ Ġm Init Points [ 2 ]. y Ġ= Ġm Points [ 2 ]. y ĊĊĠĠĠĠĠĠĠ Ġm Points [ 3 ]. x Ġ= Ġm Center Point . x Ġ+ Ġm Radius ĊĠĠĠĠĠĠĠ Ġm Points [ 3 ]. y Ġ= Ġm Center Point . y ĊĠĠĠĠĠĠĠ Ġm Init Points [ 3 ]. x Ġ= Ġm Points [ 3 ]. x ĊĠĠĠĠĠĠĠ Ġm Init Points [ 3 ]. y Ġ= Ġm Points [ 3 ]. y ĊĊĠĠĠĠĠĠĠ Ġm Points [ 4 ]. x Ġ= Ġm Center Point . x Ġ+ Ġm Radius ĊĠĠĠĠĠĠĠ Ġm Points [ 4 ]. y Ġ= Ġm Center Point . y Ġ+ Ġm Radius Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġm Init Points [ 4 ]. x Ġ= Ġm Points [ 4 ]. x ĊĠĠĠĠĠĠĠ Ġm Init Points [ 4 ]. y Ġ= Ġm Points [ 4 ]. y ĊĊĠĠĠĠĠĠĠ Ġm Points [ 5 ]. x Ġ= Ġm Center Point . x Ġ+ Ġm Radius Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġm Points [ 5 ]. y Ġ= Ġm Center Point . y Ġ+ Ġm Radius ĊĠĠĠĠĠĠĠ Ġm Init Points [ 5 ]. x Ġ= Ġm Points [ 5 ]. x ĊĠĠĠĠĠĠĠ Ġm Init Points [ 5 ]. y Ġ= Ġm Points [ 5 ]. y ĊĊĠĠĠĠĠĠĠ Ġm Points [ 6 ]. x Ġ= Ġm Center Point . x ĊĠĠĠĠĠĠĠ Ġm Points [ 6 ]. y Ġ= Ġm Center Point . y Ġ+ Ġm Radius ĊĠĠĠĠĠĠĠ Ġm Init Points [ 6 ]. x Ġ= Ġm Points [ 6 ]. x ĊĠĠĠĠĠĠĠ Ġm Init Points [ 6 ]. y Ġ= Ġm Points [ 6 ]. y ĊĊĠĠĠĠĠĠĠ Ġm Points [ 7 ]. x Ġ= Ġm Center Point . x Ġ- Ġm Radius Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġm Points [ 7 ]. y Ġ= Ġm Center Point . y Ġ+ Ġm Radius ĊĠĠĠĠĠĠĠ Ġm Init Points [ 7 ]. x Ġ= Ġm Points [ 7 ]. x ĊĠĠĠĠĠĠĠ Ġm Init Points [ 7 ]. y Ġ= Ġm Points [ 7 ]. y ĊĊĠĠĠĠĠĠĠ Ġm Points [ 8 ]. x Ġ= Ġm Center Point . x Ġ- Ġm Radius ĊĠĠĠĠĠĠĠ Ġm Points [ 8 ]. y Ġ= Ġm Center Point . y Ġ+ Ġm Radius Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġm Init Points [ 8 ]. x Ġ= Ġm Points [ 8 ]. x ĊĠĠĠĠĠĠĠ Ġm Init Points [ 8 ]. y Ġ= Ġm Points [ 8 ]. y ĊĊĠĠĠĠĠĠĠ Ġm Points [ 9 ]. x Ġ= Ġm Center Point . x Ġ- Ġm Radius ĊĠĠĠĠĠĠĠ Ġm Points [ 9 ]. y Ġ= Ġm Center Point . y ĊĠĠĠĠĠĠĠ Ġm Init Points [ 9 ]. x Ġ= Ġm Points [ 9 ]. x ĊĠĠĠĠĠĠĠ Ġm Init Points [ 9 ]. y Ġ= Ġm Points [ 9 ]. y ĊĊĠĠĠĠĠĠĠ Ġm Points [ 1 0 ]. x Ġ= Ġm Center Point . x Ġ- Ġm Radius ĊĠĠĠĠĠĠĠ Ġm Points [ 1 0 ]. y Ġ= Ġm Center Point . y Ġ- Ġm Radius Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġm Init Points [ 1 0 ]. x Ġ= Ġm Points [ 1 0 ]. x ĊĠĠĠĠĠĠĠ Ġm Init Points [ 1 0 ]. y Ġ= Ġm Points [ 1 0 ]. y ĊĊĠĠĠĠĠĠĠ Ġm Points [ 1 1 ]. x Ġ= Ġm Center Point . x Ġ- Ġm Radius Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġm Points [ 1 1 ]. y Ġ= Ġm Center Point . y Ġ- Ġm Radius ĊĠĠĠĠĠĠĠ Ġm Init Points [ 1 1 ]. x Ġ= Ġm Points [ 1 1 ]. x ĊĠĠĠĠĠĠĠ Ġm Init Points [ 1 1 ]. y Ġ= Ġm Points [ 1 1 ]. y ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbig () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Is Running ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Big Animator . set Object Values ( m Init Points , Ġm Init Points ) ĊĠĠĠĠĠĠĠ Ġm Big Animator . set Evaluator ( big Evaluator ) ĊĠĠĠĠĠĠĠ Ġm Big Animator . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Big () Ġ= Ġm Is Shrink ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠBig Evaluator Ġ: ĠType Evaluator < Array < Point >> Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġevaluate ( p 0 : ĠFloat , Ġp 1 : ĠArray < Point >, Ġp 2 : ĠArray < Point >): ĠArray < Point > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠArray ( 1 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġend Value X Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġend Value Y Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Value Y Ġ= Ġif Ġ(! m Is Shrink ) Ġp 1 [ it ]. y Ġ- Ġm Big Radius Ġelse Ġp 1 [ it ]. y Ġ+ Ġm Big Radius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Value X Ġ= Ġif Ġ(! m Is Shrink ) Ġp 1 [ it ]. x Ġ+ Ġm Big Radius Ġ/ Ġ 2 Ġelse Ġp 1 [ it ]. x Ġ- Ġm Big Radius Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Value Y Ġ= Ġif Ġ(! m Is Shrink ) Ġp 1 [ it ]. y Ġ- Ġm Big Radius Ġelse Ġp 1 [ it ]. y Ġ+ Ġm Big Radius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Value X Ġ= Ġif Ġ(! m Is Shrink ) Ġp 1 [ it ]. x Ġ+ Ġm Big Radius Ġelse Ġp 1 [ it ]. x Ġ- Ġm Big Radius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Value Y Ġ= Ġif Ġ(! m Is Shrink ) Ġp 1 [ it ]. y Ġ- Ġm Big Radius Ġ/ Ġ 2 Ġelse Ġp 1 [ it ]. y Ġ+ Ġm Big Radius Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Value X Ġ= Ġif Ġ(! m Is Shrink ) Ġp 1 [ it ]. x Ġ+ Ġm Big Radius Ġelse Ġp 1 [ it ]. x Ġ- Ġm Big Radius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Value X Ġ= Ġif Ġ(! m Is Shrink ) Ġp 1 [ it ]. x Ġ+ Ġm Big Radius Ġelse Ġp 1 [ it ]. x Ġ- Ġm Big Radius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Value Y Ġ= Ġif Ġ(! m Is Shrink ) Ġp 1 [ it ]. y Ġ+ Ġm Big Radius Ġ/ Ġ 2 Ġelse Ġp 1 [ it ]. y Ġ- Ġm Big Radius Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Value X Ġ= Ġif Ġ(! m Is Shrink ) Ġp 1 [ it ]. x Ġ+ Ġm Big Radius Ġ/ Ġ 2 Ġelse Ġp 1 [ it ]. x Ġ- Ġm Big Radius Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Value Y Ġ= Ġif Ġ(! m Is Shrink ) Ġp 1 [ it ]. y Ġ+ Ġm Big Radius Ġelse Ġp 1 [ it ]. y Ġ- Ġm Big Radius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 6 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Value Y Ġ= Ġif Ġ(! m Is Shrink ) Ġp 1 [ it ]. y Ġ+ Ġm Big Radius Ġelse Ġp 1 [ it ]. y Ġ- Ġm Big Radius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 7 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Value X Ġ= Ġif Ġ(! m Is Shrink ) Ġp 1 [ it ]. x Ġ- Ġm Big Radius Ġ/ Ġ 2 Ġelse Ġp 1 [ it ]. x Ġ+ Ġm Big Radius Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Value Y Ġ= Ġif Ġ(! m Is Shrink ) Ġp 1 [ it ]. y Ġ+ Ġm Big Radius Ġelse Ġp 1 [ it ]. y Ġ- Ġm Big Radius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 8 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Value X Ġ= Ġif Ġ(! m Is Shrink ) Ġp 1 [ it ]. x Ġ- Ġm Big Radius Ġelse Ġp 1 [ it ]. x Ġ+ Ġm Big Radius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Value Y Ġ= Ġif Ġ(! m Is Shrink ) Ġp 1 [ it ]. y Ġ+ Ġm Big Radius Ġ/ Ġ 2 Ġelse Ġp 1 [ it ]. y Ġ- Ġm Big Radius Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 9 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Value X Ġ= Ġif Ġ(! m Is Shrink ) Ġp 1 [ it ]. x Ġ- Ġm Big Radius Ġelse Ġp 1 [ it ]. x Ġ+ Ġm Big Radius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Value X Ġ= Ġif Ġ(! m Is Shrink ) Ġp 1 [ it ]. x Ġ- Ġm Big Radius Ġelse Ġp 1 [ it ]. x Ġ+ Ġm Big Radius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Value Y Ġ= Ġif Ġ(! m Is Shrink ) Ġp 1 [ it ]. y Ġ- Ġm Big Radius Ġ/ Ġ 2 Ġelse Ġp 1 [ it ]. y Ġ+ Ġm Big Radius Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Value X Ġ= Ġif Ġ(! m Is Shrink ) Ġp 1 [ it ]. x Ġ- Ġm Big Radius Ġ/ Ġ 2 Ġelse Ġp 1 [ it ]. x Ġ+ Ġm Big Radius Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Value Y Ġ= Ġif Ġ(! m Is Shrink ) Ġp 1 [ it ]. y Ġ- Ġm Big Radius Ġelse Ġp 1 [ it ]. y Ġ+ Ġm Big Radius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġ( p 1 [ it ]. x Ġ+ Ġp 0 Ġ* Ġ( end Value X Ġ- Ġp 1 [ it ]. x )). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġ( p 1 [ it ]. y Ġ+ Ġp 0 Ġ* Ġ( end Value Y Ġ- Ġp 1 [ it ]. y )). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoint ( x , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Listener ( big Listener Ġ: ĠBig Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . m Big Listener Ġ= Ġbig Listener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠBig Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġbig Animator End () ĊĠĠĠ Ġ} Ċ }