/* Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 2 1 ĠBy ĠG eek s ĠEmp ire . Ċ Ġ* Ċ Ġ* ĠCreated Ġby ĠE li as ĠF azel Ċ Ġ* ĠLast Ġmodified Ġ 4 / 1 2 / 2 1 Ġ 8 : 5 0 ĠAM Ċ Ġ* Ċ Ġ* ĠLicensed ĠUnder ĠMIT ĠLicense . Ċ Ġ* Ġhttps :// opensource . org / licenses / MIT Ċ Ġ*/ Ċ Ċ package Ġnet . ge ek semp ire . ready . keep . notes . Utils . UI . Display Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . util . Display Metrics Ċ import Ġandroid . util . Typed Value Ċ import Ġkotlin . math . pow Ċ import Ġkotlin . math . sqrt Ċ Ċ fun Ġcolumn Count ( context : ĠContext , Ġitem Width : ĠInt ): ĠInt Ġ{ ĊĊĠĠĠ Ġvar Ġspan Count Ġ= Ġ( display X ( context ) Ġ/ Ġdp To Pixel ( context , Ġitem Width . toFloat ())). toInt () ĊĊĠĠĠ Ġif Ġ( span Count Ġ< Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġspan Count Ġ= Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġspan Count Ċ } Ċ Ċ fun Ġdp To Pixel ( context : ĠContext , Ġdp : ĠFloat ): ĠFloat Ġ{ ĊĊĠĠĠ Ġval Ġresources : ĠResources Ġ= Ġcontext . resources ĊĊĠĠĠ Ġval Ġmetrics Ġ= Ġresources . display Metrics ĊĊĠĠĠ Ġreturn Ġdp Ġ* Ġ( metrics . density D pi . toFloat () Ġ/ ĠDisplay Metrics . D ENS ITY _ DEFAULT ) Ċ } Ċ Ċ fun Ġpixel To Dp ( context : ĠContext , Ġpx : ĠFloat ): ĠFloat Ġ{ ĊĊĠĠĠ Ġval Ġresources : ĠResources Ġ= Ġcontext . resources ĊĊĠĠĠ Ġval Ġmetrics Ġ= Ġresources . display Metrics ĊĊĠĠĠ Ġreturn Ġpx Ġ/ Ġ( metrics . density D pi . toFloat () Ġ/ ĠDisplay Metrics . D ENS ITY _ DEFAULT ) Ċ } Ċ Ċ fun ĠFloat . dp To Pixel ( context : ĠContext ): ĠFloat Ġ{ ĊĊĠĠĠ Ġval Ġresources : ĠResources Ġ= Ġcontext . resources ĊĊĠĠĠ Ġval Ġmetrics Ġ= Ġresources . display Metrics ĊĊĠĠĠ Ġreturn Ġthis @ dp To Pixel Ġ* Ġ( metrics . density D pi . toFloat () Ġ/ ĠDisplay Metrics . D ENS ITY _ DEFAULT ) Ċ } Ċ Ċ fun ĠFloat . pixel To Dp ( context : ĠContext ): ĠFloat Ġ{ ĊĊĠĠĠ Ġval Ġresources : ĠResources Ġ= Ġcontext . resources ĊĊĠĠĠ Ġval Ġmetrics Ġ= Ġresources . display Metrics ĊĊĠĠĠ Ġreturn Ġthis @ pixel To Dp Ġ/ Ġ( metrics . density D pi . toFloat () Ġ/ ĠDisplay Metrics . D ENS ITY _ DEFAULT ) Ċ } Ċ Ċ fun Ġdp To Integer ( context : ĠContext , Ġdp : ĠInt ): ĠInt Ġ{ ĊĊĠĠĠ Ġreturn ĠTyped Value . apply Dimension ( Typed Value . COMPLEX _ UNIT _ DIP , Ġdp . toFloat (), Ġcontext . resources . display Metrics ). toInt () Ċ } Ċ Ċ fun ĠFloat . sp To Integer ( context : ĠContext ) Ġ: ĠFloat Ġ{ ĊĊĠĠĠ Ġreturn ĠTyped Value . apply Dimension ( Typed Value . COMPLEX _ UNIT _ DIP , Ġthis @ sp To Integer , Ġcontext . resources . display Metrics ) Ċ } Ċ Ċ fun Ġpercentage Of Display ( context : ĠContext , Ġpercentage Amount : ĠFloat ) Ġ: ĠFloat Ġ{ ĊĊĠĠĠ Ġreturn Ġ(( display Diag onal ( context ) Ġ* Ġpercentage Amount ) Ġ/ Ġ 1 0 0 ). toFloat () Ċ } Ċ Ċ /** Ċ Ġ* ĠGet ĠTouch ĠPixel ĠPosition Ċ Ġ* Ġ@ param Ġdisplay End Ġ= Ġdisplay X () ĠOr Ġdisplay Y () Ċ Ġ**/ Ċ fun ĠFloat . pixel To Percentage ( display End : ĠFloat ): ĠFloat Ġ{ ĊĊĠĠĠ Ġreturn Ġ( this @ pixel To Percentage Ġ* Ġ 1 0 0 ) Ġ/ Ġdisplay End Ċ } Ċ Ċ /** Ċ Ġ* ĠGet ĠPer centage ĠPixel ĠPosition Ċ Ġ* Ġ@ param Ġdisplay End Ġ= Ġdisplay X () ĠOr Ġdisplay Y () Ċ Ġ**/ Ċ fun ĠFloat . percentage To Pixel ( display End : ĠFloat ): ĠFloat Ġ{ ĊĊĠĠĠ Ġreturn Ġ( this @ percentage To Pixel Ġ* Ġdisplay End ) Ġ/ Ġ 1 0 0 Ċ } Ċ Ċ fun Ġdisplay X ( context : ĠContext ): ĠInt Ġ{ ĊĊĠĠĠ Ġreturn Ġcontext . resources . display Metrics . width Pixels Ċ } Ċ Ċ fun Ġdisplay Y ( context : ĠContext ): ĠInt Ġ{ ĊĊĠĠĠ Ġreturn Ġcontext . resources . display Metrics . height Pixels Ċ } Ċ Ċ fun Ġdisplay Diag onal ( context : ĠContext ) Ġ: ĠDouble Ġ{ ĊĊĠĠĠ Ġreturn Ġsqrt (( display X ( context ). toDouble (). pow ( 2 . 0 )) Ġ+ Ġ( display Y ( context ). toDouble (). pow ( 2 . 0 ))) Ċ } Ċ Ċ fun Ġstatus Bar Height ( context : ĠContext ): ĠInt Ġ{ ĊĊĠĠĠ Ġvar Ġstatus Bar Height Ġ= Ġ 0 ĊĊĠĠĠ Ġval Ġresource Id Ġ= Ġcontext . resources . getIdentifier (" status _ bar _ height ", Ġ" dim en ", Ġ" android ") ĊĠĠĠ Ġif Ġ( resourceId Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstatus Bar Height Ġ= Ġcontext . resources . get Dimension Pixel Size ( resourceId ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġstatus Bar Height Ċ } Ċ Ċ fun Ġnavigation Bar Height ( context : ĠContext ): ĠInt Ġ{ ĊĊĠĠĠ Ġvar Ġnavigation Bar Height Ġ= Ġ 0 ĊĊĠĠĠ Ġval Ġresource Id NavigationBar : ĠInt Ġ= ĊĠĠĠĠĠĠĠ Ġcontext . resources . getIdentifier (" navigation _ bar _ height ", Ġ" dim en ", Ġ" android ") ĊĠĠĠ Ġif Ġ( resourceId NavigationBar Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnavigation Bar Height Ġ= Ġcontext . resources . get Dimension Pixel Size ( resourceId NavigationBar ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġnavigation Bar Height Ċ }