/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 - 2 0 2 1 ĠAnt on ĠTr ush kov Ċ Ġ* Ċ Ġ* Ġ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 Ġapp . the le ma . ui ĊĊ Ċ /** ĠValue Ġplaceholder , Ġallowing Ġthe Ġvalue Ġto Ġbe Ġcomputed Ġon Ġrequest . ĠValues Ġare Ġprovided Ġan Ġactor Ġfor Ġcontext Ġwhich Ġreduces Ġthe Ċ Ġ* Ġnumber Ġof Ġvalue Ġinstances Ġthat Ġneed Ġto Ġbe Ġcreated Ġand Ġreduces Ġverbosity Ġin Ġcode Ġthat Ġspecifies Ġvalues . Ċ Ġ* Ġ@ author ĠN athan ĠS weet Ċ Ġ*/ Ċ abstract Ġclass ĠValue Ġ{ ĊĠĠĠ Ġ/** ĠCalls Ġ[ get ] Ġwith Ġnull . Ġ Ġ*/ ĊĠĠĠ Ġfun Ġget (): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġ@ param Ġcontext ĠMay Ġbe Ġnull . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġoperator Ġfun Ġget ( context : ĠActor ?): ĠFloat ĊĊĠĠĠ Ġ/** ĠA Ġfixed Ġvalue Ġthat Ġis Ġnot Ġcomputed Ġeach Ġtime Ġit Ġis Ġused . ĊĠĠĠĠ Ġ* Ġ@ author ĠN athan ĠS weet ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠFixed ( private Ġval Ġvalue : ĠFloat ) Ġ: ĠValue () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget ( context : ĠActor ?): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalue . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcache Ġ= ĠarrayOf Null s < Fixed >( 1 1 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġvalue Of ( value : ĠFloat ): ĠFixed Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ== Ġ 0 f ) Ġreturn Ġzero ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ>= Ġ- 1 0 Ġ&& Ġvalue Ġ<= Ġ 1 0 0 Ġ&& Ġ( value Ġ== Ġvalue . toInt (). toFloat ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfixed Ġ= Ġcache [ value . toInt () Ġ+ Ġ 1 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fixed Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfixed Ġ= ĠFixed ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache [ value . toInt () Ġ+ Ġ 1 0 ] Ġ= Ġfixed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfixed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFixed ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĠA Ġvalue Ġthat Ġis Ġalways Ġzero . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġzero Ġ= ĠFixed ( 0 f ) ĊĠĠĠĠĠĠĠ Ġ/** ĠValue Ġthat Ġis Ġthe ĠminWidth Ġof Ġthe Ġactor Ġin Ġthe Ġcell . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar ĠminWidth : ĠValue Ġ= Ġobject Ġ: ĠValue () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget ( context : ĠActor ?): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( context Ġis ĠLayout ) Ġ( context Ġas ĠLayout ). min Width Ġelse Ġcontext ?. width Ġ?: Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ/** ĠValue Ġthat Ġis Ġthe ĠminHeight Ġof Ġthe Ġactor Ġin Ġthe Ġcell . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar ĠminHeight : ĠValue Ġ= Ġobject Ġ: ĠValue () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget ( context : ĠActor ?): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( context Ġis ĠLayout ) Ġ( context Ġas ĠLayout ). min Height Ġelse Ġcontext ?. height Ġ?: Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ/** ĠValue Ġthat Ġis Ġthe Ġpref Width Ġof Ġthe Ġactor Ġin Ġthe Ġcell . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġpref Width : ĠValue Ġ= Ġobject Ġ: ĠValue () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget ( context : ĠActor ?): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( context Ġis ĠLayout ) Ġ( context Ġas ĠLayout ). pref Width Ġelse Ġcontext ?. width Ġ?: Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ/** ĠValue Ġthat Ġis Ġthe Ġpref Height Ġof Ġthe Ġactor Ġin Ġthe Ġcell . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġpref Height : ĠValue Ġ= Ġobject Ġ: ĠValue () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget ( context : ĠActor ?): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( context Ġis ĠLayout ) Ġ( context Ġas ĠLayout ). pref Height Ġelse Ġcontext ?. height Ġ?: Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ/** ĠValue Ġthat Ġis Ġthe ĠmaxWidth Ġof Ġthe Ġactor Ġin Ġthe Ġcell . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar ĠmaxWidth : ĠValue Ġ= Ġobject Ġ: ĠValue () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget ( context : ĠActor ?): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( context Ġis ĠLayout ) Ġ( context Ġas ĠLayout ). maxWidth Ġelse Ġcontext ?. width Ġ?: Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ/** ĠValue Ġthat Ġis Ġthe ĠmaxHeight Ġof Ġthe Ġactor Ġin Ġthe Ġcell . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar ĠmaxHeight : ĠValue Ġ= Ġobject Ġ: ĠValue () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget ( context : ĠActor ?): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( context Ġis ĠLayout ) Ġ( context Ġas ĠLayout ). max Height Ġelse Ġcontext ?. height Ġ?: Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĠReturns Ġa Ġvalue Ġthat Ġis Ġa Ġpercentage Ġof Ġthe Ġactor 's Ġwidth . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġpercent Width ( percent : ĠFloat ): ĠValue Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠValue () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġoperator Ġfun Ġget ( context : ĠActor ?): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcontext !!. width Ġ* Ġpercent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĠReturns Ġa Ġvalue Ġthat Ġis Ġa Ġpercentage Ġof Ġthe Ġactor 's Ġheight . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġpercent Height ( percent : ĠFloat ): ĠValue Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠValue () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġoperator Ġfun Ġget ( context : ĠActor ?): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcontext !!. height Ġ* Ġpercent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĠReturns Ġa Ġvalue Ġthat Ġis Ġa Ġpercentage Ġof Ġthe Ġspecified Ġactor 's Ġwidth . ĠThe Ġcontext Ġactor Ġis Ġignored . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġpercent Width ( percent : ĠFloat , Ġactor : ĠActor ?): ĠValue Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire NotNull ( actor ) Ġ{ Ġ" actor Ġcannot Ġbe Ġnull ." Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠValue () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget ( context : ĠActor ?): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġactor . width Ġ* Ġpercent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĠReturns Ġa Ġvalue Ġthat Ġis Ġa Ġpercentage Ġof Ġthe Ġspecified Ġactor 's Ġheight . ĠThe Ġcontext Ġactor Ġis Ġignored . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġpercent Height ( percent : ĠFloat , Ġactor : ĠActor ?): ĠValue Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire NotNull ( actor ) Ġ{ Ġ" actor Ġcannot Ġbe Ġnull ." Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠValue () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget ( context : ĠActor ?): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġactor . height Ġ* Ġpercent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ