package Ġmo e . f eng . common . material . color utils Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Resources Ċ Ċ object ĠMaterial Colors Ġ{ ĊĊ ĉ private Ġlateinit Ġvar Ġcontext : ĠContext ĊĊ ĉ fun Ġinit ( app : ĠApplication ) Ġ{ Ċĉ ĉ context Ġ= Ġapp . application Context Ċ ĉ } ĊĊ ĉ operator Ġfun Ġget ( color Name : ĠColor Name ): ĠMaterial Color Getter Ġ= ĠMaterial Color Getter ( color Name ) ĊĊ ĉ fun Ġget Color Id ( color Name : ĠColor Name , Ġbrightness : ĠColor Level Ġ= ĠColor Level .` 5 0 0 `): ĠInt Ġ{ Ċĉ ĉ val Ġresource Id Ġ= Ġcontext . resources . getIdentifier ( Ċĉĉĉ ĉ " material _${ color Name . value }_${ brightness . value }", Ċĉĉĉ ĉ " color ", Ċĉĉĉ ĉ context . packageName Ċĉ ĉ ) Ċĉ ĉ return Ġresource Id Ċ ĉ } ĊĊ ĉ fun Ġget Color Int ( color Name : ĠColor Name , Ġbrightness : ĠColor Level ): ĠInt Ġ{ Ċĉ ĉ return Ġtry Ġ{ Ċĉĉ ĉ context . resources . getColor ( getColor Id ( color Name , Ġbrightness )) Ċĉ ĉ } Ġcatch Ġ( e : ĠResources . NotFoundException ) Ġ{ Ċĉĉĉ 0 x 0 0 0 0 0 0 0 0 Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ fun Ġparse Id To Color ( id : ĠInt ): ĠColor Name Ġ{ Ċĉ ĉ Color Name . values (). forEach Ġ{ Ġcolor Ġ-> Ċĉĉ ĉ Color Level . values (). forEach Ġ{ Ġbrightness Ġ-> Ċĉĉĉ ĉ if Ġ( getColor Id ( color , Ġbrightness ) Ġ== Ġid ) Ġ{ Ċĉĉĉĉ ĉ return Ġcolor Ċĉĉĉ ĉ } Ċĉĉ ĉ } Ċĉ ĉ } Ċĉ ĉ throw ĠIllegalArgumentException (" Unsupported Ġcolor Ġresource Ġid .") Ċ ĉ } ĊĊĊ ĉ fun Ġparse StringTo Color ( value : ĠString ): ĠColor Name Ġ= ĠColor Name . values (). find Ġ{ Ġit . value Ġ== Ġvalue Ġ} !! ĊĊ ĉ class ĠMaterial Color Getter Ġinternal Ġconstructor ( private Ġval Ġcolor Name : ĠColor Name ) Ġ{ Ċĉ ĉ operator Ġfun Ġget ( brightness : ĠColor Level ): ĠInt Ġ= Ġget Color Int ( color Name , Ġbrightness ) Ċ ĉ } Ċ Ċ }