package Ġcom . ly . wan android . page . login Ċ Ċ import Ġandroidx . compose . animation . Experimental Animation Api Ċ import Ġandroidx . compose . animation . core .* Ċ import Ġandroidx . compose . foundation . Image Ċ import Ġandroidx . compose . foundation . background Ċ import Ġandroidx . compose . foundation . layout .* Ċ import Ġandroidx . compose . foundation . shape . Circle Shape Ċ import Ġandroidx . compose . material .* Ċ import Ġandroidx . compose . material . icons . Icons Ċ import Ġandroidx . compose . material . icons . sharp . Close Ċ import Ġandroidx . compose . runtime .* Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . geometry . Size Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . graphics . Outline Ċ import Ġandroidx . compose . ui . graphics . Path Ċ import Ġandroidx . compose . ui . graphics . Shape Ċ import Ġandroidx . compose . ui . layout . Layout Ċ import Ġandroidx . compose . ui . layout . layout Id Ċ import Ġandroidx . compose . ui . res . p ainter Resource Ċ import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ import Ġandroidx . compose . ui . unit .* Ċ import Ġandroidx . constraint layout . compose . Constraint Layout Ċ import Ġandroidx . constraint layout . compose . Constraint Set Ċ import Ġcom . google . ac comp an ist . pager . Experimental Pager Api Ċ import Ġcom . ly . wan android . Local Nav Controller Ċ import Ġcom . ly . wan android . R Ċ import Ġcom . ly . wan android . base . widgets . W AppBar Ċ import Ġcom . ly . wan android . base . widgets . W AppBar Height Ċ import Ġcom . ly . wan android . ui . theme . main Or Surface Ċ import Ġcom . ly . wan android . ui . theme . on Main Or Surface Ċ Ċ private Ġobject ĠConstraint Ids Ġ{ ĊĠĠĠ Ġconst Ġval ĠHeader Ġ= Ġ" header " ĊĠĠĠ Ġconst Ġval ĠLogo Ġ= Ġ" Anim Logo " ĊĠĠĠ Ġconst Ġval ĠTitle Ġ= Ġ" Welcome Text " ĊĠĠĠ Ġconst Ġval ĠClose Btn Ġ= Ġ" Close Btn " ĊĠĠĠ Ġconst Ġval ĠB g Ġ= Ġ" Main Bg " ĊĠĠĠ Ġconst Ġval ĠV p Ġ= Ġ" view Pager " Ċ } Ċ Ċ private Ġenum Ġclass ĠE ye State Ġ{ ĊĠĠĠ ĠOpen , ĠClose Ċ } Ċ Ċ private Ġval Ġheader Constraints Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĊĠĠĠ ĠConstraint Set Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbg Ġ= Ġcreate Ref For ( Constraint Ids . Bg ) ĊĠĠĠĠĠĠĠ Ġval Ġlogo Ġ= Ġcreate Ref For ( Constraint Ids . Logo ) ĊĠĠĠĠĠĠĠ Ġval Ġclose Btn Ġ= Ġcreate Ref For ( Constraint Ids . Close Btn ) ĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġcreate Ref For ( Constraint Ids . Title ) ĊĠĠĠĠĠĠĠ Ġval Ġvp Ġ= Ġcreate Ref For ( Constraint Ids . Vp ) ĊĠĠĠĠĠĠĠ Ġconstr ain ( close Btn ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop . link To ( parent . top ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart . link To ( parent . start ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġconstr ain ( bg ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop . link To ( close Btn . bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart . link To ( parent . start ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend . link To ( parent . end ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġconstr ain ( vp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart . link To ( parent . start ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend . link To ( parent . end ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop . link To ( bg . bottom , Ġmargin Ġ= Ġ(- 5 8 ). dp ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġconstr ain ( logo ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop . link To ( close Btn . bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcenter H orizontally To ( parent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġconstr ain ( title ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop . link To ( logo . bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcenter H orizontally To ( parent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ @ Opt In ( Experimental Pager Api :: class ) Ċ @ Composable Ċ fun ĠLogin Page () Ġ{ ĊĠĠĠ ĠScaffold Ġ{ ĊĠĠĠĠĠĠĠ ĠConstraint Layout ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint Set Ġ= Ġheader Constraints , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . layout Id ( Constraint Ids . Header ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠHorizontal Pager ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġ= Ġ 2 , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. layout Id ( Constraint Ids . Vp ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. height ( 3 0 0 . dp ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. background ( Color . Red ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHeader Bg ( modifier Ġ= ĠModifier . layout Id ( Constraint Ids . Bg )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClose Btn ( modifier Ġ= ĠModifier . layout Id ( Constraint Ids . Close Btn )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnim Logo ( modifier Ġ= ĠModifier . layout Id ( Constraint Ids . Logo )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTitle ( modifier Ġ= ĠModifier . layout Id ( Constraint Ids . Title )) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠClose Btn ( modifier : ĠModifier Ġ= ĠModifier ) Ġ{ ĊĠĠĠ ĠW AppBar ( modifier Ġ= Ġmodifier , Ġnavigation Icon Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnav Controller Ġ= ĠLocal Nav Controller . current ĊĠĠĠĠĠĠĠ ĠIcon Button ( onClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . pop Back Stack () ĊĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Vector Ġ= ĠIcons . Sharp . Close , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ" close ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt int Ġ= ĠMaterial Theme . colors . on Main Or Surface ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠHeader Bg ( modifier : ĠModifier Ġ= ĠModifier ) Ġ{ ĊĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠ Ġmodifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. height ( 2 6 0 . dp Ġ- ĠW AppBar Height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. background ( Material Theme . colors . main Or Surface , Ġshape Ġ= Ġobject Ġ: ĠShape Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Outline ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize : ĠSize , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Direction : ĠLayout Direction , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdensity : ĠD ensity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠOut line Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĠPath (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . moveTo ( 0 f , Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . lineTo ( 0 f , Ġsize . height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . quadr atic Bezier To ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . width Ġ/ Ġ 2 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . height Ġ- Ġ 3 0 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . lineTo ( size . width , Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . lineTo ( 0 f , Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠOut line . Generic ( path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠTitle ( modifier : ĠModifier Ġ= ĠModifier ) Ġ{ ĊĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" æ¬¢ è¿İ ä½¿çĶ¨ ", ĊĠĠĠĠĠĠĠ ĠfontSize Ġ= Ġ 2 2 . sp , ĊĠĠĠĠĠĠĠ Ġcolor Ġ= ĠMaterial Theme . colors . on Main Or Surface , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠAnim Logo ( modifier : ĠModifier Ġ= ĠModifier ) Ġ{ ĊĊĠĠĠ Ġvar Ġeye Height Ġby Ġremember Ġ{ ĊĠĠĠĠĠĠĠ Ġmutable State Of ( 0 f ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġoffset Y Ġby Ġanimate Float As State ( ĊĠĠĠĠĠĠĠ Ġtarget Value Ġ= Ġeye Height , Ġanimation Spec Ġ= Ġinfinite Repeat able ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Ġ= Ġt ween ( 2 0 0 , Ġeasing Ġ= ĠFast Out Slow In E asing , Ġdelay Millis Ġ= Ġ 1 5 0 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat Mode Ġ= ĠRepeat Mode . Reverse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) Ċ // ĠĠĠ Ġval Ġinfinite Transition Ġ= Ġremember Infinite Transition () Ċ // ĠĠĠ Ġval Ġoffset Y Ġby Ġinfinite Transition . animate Value ( Ċ // ĠĠĠĠĠĠĠ Ġinitial Value Ġ= Ġ 0 f , Ċ // ĠĠĠĠĠĠĠ Ġtarget Value Ġ= Ġeye Height , Ċ // ĠĠĠĠĠĠĠ Ġtype Converter Ġ= ĠTwo Way Converter ({ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠAnimation Vector ( it ) Ċ // ĠĠĠĠĠĠĠ Ġ}) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġit . value Ċ // ĠĠĠĠĠĠĠ Ġ}, Ċ // ĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġinfinite Repeat able ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Ġ= Ġt ween ( 2 0 0 , Ġeasing Ġ= ĠFast Out Slow In E asing , Ġdelay Millis Ġ= Ġ 1 5 0 0 ), Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat Mode Ġ= ĠRepeat Mode . Reverse Ċ // ĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠ Ġ) ĊĊĊĠĠĠ ĠLayout ( modifier Ġ= Ġmodifier . size ( 1 0 0 . dp ), Ġcontent Ġ= Ġ{ ĊĠĠĠĠĠĠĠ ĠLogo () ĊĠĠĠĠĠĠĠ ĠE ye () ĊĠĠĠĠĠĠĠ ĠE ye () ĊĠĠĠ Ġ}, Ġmeasure Policy Ġ= Ġ{ Ġmeasures , Ġconstraints Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġlogo Place able Ġ= Ġmeasures [ 0 ]. measure ( constraints ) ĊĠĠĠĠĠĠĠ Ġval Ġmin Size Ġ= Ġlogo Place able . width . coerce At Most ( logo Place able . height ) ĊĠĠĠĠĠĠĠ Ġval Ġeye Size Ġ= Ġ( min Size Ġ* Ġ 0 . 1 f ). toInt () ĊĠĠĠĠĠĠĠ Ġeye Height Ġ= Ġeye Size . toFloat () ĊĠĠĠĠĠĠĠ Ġval Ġeye Constraints Ġ= ĠConstraints ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠminWidth Ġ= Ġeye Size , ĠmaxHeight Ġ= Ġeye Size , ĠminHeight Ġ= Ġeye Size , ĠmaxWidth Ġ= Ġeye Size ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġleft Eye Place able Ġ= Ġmeasures [ 1 ]. measure ( eye Constraints ) ĊĠĠĠĠĠĠĠ Ġval Ġright Eye Place able Ġ= Ġmeasures [ 2 ]. measure ( eye Constraints ) ĊĠĠĠĠĠĠĠ Ġval Ġleft Eye Offset X Ġ= Ġ( min Size Ġ* Ġ 0 . 2 3 1 f ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġleft Eye Offset Y Ġ= Ġ( min Size Ġ* Ġ 0 . 4 5 ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġright Eye Offset X Ġ= Ġ( min Size Ġ* Ġ( 1 Ġ- Ġ 0 . 3 2 7 f )). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġright Eye Offset Y Ġ= Ġ( min Size Ġ* Ġ 0 . 4 5 ). toInt () ĊĠĠĠĠĠĠĠ Ġlayout ( logo Place able . width , Ġlogo Place able . height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogo Place able . place ( 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Eye Place able . place ( left Eye Offset X , Ġleft Eye Offset Y Ġ+ Ġoffset Y . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Eye Place able . place ( right Eye Offset X , Ġright Eye Offset Y Ġ+ Ġoffset Y . toInt ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠLogo () Ġ{ ĊĠĠĠ ĠImage ( p ainter Ġ= Ġpainter Resource ( id Ġ= ĠR . drawable . logo ), Ġcontent Description Ġ= Ġ" logo ") Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠE ye () Ġ{ ĊĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. size In () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. background ( Color . White , ĠCircle Shape ) ĊĠĠĠ Ġ) Ċ } ĊĊ Ċ @ Experimental Animation Api Ċ @ Opt In ( Experimental Material Api :: class ) Ċ @ Preview Ċ @ Composable Ċ fun ĠLogo Pre () Ġ{ ĊĠĠĠ ĠLogin Page () Ċ }