package Ġstudio . for face . fluent notifications . utils Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroidx . core . graphics . drawable . Icon Compat Ċ import Ġstudio . for face . fluent notifications . Illegal Resource Exception Ċ import Ġstudio . for face . fluent notifications . app PackageName Ċ import Ġkotlin . properties . ReadOnly Property Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . reflect . K Property Ċ Ċ /** Ċ Ġ* ĠAn Ġinterface Ġfor ĠBuild ers Ġthat Ġprovides Ġ[ Resources ] Ċ Ġ* Ċ Ġ* Ġ@ author ĠD av ide ĠG i use p pe ĠF are lla Ċ Ġ*/ Ċ internal Ġinterface ĠRes ourced Builder Ġ{ ĊĊĠĠĠ Ġ/** Ġ@ return Ġ[ Resources ] Ġ*/ ĊĠĠĠ Ġval Ġresources : ĠResources Ċ } Ċ Ċ /** ĠA Ġ[ ReadOnly Property ] Ġthat Ġprovides Ġa Ġ[ Resources ] Ġ*/ Ċ internal Ġclass ĠResources Property Ġ: ĠReadOnly Property < Any , ĠResources > Ġ{ ĊĊĠĠĠ Ġ/** ĠA Ġreference Ġto Ġ[ Resources ] Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġresources : ĠResources ĊĊĠĠĠ Ġ/** ĠConstructor Ġthat Ġtakes Ġa Ġ[ Context ] Ġfor Ġprovide Ġ[ Resources ] Ġ*/ ĊĠĠĠ Ġconstructor ( Ġcontext : ĠContext Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġresources Ġ= Ġcontext . resources ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠConstructor Ġthat Ġtakes Ġa Ġ[ Resources ] Ġdirectly Ġ*/ ĊĠĠĠ Ġconstructor ( Ġresources : ĠResources Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . resources Ġ= Ġresources ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Resources ] ĊĠĠĠĠ Ġ* Ġ@ see ĠResources Property . resources ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠgetValue ( Ġthis Ref : ĠAny , Ġproperty : ĠK Property < *> Ġ) Ġ= Ġresources Ċ } Ċ Ċ /** Ċ Ġ* Ġ@ return Ġan Ġanonymous Ġ[ Res ourced Builder ] Ġoverriding Ġ[ Res ourced Builder . resources ] Ġby Ġa Ġ[ Resources Property ] Ġthat Ġtakes Ċ Ġ* Ġthe Ġreceiver Ġ[ Context ] Ġas Ġconstructor Ġparameter . Ċ Ġ* ĠE . g . Ġ` class ĠSome Builder ( Ġcontext : ĠContext Ġ): ĠResources Builder Ġby Ġcontext ()` Ċ Ġ*/ Ċ internal Ġoperator Ġfun ĠContext . invoke () Ġ= Ġobject Ġ: ĠRes ourced Builder Ġ{ ĊĠĠĠ Ġoverride Ġval Ġresources : ĠResources Ġby ĠResources Property ( Ġthis @ invoke Ġ) Ċ } Ċ Ċ /** Ċ Ġ* ĠIf Ġthe Ġreceiver Ġ[ Int ] Ġis Ġnot Ġ` null `, Ġtry Ġto Ġuse Ġit Ġas Ġ` Integer Res ` Ġfor Ġget Ġan Ġ[ Int ] Ġfrom Ġ[ Resources ], Ġelse Ġreturn Ċ Ġ* Ġitself . Ċ Ġ* Ċ Ġ* Ġ@ param Ġresources Ġ[ Resources ] Ġfor Ġtry Ġto Ġget Ġ[ Int ] Ġfrom ĠResources Ċ Ġ*/ Ċ internal Ġfun ĠInt ?. resource Or Self ( Ġresources : ĠResources Ġ): ĠInt ? Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( Ġthis Ġ== Ġnull Ġ) Ġnull ĊĠĠĠ Ġelse Ġhandle ( Ġthis Ġ) Ġ{ Ġresources . getInteger ( Ġthis Ġ) Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ@ return Ġan Ġanonymous Ġ[ Res ourced Builder ] Ġoverriding Ġ[ Res ourced Builder . resources ] Ġby Ġa Ġ[ Resources Property ] Ġthat Ġtakes Ċ Ġ* Ġthe Ġreceiver Ġ[ Resources ] Ġas Ġconstructor Ġparameter . Ċ Ġ* ĠE . g . Ġ` class ĠSome Builder ( Ġresources Ġ): ĠResources Builder Ġby Ġresource ()` Ċ Ġ*/ Ċ internal Ġoperator Ġfun ĠResources . invoke () Ġ= Ġobject Ġ: ĠRes ourced Builder Ġ{ ĊĠĠĠ Ġoverride Ġval Ġresources : ĠResources Ġby ĠResources Property ( Ġthis @ invoke Ġ) Ċ } Ċ Ċ /** Ċ Ġ* Ġ@ return Ġa Ġvalue Ġof Ġtype Ġ[ T ] Ġwith Ġthe Ġgiven Ġ[ resourceId ] Ġfrom Ġ[ Resources ] Ċ Ġ* Ġ@ throws ĠIllegal Resource Exception Ġif Ġit 's Ġimpossible Ġto Ġresolve Ġa Ġresource Ġfor Ġthe Ġgiven Ġ[ K Class ] Ġtype Ċ Ġ*/ Ċ @ Published Api Ċ internal Ġinline Ġoperator Ġfun Ġ< re ified ĠT Ġ: ĠAny > ĠResources . get ( Ġresource Id : ĠInt Ġ) Ġ= Ġget ( ĠT :: class , Ġresource Id Ġ) Ċ Ċ /** ĠTODO Ġimplements Ġother Ġresource 's Ġtypes Ċ Ġ* Ġ@ return Ġa Ġvalue Ġof Ġtype Ġ[ T ] Ġwith Ġthe Ġgiven Ġ[ resourceId ] Ġfrom Ġ[ Resources ] Ċ Ġ* Ġ@ throws ĠIllegal Resource Exception Ġif Ġit 's Ġimpossible Ġto Ġresolve Ġa Ġresource Ġfor Ġthe Ġgiven Ġ[ K Class ] Ġtype Ċ Ġ*/ Ċ @ Published Api Ċ internal Ġoperator Ġfun Ġ< T Ġ: ĠAny > ĠResources . get ( Ġt Class : ĠK Class < T >, Ġresource Id : ĠInt Ġ) Ġ: ĠT Ġ{ ĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ", Ġ" IMP LICIT _ CAST _ TO _ ANY ") Ġ// ĠCannot Ġhave Ġa Ġchecked Ġcast Ġsince ĠT Ġis ĠAny ĊĠĠĠ Ġreturn Ġwhen Ġ( t Class ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/* ĠString Ġand ĠNumbers Ġ*/ ĊĠĠĠĠĠĠĠ ĠCharSequence :: class Ġ-> ĠgetText ( resourceId ) ĊĠĠĠĠĠĠĠ ĠString :: class Ġ-> ĠgetString ( resourceId ) ĊĠĠĠĠĠĠĠ ĠInt :: class Ġ-> Ġget Integer ( resourceId ) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠImages Ġ*/ ĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġwill Ġcreate Ġa Ġlow - res ĠBitmap ĊĠĠĠĠĠĠĠ ĠBitmap :: class Ġ-> ĠBitmap Factory . decode Resource ( this , Ġresource Id ) ĊĠĠĠĠĠĠĠ ĠDrawable :: class Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" DE PREC ATION ") Ġ/* ĠTheme Ġactually Ġnot Ġsupported Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Drawable ( resourceId ) ĊĠĠĠĠĠĠĠ ĠIcon Compat :: class Ġ-> ĠIcon Compat . create With Resource ( this , Ġapp PackageName , Ġresource Id ) ĊĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegal Resource Exception ( t Class ) ĊĠĠĠ Ġ} Ġas ĠT Ċ } Ċ