/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 , ĠAlibaba ĠGroup ĠHold ing ĠLimited ; Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . alibaba . g ai ax . template . animation Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Animator Set Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . Interpolator Ċ import Ġandroid . view . animation . Linear Interpolator Ċ import Ġandroid . widget . TextView Ċ import Ġcom . alibaba . fastjson . JSONObject Ċ import Ġcom . alibaba . g ai ax . GX Template Engine Ċ import Ġcom . alibaba . g ai ax . context . GX Template Context Ċ import Ġcom . alibaba . g ai ax . render . node . GX Node Ċ import Ġcom . alibaba . g ai ax . template . GX Color Ċ import Ġcom . alibaba . g ai ax . template . GX I Expression Ċ import Ġcom . alibaba . g ai ax . template . GX Size . Companion . dp To Px Ċ import Ġcom . alibaba . g ai ax . utils . getString Ext Ċ Ċ class ĠG X Prop Animation Set Ġ: ĠG XI Animation , ĠG XI Prop Animation Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġexecute Animation ( ĊĠĠĠĠĠĠĠ Ġgx State : ĠG XI Expression ?, ĊĠĠĠĠĠĠĠ Ġgx Animation Expression : ĠG XI Expression ?, ĊĠĠĠĠĠĠĠ Ġgx Template Context : ĠG X Template Context , ĊĠĠĠĠĠĠĠ Ġgx Node : ĠG X Node , ĊĠĠĠĠĠĠĠ Ġgx Template Data : ĠJSONObject ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgx Node . view ?. let Ġ{ Ġtarget View Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Animation ( gx Template Context , Ġgx Node , Ġtarget View ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġplay Animation ( context : ĠG X Template Context , Ġchild : ĠG X Node , Ġtarget View : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( child . prop Animator Set Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild . prop Animator Set Ġ= Ġcreate Animator ( target View ) Ġas ĠAn imator Set ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( child . is Anim ating Ġ|| Ġchild . prop Animator Set ?. isRunning Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild . prop Animator Set ?. cancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild . is Anim ating Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġchild . prop Animator Set ?. removeAll Listeners () ĊĠĠĠĠĠĠĠ Ġchild . prop Animator Set ?. addListener ( object Ġ: ĠG X Default Animator Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . template Data ?. event Listener ?. on Animation Event ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG X Template Engine . GX Animation (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . state Ġ= ĠG X Template Engine . GX Animation . STATE _ START ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . nodeId Ġ= Ġchild . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . view Ġ= Ġtarget View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Cancel ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild . is Anim ating Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild . is Anim ating Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . template Data ?. event Listener ?. on Animation Event ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG X Template Engine . GX Animation (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . state Ġ= ĠG X Template Engine . GX Animation . STATE _ END ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . nodeId Ġ= Ġchild . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . view Ġ= Ġtarget View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġchild . prop Animator Set ?. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Animator ( target View : ĠView ): ĠAn imator Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠAn imator Set (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( ordering ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG X Prop Ordering Type . TO GET HER Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġmutable ListOf < Animator >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimations . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( it . create Animator ( target View )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . play To gether ( items ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG X Prop Ordering Type . SEQU ENT I ALLY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġmutable ListOf < Animator >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimations . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( it . create Animator ( target View )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . play Se quent ially ( items ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġordering : ĠG X Prop Ordering Type Ġ= ĠG X Prop Ordering Type . TO GET HER ĊĊĠĠĠ Ġval Ġanimations : ĠMutable List < GX I Prop Animation > Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ PROP _ ANIM ATOR _ SET Ġ= Ġ" prop Animator Set " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ PROP _ ANIM ATOR Ġ= Ġ" prop Animator " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ ANIM ATORS Ġ= Ġ" anim ators " ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( data : ĠJSONObject ?): ĠG X Prop Animation Set ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim ators Ġ= Ġdata . get JSONArray ( KEY _ ANIM ATORS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( anim ators Ġ!= Ġnull Ġ&& Ġanim ators . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġset Ġ= ĠG X Prop Animation Set () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ators . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠJSONObject ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . containsKey ( KEY _ PROP _ ANIM ATOR _ SET )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate ( it . getJSONObject ( KEY _ PROP _ ANIM ATOR _ SET )) ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset . animations . add ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( it . containsKey ( KEY _ PROP _ ANIM ATOR )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG X Prop Animation . create ( it . getJSONObject ( KEY _ PROP _ ANIM ATOR )) ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset . animations . add ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG X Prop Animation . create ( it )?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset . animations . add ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . getString ( GX Prop Ordering Type . KEY _ ORDER ING )?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset . ordering Ġ= ĠG X Prop Ordering Type . create ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠG X Prop Loop Mode Ġ{ ĊĠĠĠĠĠĠĠ ĠRESET , ĊĠĠĠĠĠĠĠ ĠRE VERSE ; ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠKEY _ LOOP _ MODE Ġ= Ġ" loop Mode " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġcreate ( data : ĠString ) Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . equals (" RESET ", Ġtrue ) Ġ-> ĠRESET ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . equals (" RE VERSE ", Ġtrue ) Ġ-> ĠRE VERSE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠRESET ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsealed Ġclass ĠG X Prop Value Ġ{ ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ VALUE _ TYPE Ġ= Ġ" valueType " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ VALUE _ FROM Ġ= Ġ" value From " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ VALUE _ TO Ġ= Ġ" value To " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġcreate ( data : ĠJSONObject ): ĠG X Prop Value ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG X Prop ValueType . create ( data . getString Ext ( KEY _ VALUE _ TYPE )) ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG X Prop ValueType . Int Type Ġ-> ĠG X Prop Value Float . create ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG X Prop ValueType . Float Type Ġ-> ĠG X Prop Value Float . create ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG X Prop ValueType . Color Type Ġ-> ĠG X Prop Value Color . create ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġclass ĠG X Prop Value Color ( val Ġvalue From : ĠG X Color , Ġval Ġvalue To : ĠG X Color ) Ġ: ĠG X Prop Value () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġcreate ( data : ĠJSONObject ): ĠG X Prop Value Color ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue From Ġ= Ġdata . getString Ext ( KEY _ VALUE _ FROM ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue To Ġ= Ġdata . getString Ext ( KEY _ VALUE _ TO ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value From . isNotEmpty () Ġ&& Ġvalue From . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue From 1 Ġ= ĠG X Color . create ( value From ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue To 1 Ġ= ĠG X Color . create ( value To ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value From 1 Ġ!= Ġnull Ġ&& Ġvalue To 1 Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠG X Prop Value Color ( value From 1 , Ġvalue To 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġclass ĠG X Prop Value Float ( val Ġvalue From : ĠFloat , Ġval Ġvalue To : ĠFloat ) Ġ: ĠG X Prop Value () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġcreate ( data : ĠJSONObject ): ĠG X Prop Value Float ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue From Ġ= Ġdata . getString Ext ( KEY _ VALUE _ FROM ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue To Ġ= Ġdata . getString Ext ( KEY _ VALUE _ TO ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value From . isNotEmpty () Ġ&& Ġvalue From . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠG X Prop Value Float ( value From . toFloat (), Ġvalue To . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠG X Prop ValueType Ġ{ ĊĠĠĠĠĠĠĠ ĠInt Type , ĊĠĠĠĠĠĠĠ ĠFloat Type , ĊĠĠĠĠĠĠĠ ĠColor Type ; ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġcreate ( value : ĠString ) Ġ= Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" int Type " Ġ-> ĠInt Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" float Type " Ġ-> ĠFloat Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" color Type " Ġ-> ĠColor Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠG X Prop Interpolator Ġ{ ĊĠĠĠĠĠĠĠ ĠLINE AR , ĊĠĠĠĠĠĠĠ ĠAC CELER ATE , ĊĠĠĠĠĠĠĠ ĠDE CELER ATE , ĊĠĠĠĠĠĠĠ ĠST AND ARD , ĊĠĠĠĠĠĠĠ ĠAN T IC IP ATE , ĊĠĠĠĠĠĠĠ ĠOVER SHO OT , ĊĠĠĠĠĠĠĠ ĠSPR ING , ĊĠĠĠĠĠĠĠ ĠBO UN CE , ĊĠĠĠĠĠĠĠ ĠCOS INE ; ĊĊĠĠĠĠĠĠĠ Ġfun Ġvalue (): ĠInterpol ator Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( this ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLINE AR Ġ-> ĠGa ia Motion Curve Linear Interpolator () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAC CELER ATE Ġ-> ĠGa ia Motion Curve Accel erate Interpolator () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDE CELER ATE Ġ-> ĠGa ia Motion Curve De cel erate Interpolator () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠST AND ARD Ġ-> ĠGa ia Motion Curve Standard Interpolator () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAN T IC IP ATE Ġ-> ĠGa ia Motion Curve Ant icip ate Interpolator () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOVER SHO OT Ġ-> ĠGa ia Motion Curve Over shoot Interpolator () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSPR ING Ġ-> ĠGa ia Motion Curve Spring Interpolator () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBO UN CE Ġ-> ĠGa ia Motion Curve Bo unce Interpolator () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCOS INE Ġ-> ĠGa ia Motion Curve Cos ine Interpolator () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLinear Interpolator () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ LINEAR Ġ= Ġ" LINEAR " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ AC CELER ATE Ġ= Ġ" AC CELER ATE " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ DE CELER ATE Ġ= Ġ" DE CELER ATE " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ STANDARD Ġ= Ġ" STANDARD " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ ANT IC IP ATE Ġ= Ġ" ANT IC IP ATE " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ OVER SHO OT Ġ= Ġ" OVER SHO OT " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ SPR ING Ġ= Ġ" SPR ING " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ BOUN CE Ġ= Ġ" BOUN CE " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ COS INE Ġ= Ġ" COS INE " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġcreate ( value : ĠString ) Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . equals ( KEY _ LINEAR , Ġtrue ) Ġ-> ĠLINE AR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . equals ( KEY _ AC CELER ATE , Ġtrue ) Ġ-> ĠAC CELER ATE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . equals ( KEY _ DE CELER ATE , Ġtrue ) Ġ-> ĠDE CELER ATE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . equals ( KEY _ STANDARD , Ġtrue ) Ġ-> ĠST AND ARD ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . equals ( KEY _ ANT IC IP ATE , Ġtrue ) Ġ-> ĠAN T IC IP ATE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . equals ( KEY _ OVER SHO OT , Ġtrue ) Ġ-> ĠOVER SHO OT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . equals ( KEY _ SPR ING , Ġtrue ) Ġ-> ĠSPR ING ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . equals ( KEY _ BOUN CE , Ġtrue ) Ġ-> ĠBO UN CE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . equals ( KEY _ COS INE , Ġtrue ) Ġ-> ĠCOS INE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠST AND ARD ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠG X Prop Name Ġ{ ĊĠĠĠĠĠĠĠ ĠPOSITION _ X , ĊĠĠĠĠĠĠĠ ĠPOSITION _ Y , ĊĠĠĠĠĠĠĠ ĠOP ACITY , ĊĠĠĠĠĠĠĠ ĠSC ALE , ĊĠĠĠĠĠĠĠ ĠROT ATION , ĊĠĠĠĠĠĠĠ ĠR ENDER _ COLOR ; ĊĊĠĠĠĠĠĠĠ Ġfun ĠsetValue ( target View : ĠView , Ġfinal Value : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPOSITION _ X Ġ-> Ġset Position X ( target View , Ġfinal Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPOSITION _ Y Ġ-> Ġset Position Y ( target View , Ġfinal Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOP ACITY Ġ-> Ġset Opacity ( target View , Ġfinal Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSC ALE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Scale X ( target View , Ġfinal Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Scale Y ( target View , Ġfinal Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠROT ATION Ġ-> Ġset Rotation ( target View , Ġfinal Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Color Value ( target View : ĠView , Ġcolor : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Render Color ( target View , Ġcolor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġset Position X ( target View : ĠView , Ġvalue : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget View . translation X Ġ= Ġvalue . dp To Px () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġset Position Y ( target View : ĠView , Ġvalue : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget View . translation Y Ġ= Ġvalue . dp To Px () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġset Opacity ( target View : ĠView , Ġvalue : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget View . alpha Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġset Scale X ( target View : ĠView , Ġvalue : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget View . scale X Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġset Scale Y ( target View : ĠView , Ġvalue : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget View . scale Y Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġset Rotation ( target View : ĠView , Ġvalue : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget View . rotation Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġset Render Color ( target View : ĠView , Ġvalue : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( target View Ġis ĠTextView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget View . setTextColor ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget View . set BackgroundColor ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ POSITION _ X Ġ= Ġ" position X " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ POSITION _ Y Ġ= Ġ" position Y " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ OP ACITY Ġ= Ġ" opacity " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ SCALE Ġ= Ġ" scale " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ ROT ATION Ġ= Ġ" rotation " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ RENDER _ COLOR Ġ= Ġ" render Color " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġcreate ( value : ĠString ?) Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . equals ( KEY _ POSITION _ X , Ġtrue ) Ġ-> ĠPOSITION _ X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . equals ( KEY _ POSITION _ Y , Ġtrue ) Ġ-> ĠPOSITION _ Y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . equals ( KEY _ OP ACITY , Ġtrue ) Ġ-> ĠOP ACITY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . equals ( KEY _ SCALE , Ġtrue ) Ġ-> ĠSC ALE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . equals ( KEY _ ROT ATION , Ġtrue ) Ġ-> ĠROT ATION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . equals ( KEY _ RENDER _ COLOR , Ġtrue ) Ġ-> ĠR ENDER _ COLOR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠG X Prop Ordering Type Ġ{ ĊĠĠĠĠĠĠĠ ĠTO GET HER , ĊĠĠĠĠĠĠĠ ĠSEQ U ENT I ALLY ; ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠKEY _ ORDER ING Ġ= Ġ" ordering " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ SEQU ENT I ALLY Ġ= Ġ" SEQU ENT I ALLY " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġcreate ( value : ĠString ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value . equals ( KEY _ SEQU ENT I ALLY , Ġtrue )) ĠSEQ U ENT I ALLY Ġelse ĠTO GET HER ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }