package Ġorg . hex works . z ir con . internal . animation Ċ Ċ import Ġorg . hex works . cob alt . core . api . UUID Ċ import Ġorg . hex works . cob alt . core . platform . factory . UUID Factory Ċ import Ġorg . hex works . cob alt . databinding . api . extension . to Property Ċ import Ġorg . hex works . cob alt . logging . api . LoggerFactory Ċ import Ġorg . hex works . z ir con . api . animation . Animation Ċ import Ġorg . hex works . z ir con . api . animation . Animation Handle Ċ import Ġorg . hex works . z ir con . api . animation . Animation State . FINISHED Ċ import Ġorg . hex works . z ir con . api . animation . Animation State . INF IN ITE Ċ import Ġorg . hex works . z ir con . api . animation . Animation State . IN _ PROGRESS Ċ import Ġorg . hex works . z ir con . api . behavior . Closeable Ċ import Ġorg . hex works . z ir con . api . behavior . Layer able Ċ import Ġorg . hex works . z ir con . internal . animation . impl . Default Animation Handle Ċ import Ġorg . hex works . z ir con . internal . config . Runtime Config Ċ import Ġorg . hex works . z ir con . platform . util . System Utils Ċ import Ġkotlin . jvm . Synchron ized Ċ Ċ internal Ġclass ĠDefault Animation Runner Ġ: ĠInternal Animation Runner , ĠClose able Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġis Closed Ġ= Ġfalse . to Property () ĊĊĠĠĠ Ġprivate Ġval Ġid Ġ= ĠUUID Factory . randomUUID () ĊĠĠĠ Ġprivate Ġval Ġdebug Ġ= ĠRuntime Config . config . debug Mode ĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( this :: class ) ĊĊĠĠĠ Ġprivate Ġval Ġresults Ġ= Ġmutable Map Of < UUID , ĠDefault Animation Handle >() ĊĠĠĠ Ġprivate Ġval Ġanimations Ġ= Ġmutable Map Of < UUID , ĠInternal Animation >() ĊĠĠĠ Ġprivate Ġval Ġnext Updates For Animations Ġ= Ġmutable Map Of < UUID , ĠLong >() ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġoverride Ġfun Ġstart ( animation : ĠAnimation ): ĠAnimation Handle Ġ{ ĊĠĠĠĠĠĠĠ Ġanimation Ġas ? ĠInternal Animation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġerror (" The Ġsupplied Ġanimation Ġdoes Ġnot Ġimplement Ġrequired Ġinterface : ĠInternal Animation .") ĊĠĠĠĠĠĠĠ Ġif Ġ( debug ) Ġlogger . debug (" Adding Ġanimation Ġto ĠAnimation Handler Ġ($ id ). ") ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠDefault Animation Handle ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġif Ġ( animation . is Loop ed In def initely ) ĠIN FIN ITE Ġelse ĠIN _ PROGRESS , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Ġ= Ġanimation , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Runner Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġresults [ animation . id ] Ġ= Ġresult ĊĠĠĠĠĠĠĠ Ġanimations [ animation . id ] Ġ= Ġanimation ĊĠĠĠĠĠĠĠ Ġnext Updates For Animations [ animation . id ] Ġ= ĠSystem Utils . getCurrent Time Ms () ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġoverride Ġfun Ġstop ( animation : ĠInternal Animation ) Ġ{ ĊĠĠĠĠĠĠĠ Ġresults [ animation . id ]?. state Ġ= ĠFIN ISHED ĊĠĠĠĠĠĠĠ Ġresults . remove ( animation . id ) ĊĠĠĠĠĠĠĠ Ġanimations . remove ( animation . id ) ĊĠĠĠĠĠĠĠ Ġnext Updates For Animations . remove ( animation . id ) ĊĠĠĠĠĠĠĠ Ġanimation . remove Current Frame () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġoverride Ġfun Ġupdate Animations ( currentTime Ms : ĠLong , Ġlayer able : ĠLayer able ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Closed . value . not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimations . forEach Ġ{ Ġ( key , Ġanimation ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdate Time Ġ= Ġnext Updates For Animations . getValue ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( update Time Ġ<= ĠcurrentTime Ms ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( animation . display Next Frame ( layer able )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Updates For Animations [ key ] Ġ= ĠcurrentTime Ms Ġ+ Ġanimation . tick ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop ( animation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġoverride Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠ Ġis Closed . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġanimations . forEach Ġ{ Ġ(_, Ġanimation ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop ( animation ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġanimations . clear () ĊĠĠĠ Ġ} Ċ } Ċ