package Ġdev . rom a ing uy . ap ex Ċ Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Rect F Ċ import Ġandroid . graphics . Type face Ċ import Ġandroid . util . Display Metrics Ċ import Ġkotlin . collections . Mutable Map Ċ import Ġkotlin . collections . mutable Map Of Ċ import Ġkotlin . collections . set Ċ import Ġkotlin . math . floor Ċ import Ġkotlin . reflect . K Class Ċ Ċ class ĠPro viders Ġ{ ĊĠĠĠ Ġprivate Ġval Ġproviders : ĠMutable Map < K Class <* >, ĠAny > Ġ= Ġmutable Map Of () ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġget (): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis [ T :: class ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġoperator Ġfun Ġ< T Ġ: ĠAny > Ġget ( type : ĠK Class < T >) Ġ= Ġproviders [ type ] Ġas ĠT ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT : ĠAny > Ġset ( provider : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis [ T :: class ] Ġ= Ġprovider ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġ< T : ĠAny > Ġset ( type : ĠK Class < T >, Ġprovider : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġproviders [ type ] Ġ= Ġprovider ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcopy Of (): ĠPro viders Ġ= ĠPro viders (). apply Ġ{ Ġproviders . put All ( this @ Providers . providers ) Ġ} Ċ } Ċ Ċ class ĠD ensity Provider ( val Ġdensity : ĠFloat ) Ġ{ ĊĠĠĠ Ġfun Ġto Px ( v : ĠFloat ) Ġ= Ġfloor (( v Ġ* Ġdensity ) Ġ+ Ġ 0 . 5 f ) ĊĠĠĠ Ġfun Ġto Px ( r : ĠRect F ) Ġ= ĠRect F ( to Px ( r . left ), Ġto Px ( r . top ), Ġto Px ( r . right ), Ġto Px ( r . bottom )) Ċ } Ċ Ċ context ( Density Provider ) Ċ @ Suppress (" NOTH ING _ TO _ INLINE ") Ċ inline Ġfun ĠFloat . to Px () Ġ= Ġto Px ( this ) Ċ Ċ context ( Density Provider ) Ċ @ Suppress (" NOTH ING _ TO _ INLINE ") Ċ inline Ġfun ĠRect F . to Px () Ġ= Ġto Px ( this ) Ċ Ċ class ĠDisplay Provider ( val Ġdisplay : ĠDisplay Metrics ) Ċ Ċ class ĠResources Provider ( val Ġresources : ĠResources ) Ċ Ċ class ĠTheme Provider ( ĊĠĠĠ Ġval Ġborder : ĠColor Ġ= ĠColor . valueOf ( 0 . 2 5 f , Ġ 0 . 5 3 f , Ġ 0 . 9 4 f ), ĊĠĠĠ Ġval Ġbackground : ĠColor Ġ= ĠColor . valueOf ( 1 . 0 f , Ġ 1 . 0 f , Ġ 1 . 0 f ), ĊĠĠĠ Ġval Ġcontent Background : ĠColor Ġ= ĠColor . valueOf ( 0 . 7 5 f , Ġ 0 . 8 5 f , Ġ 0 . 9 5 f ), ĊĠĠĠ Ġval Ġdisabled : ĠColor Ġ= Ġborder . des atur ated (), ĊĠĠĠ Ġval Ġcontent Disabled : ĠColor Ġ= ĠColor . valueOf ( 0 . 9 2 f , Ġ 0 . 9 2 f , Ġ 0 . 9 2 f ), ĊĠĠĠ Ġval Ġtext : ĠColor Ġ= ĠColor . valueOf ( 0 . 2 5 f , Ġ 0 . 5 3 f , Ġ 0 . 9 4 f , Ġ 0 . 8 f ), ĊĠĠĠ Ġval ĠfontSize : ĠFloat Ġ= Ġ 1 8 . 0 f , ĊĠĠĠ Ġval Ġtype face : ĠType face Ġ= ĠType face . create (" sans - serif - condensed ", ĠType face . NORMAL ), ĊĠĠĠ Ġval Ġstyle : ĠPaint . Style Ġ= ĠPaint . Style . ST RO KE , ĊĠĠĠ Ġval Ġcorner Radius : ĠFloat Ġ= Ġ 6 . 0 f , ĊĠĠĠ Ġval ĠstrokeWidth : ĠFloat Ġ= Ġ 1 . 5 f Ċ ) Ċ