/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 - 2 0 2 1 ĠA ur ora , ĠK ir ill ĠGro uch nik ov Ċ Ġ* Ċ Ġ* Ġ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 Ġorg . push ing pixels . aur ora . component Ċ Ċ import Ġandroidx . compose . animation . core .* Ċ import Ġandroidx . compose . foundation . Canvas Ċ import Ġandroidx . compose . foundation . interaction . Mutable Interaction Source Ċ import Ġandroidx . compose . foundation . interaction . collect Is Hover ed As State Ċ import Ġandroidx . compose . foundation . interaction . collect Is Pressed As State Ċ import Ġandroidx . compose . foundation . layout .* Ċ import Ġandroidx . compose . foundation . selection . toggle able Ċ import Ġandroidx . compose . runtime .* Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Experimental Compose Ui Api Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . geometry . Round Rect Ċ import Ġandroidx . compose . ui . graphics . Outline Ċ import Ġandroidx . compose . ui . graphics . draw Outline Ċ import Ġandroidx . compose . ui . graphics . draw scope . Fill Ċ import Ġandroidx . compose . ui . semantics . Role Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġorg . push ing pixels . aur ora . common . A ur ora Internal Api Ċ import Ġorg . push ing pixels . aur ora . common . with Alpha Ċ import Ġorg . push ing pixels . aur ora . component . model . Selector Content Model Ċ import Ġorg . push ing pixels . aur ora . component . model . Selector Presentation Model Ċ import Ġorg . push ing pixels . aur ora . component . model . Selector S izing Constants Ċ import Ġorg . push ing pixels . aur ora . component . utils .* Ċ import Ġorg . push ing pixels . aur ora . the ming .* Ċ import Ġorg . push ing pixels . aur ora . the ming . utils . Mutable Color Scheme Ċ Ċ @ Immutable Ċ private Ġclass ĠRadio Button Drawing Cache ( ĊĠĠĠ Ġval Ġcolor Scheme : ĠMutable Color Scheme Ġ= ĠMutable Color Scheme ( ĊĠĠĠĠĠĠĠ ĠdisplayName Ġ= Ġ" Internal Ġmutable ", ĊĠĠĠĠĠĠĠ Ġis Dark Ġ= Ġfalse ĊĠĠĠ Ġ) Ċ ) Ċ Ċ @ Opt In ( Experimental Compose Ui Api :: class , ĠA ur ora Internal Api :: class ) Ċ @ Composable Ċ internal Ġfun ĠA ur ora RadioButton ( ĊĠĠĠ Ġmodifier : ĠModifier , ĊĠĠĠ Ġinteraction Source : ĠMutable Interaction Source , ĊĠĠĠ Ġcontent Model : ĠSelector Content Model , ĊĠĠĠ Ġpresentation Model : ĠSelector Presentation Model Ċ ) Ġ{ ĊĠĠĠ Ġval Ġdrawing Cache Ġ= Ġremember Ġ{ ĠRadio Button Drawing Cache () Ġ} ĊĠĠĠ Ġval Ġrol lover Ġby Ġinteraction Source . collect Is Hover ed As State () ĊĠĠĠ Ġval Ġis Pressed Ġby Ġinteraction Source . collect Is Pressed As State () ĊĊĠĠĠ Ġval Ġcurrent State Ġ= Ġremember Ġ{ ĊĠĠĠĠĠĠĠ Ġmutable State Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComponent State . getState ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Enabled Ġ= Ġcontent Model . enabled , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis R ollo ver Ġ= Ġrol lover , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Selected Ġ= Ġcontent Model . selected , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Pressed Ġ= Ġis Pressed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġmark Alpha Ġ= Ġremember Ġ{ Ġmutable State Of ( if Ġ( content Model . selected ) Ġ 1 . 0 f Ġelse Ġ 0 . 0 f ) Ġ} ĊĊĠĠĠ Ġ// ĠTransition Ġfor Ġthe Ġselection Ġstate ĊĠĠĠ Ġval Ġselection Transition Ġ= Ġupdate Transition ( content Model . selected ) ĊĠĠĠ Ġval Ġselected Fraction Ġby Ġselection Transition . animate Float ( ĊĠĠĠĠĠĠĠ Ġtransition Spec Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt ween ( duration Millis Ġ= ĠA ur ora Skin . animation Config . regular ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġ 0 . 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġ 1 . 0 f ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTransition Ġfor Ġthe Ġrol lover Ġstate ĊĠĠĠ Ġval Ġrol lover Transition Ġ= Ġupdate Transition ( rol lover ) ĊĠĠĠ Ġval Ġrol lover Fraction Ġby Ġrol lover Transition . animate Float ( ĊĠĠĠĠĠĠĠ Ġtransition Spec Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt ween ( duration Millis Ġ= ĠA ur ora Skin . animation Config . regular ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġ 0 . 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġ 1 . 0 f ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTransition Ġfor Ġthe Ġpressed Ġstate ĊĠĠĠ Ġval Ġpressed Transition Ġ= Ġupdate Transition ( is Pressed ) ĊĠĠĠ Ġval Ġpressed Fraction Ġby Ġpressed Transition . animate Float ( ĊĠĠĠĠĠĠĠ Ġtransition Spec Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt ween ( duration Millis Ġ= ĠA ur ora Skin . animation Config . regular ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġ 0 . 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġ 1 . 0 f ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTransition Ġfor Ġthe Ġenabled Ġstate ĊĠĠĠ Ġval Ġenabled Transition Ġ= Ġupdate Transition ( content Model . enabled ) ĊĠĠĠ Ġval Ġenabled Fraction Ġby Ġenabled Transition . animate Float ( ĊĠĠĠĠĠĠĠ Ġtransition Spec Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt ween ( duration Millis Ġ= ĠA ur ora Skin . animation Config . regular ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġ 0 . 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġ 1 . 0 f ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTODO Ġ- Ġfigure Ġout Ġwhy Ġthe Ġanimations Ġare Ġnot Ġrunning Ġwithout Ġlooking ĊĠĠĠ Ġ// Ġ Ġat Ġthe Ġresult Ġ( and Ġhow Ġit Ġlooks Ġlike Ġin Ġthe Ġnew Ġanimation ĠAPIs ) ĊĠĠĠ Ġval Ġtotal Fraction Ġ= Ġselected Fraction Ġ+ Ġrol lover Fraction Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpressed Fraction Ġ+ Ġenabled Fraction ĊĊĠĠĠ Ġval Ġmodel State Info Ġ= Ġremember Ġ{ ĠModel State Info ( currentState . value ) Ġ} ĊĠĠĠ Ġval Ġtransition Info Ġ= Ġremember Ġ{ Ġmutable State Of < Transition Info ? >( null ) Ġ} ĊĊĠĠĠ ĠState Transition Tracker ( ĊĠĠĠĠĠĠĠ Ġmodel State Info Ġ= Ġmodel State Info , ĊĠĠĠĠĠĠĠ Ġcurrent State Ġ= Ġcurrent State , ĊĠĠĠĠĠĠĠ Ġtransition Info Ġ= Ġtransition Info , ĊĠĠĠĠĠĠĠ Ġenabled Ġ= Ġcontent Model . enabled , ĊĠĠĠĠĠĠĠ Ġselected Ġ= Ġcontent Model . selected , ĊĠĠĠĠĠĠĠ Ġrol lover Ġ= Ġrol lover , ĊĠĠĠĠĠĠĠ Ġpressed Ġ= Ġis Pressed , ĊĠĠĠĠĠĠĠ Ġduration Ġ= ĠA ur ora Skin . animation Config . regular ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġif Ġ( transition Info . value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLa unched Effect ( currentState . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransition Float Ġ= ĠAnim atable ( transition Info . value !!. from ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġtransition Float . animate To ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Value Ġ= Ġtransition Info . value !!. to , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġt ween ( duration Millis Ġ= Ġtransition Info . value !!. duration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel State Info . update Active States ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . end Reason Ġ== ĠAnimation End Reason . Finished ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel State Info . update Active States ( 1 . 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel State Info . clear ( currentState . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠThe Ġtoggle able Ġmodifier Ġis Ġset Ġon Ġthe Ġcheckbox Ġmark , Ġas Ġwell Ġas Ġon Ġthe ĊĠĠĠ Ġ// Ġcontent Ġso Ġthat Ġthe Ġwhole Ġthing Ġis Ġclick able Ġto Ġtoggle Ġthe Ġcontrol . ĊĠĠĠ Ġval Ġdecoration Area Type Ġ= ĠA ur ora Skin . decoration Area Type ĊĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( presentation Model . content Padding ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. aur ora Rich Tooltip ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrich Tooltip Ġ= Ġcontent Model . rich Tooltip , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresentation Model Ġ= Ġpresentation Model . rich Tooltip Presentation Model ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toggle able ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġcontent Model . selected , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Model . on Trigger Selected Change . invoke ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenabled Ġ= Ġcontent Model . enabled , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrole Ġ= ĠRole . RadioButton , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinteraction Source Ġ= Ġinteraction Source , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindication Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠPopulate Ġthe Ġcached Ġcolor Ġscheme Ġfor Ġfilling Ġthe Ġmark box ĊĠĠĠĠĠĠĠ Ġ// Ġbased Ġon Ġthe Ġcurrent Ġmodel Ġstate Ġinfo ĊĠĠĠĠĠĠĠ Ġpopulate Color Scheme ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawing Cache . color Scheme , Ġmodel State Info , Ġcurrent State . value , Ġdecoration Area Type , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor Scheme Association Kind . Mark Box ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// ĠAnd Ġretrieve Ġthe Ġmark Ġbox Ġcolors ĊĠĠĠĠĠĠĠ Ġval Ġfill Ul tra Light Ġ= Ġdrawing Cache . color Scheme . ul tra Light Color ĊĠĠĠĠĠĠĠ Ġval Ġfill Extra Light Ġ= Ġdrawing Cache . color Scheme . extra Light Color ĊĠĠĠĠĠĠĠ Ġval Ġfill Light Ġ= Ġdrawing Cache . color Scheme . light Color ĊĠĠĠĠĠĠĠ Ġval Ġfill Mid Ġ= Ġdrawing Cache . color Scheme . mid Color ĊĠĠĠĠĠĠĠ Ġval Ġfill Dark Ġ= Ġdrawing Cache . color Scheme . dark Color ĊĠĠĠĠĠĠĠ Ġval Ġfill Ul tra Dark Ġ= Ġdrawing Cache . color Scheme . ul tra Dark Color ĊĠĠĠĠĠĠĠ Ġval Ġfill Is Dark Ġ= Ġdrawing Cache . color Scheme . is Dark ĊĊĠĠĠĠĠĠĠ Ġ// ĠPopulate Ġthe Ġcached Ġcolor Ġscheme Ġfor Ġdrawing Ġthe Ġmark box Ġborder ĊĠĠĠĠĠĠĠ Ġ// Ġbased Ġon Ġthe Ġcurrent Ġmodel Ġstate Ġinfo ĊĠĠĠĠĠĠĠ Ġpopulate Color Scheme ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawing Cache . color Scheme , Ġmodel State Info , Ġcurrent State . value , Ġdecoration Area Type , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor Scheme Association Kind . Border ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// ĠAnd Ġretrieve Ġthe Ġmark Ġbox Ġborder Ġcolors ĊĠĠĠĠĠĠĠ Ġval Ġborder Ul tra Light Ġ= Ġdrawing Cache . color Scheme . ul tra Light Color ĊĠĠĠĠĠĠĠ Ġval Ġborder Extra Light Ġ= Ġdrawing Cache . color Scheme . extra Light Color ĊĠĠĠĠĠĠĠ Ġval Ġborder Light Ġ= Ġdrawing Cache . color Scheme . light Color ĊĠĠĠĠĠĠĠ Ġval Ġborder Mid Ġ= Ġdrawing Cache . color Scheme . mid Color ĊĠĠĠĠĠĠĠ Ġval Ġborder Dark Ġ= Ġdrawing Cache . color Scheme . dark Color ĊĠĠĠĠĠĠĠ Ġval Ġborder Ul tra Dark Ġ= Ġdrawing Cache . color Scheme . ul tra Dark Color ĊĠĠĠĠĠĠĠ Ġval Ġborder Is Dark Ġ= Ġdrawing Cache . color Scheme . is Dark ĊĊĠĠĠĠĠĠĠ Ġ// ĠMark Ġcolor ĊĠĠĠĠĠĠĠ Ġval Ġmark Color Ġ= ĠgetState Aware Color ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel State Info , Ġcurrent State . value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecoration Area Type , ĠColor Scheme Association Kind . Mark ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġit . mark Color Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck mark Ġalpha Ġis Ġthe Ġcombined Ġstrength Ġof Ġall Ġthe ĊĠĠĠĠĠĠĠ Ġ// Ġstates Ġthat Ġhave Ġthe Ġselection Ġbit Ġturned Ġon ĊĠĠĠĠĠĠĠ Ġmark Alpha . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel State Info . state Contribution Map ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . key . is Facet Active ( Component State Facet . Selection ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . value Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sum Of Ġ{ Ġit . contribution . toDouble () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toFloat () ĊĊĠĠĠĠĠĠĠ Ġ// ĠText Ġcolor . ĠNote Ġthat Ġthe Ġtext Ġdoesn 't Ġ" part icip ate " Ġin Ġstate Ġchanges Ġthat ĊĠĠĠĠĠĠĠ Ġ// Ġinvolve Ġrol lover , Ġselection Ġor Ġpressed Ġbits ĊĠĠĠĠĠĠĠ Ġval ĠtextColor Ġ= Ġget TextColor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel State Info Ġ= Ġmodel State Info , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurr State Ġ= Ġcurrent State . value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġskin Colors Ġ= ĠA ur ora Skin . colors , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecoration Area Type Ġ= Ġdecoration Area Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Scheme Association Kind Ġ= ĠColor Scheme Association Kind . Fill , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Text In Filled Area Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġalpha Ġ= Ġif Ġ( currentState . value . is Disabled ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠA ur ora Skin . colors . get Alpha ( decoration Area Type , Ġcurrent State . value ) Ġelse Ġ 1 . 0 f ĊĊĠĠĠĠĠĠĠ Ġval Ġfill Painter Ġ= ĠA ur ora Skin . pain ters . fill Painter ĊĠĠĠĠĠĠĠ Ġval Ġborder Painter Ġ= ĠA ur ora Skin . pain ters . border Painter ĊĊĠĠĠĠĠĠĠ ĠCanvas ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . wrap Content Size ( Alignment . Center ). size ( presentation Model . mark Size ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġthis . size . width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġthis . size . height ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutline Ġ= ĠOut line . Rounded ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġround Rect Ġ= ĠRound Rect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġ= Ġ 0 . 5 f , Ġtop Ġ= Ġ 0 . 5 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Ġ= Ġwidth Ġ- Ġ 0 . 5 f , Ġbottom Ġ= Ġheight Ġ- Ġ 0 . 5 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġradius X Ġ= Ġ( width Ġ- Ġ 1 . 0 f ) Ġ/ Ġ 2 . 0 f , Ġradius Y Ġ= Ġ( height Ġ- Ġ 1 . 0 f ) Ġ/ Ġ 2 . 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPopulate Ġthe Ġcached Ġcolor Ġscheme Ġfor Ġfilling Ġthe Ġmark box ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawing Cache . color Scheme . ul tra Light Ġ= Ġfill Ul tra Light ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawing Cache . color Scheme . extra Light Ġ= Ġfill Extra Light ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawing Cache . color Scheme . light Ġ= Ġfill Light ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawing Cache . color Scheme . mid Ġ= Ġfill Mid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawing Cache . color Scheme . dark Ġ= Ġfill Dark ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawing Cache . color Scheme . ul tra Dark Ġ= Ġfill Ul tra Dark ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawing Cache . color Scheme . is Dark Ġ= Ġfill Is Dark ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawing Cache . color Scheme . foreground Ġ= ĠtextColor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfill Painter . paint Contour Background ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , Ġthis . size , Ġoutline , Ġdrawing Cache . color Scheme , Ġalpha ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPopulate Ġthe Ġcached Ġcolor Ġscheme Ġfor Ġdrawing Ġthe Ġmark box Ġborder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawing Cache . color Scheme . ul tra Light Ġ= Ġborder Ul tra Light ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawing Cache . color Scheme . extra Light Ġ= Ġborder Extra Light ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawing Cache . color Scheme . light Ġ= Ġborder Light ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawing Cache . color Scheme . mid Ġ= Ġborder Mid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawing Cache . color Scheme . dark Ġ= Ġborder Dark ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawing Cache . color Scheme . ul tra Dark Ġ= Ġborder Ul tra Dark ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawing Cache . color Scheme . is Dark Ġ= Ġborder Is Dark ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawing Cache . color Scheme . foreground Ġ= ĠtextColor ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutline Inner Ġ= Ġif Ġ( border Painter . is Paint ing Inner Outline ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOut line . Rounded ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġround Rect Ġ= ĠRound Rect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġ= Ġ 1 . 0 f , Ġtop Ġ= Ġ 1 . 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Ġ= Ġwidth Ġ- Ġ 1 . 0 f , Ġbottom Ġ= Ġheight Ġ- Ġ 1 . 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġradius X Ġ= Ġ( width Ġ- Ġ 2 . 0 f ) Ġ/ Ġ 2 . 0 f , Ġradius Y Ġ= Ġ( height Ġ- Ġ 2 . 0 f ) Ġ/ Ġ 2 . 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġelse Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġborder Painter . paint Border ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , Ġthis . size , Ġoutline , Ġoutline Inner , Ġdrawing Cache . color Scheme , Ġalpha ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDraw Ġthe Ġradio Ġmark Ġwith Ġthe Ġalpha Ġthat Ġcorresponds Ġto Ġthe Ġcurrent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġselection Ġand Ġpotential Ġtransition ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmark Center Ġ= Ġthis . size . width Ġ/ Ġ 2 . 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmark Radius Ġ= Ġthis . size . width Ġ/ Ġ 4 . 5 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutline Mark Ġ= ĠOut line . Rounded ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġround Rect Ġ= ĠRound Rect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġ= Ġmark Center Ġ- Ġmark Radius , Ġtop Ġ= Ġmark Center Ġ- Ġmark Radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Ġ= Ġmark Center Ġ+ Ġmark Radius , Ġbottom Ġ= Ġmark Center Ġ+ Ġmark Radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġradius X Ġ= Ġmark Radius , Ġradius Y Ġ= Ġmark Radius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNote Ġthat Ġwe Ġapply Ġalpha Ġtwice Ġ- Ġonce Ġfor Ġthe Ġselected Ġ/ Ġchecked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġstate Ġor Ġtransition , Ġand Ġthe Ġsecond Ġtime Ġbased Ġon Ġthe Ġenabled Ġstate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Outline ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutline Ġ= Ġoutline Mark , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġmark Color . with Alpha ( mark Alpha . value ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠFill , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Ġ= Ġalpha ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠSp acer ( modifier Ġ= ĠModifier . width ( Selector S izing Constants . Selector Mark Text Gap Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresentation Model . horizontal Gap Scale Factor )) ĊĠĠĠĠĠĠĠ Ġ// ĠPass Ġour Ġtext Ġcolor Ġand Ġmodel Ġstate Ġsnapshot Ġto Ġthe Ġchildren ĊĠĠĠĠĠĠĠ ĠComp osition Local Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocal TextColor Ġprovides ĠtextColor , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocal Model State Info Snapshot Ġprovides Ġmodel State Info . get Snapshot ( currentState . value ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . required Size In ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠminWidth Ġ= Ġ 0 . dp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠminHeight Ġ= Ġpresentation Model . mark Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ur ora Text ( text Ġ= Ġcontent Model . text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ