/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠM oh amed ĠAl aa Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ*/ Ċ Ċ @ file : Jvm Mult if ile Class Ċ @ file : Jvm Name (" Context Utils ") Ċ Ċ package Ġm oh amed al aa . ma utils . core _ android . extensions Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . annotation .* Ċ import Ġandroidx . core . content . Context Compat Ċ Ċ // Ġ==> ĠLayout Ċ Ċ /** Ġ- ĠLayout Ġinflater Ġfrom Ġ` receiver `, Ġby Ġusing Ġ[ LayoutInflater . from ] Ġ*/ Ċ val ĠContext . layout Inflater : ĠLayoutInflater ĊĠĠĠ Ġget () Ġ= ĠLayoutInflater . from ( this ) Ċ Ċ /** Ċ Ġ* Ġ- ĠIn fl ates Ġa Ġlayout Ġfrom Ġ[ layout Res ] Ġisa . Ċ Ġ* Ċ Ġ* Ġ@ param Ġparent Ġprovide Ġ[ ViewGroup . LayoutParams ] Ġto Ġthe Ġreturned Ġroot Ġview , Ġdefault Ġis Ġ` null ` Ċ Ġ* Ġ@ param Ġattach To Root Ġif Ġtrue Ġthen Ġthe Ġreturned Ġview Ġwill Ġbe Ġattached Ġto Ġ[ parent ] Ġif Ġnot Ġ` null `, Ċ Ġ* Ġdefault Ġis Ġfalse Ġisa . Ċ Ġ* Ċ Ġ* Ġ@ return Ġroot View Ġin Ġthe Ġprovided Ġ[ layout Res ] Ġisa . Ċ Ġ*/ Ċ @ Jvm Over loads Ċ fun ĠContext . inflate Layout (@ Layout Res Ġlayout Res : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent : ĠViewGroup ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattach To Root : ĠBoolean Ġ= Ġfalse ): ĠView Ġ{ ĊĠĠĠ Ġreturn Ġlayout Inflater . inflate ( layout Res , Ġparent , Ġattach To Root ) Ċ } Ċ Ċ // Ġ==> ĠColor Ċ Ċ /** Ġ@ return Ġcolor Ġfrom Ġres Ġcolor Ġwith Ġcompatibility Ġin Ġconsideration . Ġ*/ Ċ @ Color Int Ċ fun ĠContext . getColor From Res (@ Color Res Ġres : ĠInt ): ĠInt Ġ= ĠContext Compat . getColor ( this , Ġres ) Ċ Ċ /** Ċ Ġ* Ġ@ return Ġcolor Ġfrom Ġattr Ġres Ġthat Ġrefers Ġto Ġa Ġcolor , ĠEx . ĠR . attr . color Primary Ċ Ġ* Ċ Ġ* Ġ@ see ĠResources . Theme . getColor From Attr Res Ċ Ġ*/ Ċ @ Color Int Ċ fun ĠContext . getColor From Attr Res (@ Attr Res Ġattr Res : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġval Ġtyped Value Ġ= ĠTyped Value () ĊĠĠĠ Ġtheme . resolve Attribute ( attr Res , Ġtyped Value , Ġtrue ) ĊĊĠĠĠ Ġreturn ĠContext Compat . getColor ( this , Ġtyped Value . resourceId ) Ċ } Ċ Ċ // Ġ==> ĠDrawable Ċ Ċ /** Ġ@ return Ġ[ Drawable ] Ġfrom Ġdrawable Ġres Ġif Ġvalid Ġotherwise Ġnull Ġwill Ġbe Ġreturned Ġisa . Ġ*/ Ċ @ Jvm Over loads Ċ fun ĠContext . get Drawable From Res OrNull (@ Drawable Res Ġdrawable Res : ĠInt , Ġ@ Color Int Ġt int Color Int : ĠInt ? Ġ= Ġnull ): ĠDrawable ? Ġ= Ġrun Catch ing Ġ{ ĊĠĠĠ Ġif Ġ( tint Color Int Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ ĠContext Compat . get Drawable ( this , Ġdrawable Res ) ĊĠĠĠ Ġ} else Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdrawable Ġ= ĠContext Compat . get Drawable ( this , Ġdrawable Res )?. mutate () ĊĠĠĠĠĠĠĠ Ġdrawable . tint Compat ( tint Color Int ) ĊĊĠĠĠĠĠĠĠ Ġdrawable ĊĠĠĠ Ġ} Ċ }. get OrNull () Ċ Ċ /** Ċ Ġ* Ġ@ return Ġsame Ġas Ġ[ get Drawable From Res OrNull ] Ġbut Ġthrows Ġexception Ġinstead Ġof Ġreturning Ġnull Ġisa . Ċ Ġ*/ Ċ @ Jvm Over loads Ċ fun ĠContext . get Drawable From Res (@ Drawable Res Ġdrawable Res : ĠInt , Ġ@ Color Int Ġt int Color Int : ĠInt ? Ġ= Ġnull ): ĠDrawable ĊĠĠĠ Ġ= Ġget Drawable From Res OrNull ( drawable Res , Ġt int Color Int ) Ġ?: Ġthrow ĠRuntimeException (" invalid Ġdrawable Ġres Ġprovided ") Ċ Ċ // Ġ==> ĠDim en Ċ Ċ /** Ġ@ return Ġconverted Ġdim en Ġfrom Ġdp Ġ( density - independent Ġpixels ) Ġto Ġpx Ġ( pixels ) Ġ*/ Ċ fun ĠContext . dp To Px ( dp : ĠInt ): ĠFloat Ġ= ĠTyped Value . apply Dimension ( ĊĠĠĠ ĠTyped Value . COMPLEX _ UNIT _ DIP , ĊĠĠĠ Ġdp . toFloat (), ĊĠĠĠ Ġresources . display Metrics Ċ ) Ċ Ċ /** Ġ@ return Ġconverted Ġdim en Ġfrom Ġsp Ġ( scale - independent Ġpixels ) Ġto Ġpx Ġ( pixels ) Ġ*/ Ċ fun ĠContext . sp To Px ( sp : ĠInt ): ĠFloat Ġ= ĠTyped Value . apply Dimension ( ĊĠĠĠ ĠTyped Value . COMPLEX _ UNIT _ SP , ĊĠĠĠ Ġsp . toFloat (), ĊĠĠĠ Ġresources . display Metrics Ċ ) Ċ