package Ġcom . food tech lab . ft l android u ikit . util Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Blend Mode Ċ import Ġandroid . graphics . Blend Mode Color Filter Ċ import Ġandroid . graphics . Port er D uff Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . os . Build Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . coordinator layout . widget . Coordinator Layout Ċ import Ġkotlin . math . round ToInt Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠUm alt Ġon Ġ 0 7 . 0 5 . 2 0 2 0 Ċ Ġ*/ Ċ Ċ fun ĠContext . dp To Px ( dp : ĠFloat ): ĠFloat Ġ{ ĊĠĠĠ Ġreturn ĠTyped Value . apply Dimension ( ĊĠĠĠĠĠĠĠ ĠTyped Value . COMPLEX _ UNIT _ DIP , ĊĠĠĠĠĠĠĠ Ġdp , ĊĠĠĠĠĠĠĠ Ġthis . resources . display Metrics ĊĠĠĠ Ġ) Ċ } Ċ Ċ /** Ċ Ġ* ĠÐľ ÐµÑĤ Ð¾Ð´ ĠÐ¿ÑĢ ÐµÐ² ÑĢÐ°Ñī Ð°ÐµÑĤ Ġdp ĠÐ² Ġpx ĠÐ¸ ĠÐ²Ð¾Ð· Ð²ÑĢÐ°Ñī Ð°ÐµÑĤ ĠÑĨ ÐµÐ» Ð¾Ñĩ Ð¸Ñģ Ð»ÐµÐ½ Ð½Ð¾Ðµ ĠÐ·Ð½Ð°ÑĩÐµÐ½Ð¸Ðµ Ċ Ġ*/ Ċ fun ĠContext . dp To Px Int ( dp : ĠFloat ): ĠInt Ġ{ ĊĠĠĠ Ġreturn ĠTyped Value . apply Dimension ( ĊĠĠĠĠĠĠĠ ĠTyped Value . COMPLEX _ UNIT _ DIP , ĊĠĠĠĠĠĠĠ Ġdp , ĊĠĠĠĠĠĠĠ Ġthis . resources . display Metrics ĊĠĠĠ Ġ). round ToInt () Ċ } Ċ Ċ fun ĠContext . sp To Px ( sp : ĠFloat ): ĠFloat Ġ{ ĊĠĠĠ Ġreturn ĠTyped Value . apply Dimension ( ĊĠĠĠĠĠĠĠ ĠTyped Value . COMPLEX _ UNIT _ SP , ĊĠĠĠĠĠĠĠ Ġsp , ĊĠĠĠĠĠĠĠ Ġresources . display Metrics ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Suppress (" DE PREC ATION ") Ċ fun ĠDrawable . change Color (@ Color Int Ġcolor : ĠInt ) Ġ{ ĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . Q ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcolor Filter Ġ= ĠBlend Mode Color Filter ( color , ĠBlend Mode . SRC _ IN ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġset Color Filter ( color , ĠPort er D uff . Mode . SRC _ IN ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun ĠView ?. find Suit able Parent (): ĠViewGroup ? Ġ{ ĊĠĠĠ Ġvar Ġview Ġ= Ġthis ĊĠĠĠ Ġvar Ġfallback : ĠViewGroup ? Ġ= Ġnull ĊĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( view Ġis ĠCoord inator Layout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe 've Ġfound Ġa ĠCoord inator Layout , Ġuse Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( view Ġis ĠFrame Layout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view . id Ġ== Ġandroid . R . id . content ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġwe 've Ġhit Ġthe Ġdecor Ġcontent Ġview , Ġthen Ġwe Ġdidn 't Ġfind Ġa ĠCo L Ġin Ġthe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhierarchy , Ġso Ġuse Ġit . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIt 's Ġnot Ġthe Ġcontent Ġview Ġbut Ġwe 'll Ġuse Ġit Ġas Ġour Ġfallback ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfallback Ġ= Ġview ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( view Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠElse , Ġwe Ġwill Ġloop Ġand Ġcrawl Ġup Ġthe Ġview Ġhierarchy Ġand Ġtry Ġto Ġfind Ġa Ġparent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġview . parent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Ġ= Ġif Ġ( parent Ġis ĠView ) Ġparent Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġwhile Ġ( view Ġ!= Ġnull ) ĊĊĠĠĠ Ġ// ĠIf Ġwe Ġreach Ġhere Ġthen Ġwe Ġdidn 't Ġfind Ġa ĠCo L Ġor Ġa Ġsuitable Ġcontent Ġview Ġso Ġwe 'll Ġfallback ĊĠĠĠ Ġreturn Ġfallback Ċ }