package Ġcom . zd og . library . render Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Animator Listener Adapter Ċ import Ġandroid . animation . Time Interpolator Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . view . animation . Linear Interpolator Ċ Ċ fun ĠValue Animator . update ( d : ĠDrawable , Ġblock : Ġ( Float )-> ĠUnit ) Ġ{ ĊĠĠĠ Ġadd Update Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġblock . invoke ( it . animated Fraction ) ĊĠĠĠĠĠĠĠ Ġd . invalidate Self () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠValue Animator . duration ( t : ĠLong ): ĠValue Animator Ġ= Ġapply Ġ{ ĊĠĠĠ Ġduration Ġ= Ġt Ċ } Ċ Ċ fun ĠValue Animator . delay ( t : ĠLong ): ĠValue Animator Ġ= Ġapply Ġ{ ĊĠĠĠ Ġstart Delay Ġ= Ġt Ċ } Ċ Ċ fun ĠValue Animator . repeat (): ĠValue Animator Ġ= Ġapply Ġ{ ĊĠĠĠ Ġrepeat Count Ġ= ĠValue Animator . INF IN ITE ĊĠĠĠ Ġrepeat Mode Ġ= ĠValue Animator . RE START Ċ } Ċ Ċ fun ĠValue Animator . to Reverse (): ĠValue Animator Ġ= Ġapply Ġ{ ĊĠĠĠ Ġrepeat Count Ġ= ĠValue Animator . INF IN ITE ĊĠĠĠ Ġrepeat Mode Ġ= ĠValue Animator . RE VERSE Ċ } Ċ Ċ fun ĠValue Animator . interpol ator ( interpol ator : ĠTime Interpolator ) Ġ= Ġapply Ġ{ ĊĠĠĠ Ġthis . interpol ator Ġ= Ġinterpol ator Ċ } Ċ Ċ fun ĠValue Animator . on End ( block : Ġ() Ġ-> ĠUnit ) Ġ= Ġapply Ġ{ ĊĠĠĠ Ġadd Listener ( object : ĠAn imator Listener Adapter () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) Ċ } Ċ Ċ fun ĠValue Animator . on Cancel ( block : Ġ() Ġ-> ĠUnit ) Ġ= Ġapply Ġ{ ĊĠĠĠ Ġadd Listener ( object : ĠAn imator Listener Adapter () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Cancel ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) Ċ } Ċ Ċ fun ĠValue Animator . on Reset ( block : Ġ() Ġ-> ĠUnit ) Ġ= Ġapply Ġ{ ĊĠĠĠ Ġadd Listener ( object : ĠAn imator Listener Adapter () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Cancel ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) Ċ } Ċ Ċ fun ĠAnchor . animate ( block : Ġ( Value Animator . () Ġ-> ĠUnit )? Ġ= Ġnull ): ĠValue Animator Ġ{ ĊĠĠĠ Ġreturn ĠValue Animator . of Float ( 0 f , Ġ 1 f ). also Ġ{ ĊĠĠĠĠĠĠĠ Ġit . interpol ator Ġ= ĠLinear Interpolator () ĊĠĠĠĠĠĠĠ Ġit . duration Ġ= Ġ 3 0 0 ĊĊĠĠĠĠĠĠĠ Ġblock ?. invoke ( it ) ĊĊĠĠĠĠĠĠĠ Ġadd Animator ( Anchor . Animator Type . Custom , Ġit ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠAnchor . translate To ( d : ĠDrawable , Ġx : ĠFloat Ġ= Ġtranslate . x , Ġy : ĠFloat Ġ= Ġtranslate . y , Ġz : ĠFloat Ġ= Ġtranslate . z , ĊĠĠĠ Ġblock : Ġ( Value Animator . () Ġ-> ĠUnit )? Ġ= Ġnull ) Ġ= ĊĠĠĠ Ġtranslate To ( d , Ġvector ( x , Ġy , Ġz ), Ġblock ) Ċ Ċ fun ĠAnchor . translate To ( d : ĠDrawable , Ġvector : ĠVector , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock : Ġ( Value Animator . () Ġ-> ĠUnit )? Ġ= Ġnull ) Ġ= ĊĠĠĠ Ġtranslate By ( d , Ġvector . subtract ( this . translate ), Ġblock ) Ċ Ċ fun ĠAnchor . translate By ( d : ĠDrawable , Ġx : ĠFloat Ġ= Ġ 0 f , Ġy : ĠFloat Ġ= Ġ 0 f , Ġz : ĠFloat Ġ= Ġ 0 f , ĊĠĠĠ Ġblock : Ġ( Value Animator . () Ġ-> ĠUnit )? Ġ= Ġnull ) Ġ= ĊĠĠĠ Ġtranslate By ( d , Ġvector ( x , Ġy , Ġz ), Ġblock ) Ċ Ċ fun ĠAnchor . translate By ( d : ĠDrawable , Ġdelta : ĠVector , Ġblock : Ġ( Value Animator . () Ġ-> ĠUnit )? Ġ= Ġnull ): ĠValue Animator Ġ{ ĊĠĠĠ Ġval Ġx Ġ= Ġtranslate . x ĊĠĠĠ Ġval Ġy Ġ= Ġtranslate . y ĊĠĠĠ Ġval Ġz Ġ= Ġtranslate . z ĊĊĠĠĠ Ġreturn ĠValue Animator . of Float ( 0 f , Ġ 1 f ). also Ġ{ ĊĠĠĠĠĠĠĠ Ġit . interpol ator Ġ= ĠLinear Interpolator () ĊĠĠĠĠĠĠĠ Ġit . duration Ġ= Ġ 3 0 0 ĊĊĠĠĠĠĠĠĠ Ġblock ?. invoke ( it ) ĊĊĠĠĠĠĠĠĠ Ġit . update ( d ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtranslate . set ( delta ). multiply ( it ). add ( x , Ġy , Ġz ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadd Animator ( Anchor . Animator Type . Translate , Ġit ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠAnchor . rotate To ( d : ĠDrawable , Ġx : ĠFloat Ġ= Ġrotate . x , Ġy : ĠFloat Ġ= Ġrotate . y , Ġz : ĠFloat Ġ= Ġrotate . z , ĊĠĠĠ Ġblock : Ġ( Value Animator . () Ġ-> ĠUnit )? Ġ= Ġnull ) Ġ= ĊĠĠĠ Ġrotate By ( d , Ġvector ( x , Ġy , Ġz ). subtract ( this . rotate ), Ġblock ) Ċ Ċ fun ĠAnchor . rotate By ( d : ĠDrawable , Ġx : ĠFloat Ġ= Ġ 0 f , Ġy : ĠFloat Ġ= Ġ 0 f , Ġz : ĠFloat Ġ= Ġ 0 f , ĊĠĠĠ Ġblock : Ġ( Value Animator . () Ġ-> ĠUnit )? Ġ= Ġnull ) Ġ= ĊĠĠĠ Ġrotate By ( d , Ġvector ( x , Ġy , Ġz ), Ġblock ) Ċ Ċ fun ĠAnchor . rotate By ( d : ĠDrawable , Ġdelta : ĠVector , Ġblock : Ġ( Value Animator . () Ġ-> ĠUnit )? Ġ= Ġnull ): ĠValue Animator Ġ{ ĊĠĠĠ Ġval Ġx Ġ= Ġrotate . x ĊĠĠĠ Ġval Ġy Ġ= Ġrotate . y ĊĠĠĠ Ġval Ġz Ġ= Ġrotate . z ĊĊĠĠĠ Ġreturn ĠValue Animator . of Float ( 0 f , Ġ 1 f ). also Ġ{ ĊĠĠĠĠĠĠĠ Ġit . interpol ator Ġ= ĠLinear Interpolator () ĊĠĠĠĠĠĠĠ Ġit . duration Ġ= Ġ 3 0 0 ĊĊĠĠĠĠĠĠĠ Ġblock ?. invoke ( it ) ĊĊĠĠĠĠĠĠĠ Ġit . update ( d ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrotate . set ( delta ). multiply ( it ). add ( x , Ġy , Ġz ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadd Animator ( Anchor . Animator Type . Rotate , Ġit ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠAnchor . scale To ( d : ĠDrawable , Ġdest : ĠFloat , Ġblock : Ġ( Value Animator . () Ġ-> ĠUnit )? Ġ= Ġnull ): ĠValue Animator Ġ{ ĊĠĠĠ Ġval Ġx Ġ= Ġscale . x ĊĠĠĠ Ġval Ġy Ġ= Ġscale . y ĊĠĠĠ Ġval Ġz Ġ= Ġscale . z ĊĊĠĠĠ Ġval Ġdelta Ġ= Ġvector ( dest ). subtract ( scale ) ĊĊĠĠĠ Ġreturn ĠValue Animator . of Float ( 0 f , Ġ 1 f ). also Ġ{ ĊĠĠĠĠĠĠĠ Ġit . interpol ator Ġ= ĠLinear Interpolator () ĊĠĠĠĠĠĠĠ Ġit . duration Ġ= Ġ 3 0 0 ĊĊĠĠĠĠĠĠĠ Ġblock ?. invoke ( it ) ĊĊĠĠĠĠĠĠĠ Ġit . update ( d ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale . set ( delta ). multiply ( it ). add ( x , Ġy , Ġz ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadd Animator ( Anchor . Animator Type . Scale , Ġit ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠAnchor . alpha To ( d : ĠDrawable , Ġdest : ĠFloat , Ġblock : Ġ( Value Animator . () Ġ-> ĠUnit )? Ġ= Ġnull ): ĠValue Animator Ġ{ ĊĠĠĠ Ġval Ġalpha Ġ= Ġalpha ĊĠĠĠ Ġval Ġdelta Ġ= Ġdest Ġ- Ġalpha ĊĊĠĠĠ Ġreturn ĠValue Animator . of Float ( 0 f , Ġ 1 f ). also Ġ{ ĊĠĠĠĠĠĠĠ Ġit . interpol ator Ġ= ĠLinear Interpolator () ĊĠĠĠĠĠĠĠ Ġit . duration Ġ= Ġ 3 0 0 ĊĊĠĠĠĠĠĠĠ Ġblock ?. invoke ( it ) ĊĊĠĠĠĠĠĠĠ Ġit . update ( d ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . alpha Ġ= Ġalpha Ġ+ Ġdelta Ġ* Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadd Animator ( Anchor . Animator Type . Alpha , Ġit ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠAnchor . color To ( d : ĠDrawable , Ġdest : ĠString , Ġblock : Ġ( Value Animator . () Ġ-> ĠUnit )? Ġ= Ġnull ): ĠValue Animator Ġ{ ĊĠĠĠ Ġval Ġdest Ġ= Ġdest . color ĊĠĠĠ Ġval Ġc Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolour . alpha , Ġcolour . red , Ġcolour . green , Ġcolour . blue ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġdelta Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdest . alpha Ġ- Ġc [ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdest . red Ġ- Ġc [ 1 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdest . green Ġ- Ġc [ 2 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdest . blue Ġ- Ġc [ 3 ] ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġmake ( a : ĠInt , Ġr : ĠInt , Ġg : ĠInt , Ġb : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠ Ġ( a Ġshl Ġ 2 4 ) Ġ+ Ġ( r Ġshl Ġ 1 6 ) Ġ+ Ġ( g Ġshl Ġ 8 ) Ġ+ Ġb ĊĊĠĠĠ Ġfun Ġcompute ( delta : ĠInt , Ġfrom : ĠInt , Ġfactor : ĠFloat ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( delta Ġ* Ġfactor Ġ+ Ġfrom ). toInt () ĊĊĠĠĠ Ġreturn ĠValue Animator . of Float ( 0 f , Ġ 1 f ). also Ġ{ ĊĠĠĠĠĠĠĠ Ġit . interpol ator Ġ= ĠLinear Interpolator () ĊĠĠĠĠĠĠĠ Ġit . duration Ġ= Ġ 3 0 0 ĊĊĠĠĠĠĠĠĠ Ġblock ?. invoke ( it ) ĊĊĠĠĠĠĠĠĠ Ġit . update ( d ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolour Ġ= Ġmake ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompute ( delta [ 0 ], Ġc [ 0 ], Ġit ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompute ( delta [ 1 ], Ġc [ 1 ], Ġit ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompute ( delta [ 2 ], Ġc [ 2 ], Ġit ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompute ( delta [ 3 ], Ġc [ 3 ], Ġit )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadd Animator ( Anchor . Animator Type . Color , Ġit ) ĊĠĠĠ Ġ} Ċ }