/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 - 2 0 1 9 ĠH az uki Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ*/ Ċ Ċ /* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 6 ĠZ hang ĠH ai Ġ< D ream ing . in . Code . ZH @ G mail . com > Ċ Ġ* ĠAll ĠRights ĠReserved . Ċ Ġ*/ Ċ Ċ package Ġjp . h az uki . y uz ub rowser . ui . widget . progress Ċ Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . graphics .* Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . annotation . Int Range Ċ import Ġandroidx . core . graphics . drawable . Tint Aware Drawable Ċ Ċ internal Ġabstract Ġclass ĠBase Drawable Ġ: ĠDrawable (), ĠT int Aware Drawable Ġ{ ĊĊĠĠĠ Ġ@ Int Range ( from Ġ= Ġ 0 , Ġto Ġ= Ġ 2 5 5 ) ĊĠĠĠ Ġprotected Ġvar Ġm Alpha Ġ= Ġ 2 5 5 ĊĠĠĠ Ġprotected Ġvar Ġm Color Filter : ĠColor Filter ? Ġ= Ġnull ĊĠĠĠ Ġprotected Ġvar Ġm Tint List : ĠColor State List ? Ġ= Ġnull ĊĠĠĠ Ġprotected Ġvar Ġm Tint Mode : ĠPort er D uff . Mode Ġ= ĠPort er D uff . Mode . SRC _ IN ĊĠĠĠ Ġprotected Ġvar Ġm Tint Filter : ĠPort er D uff Color Filter ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġm Constant State Ġ= ĠDummy Constant State () ĊĊĠĠĠ Ġprotected Ġval Ġcolor Filter For Drawing : ĠColor Filter ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġif Ġ( m Color Filter Ġ!= Ġnull ) Ġm Color Filter Ġelse Ġm Tint Filter ĊĊĠĠĠ Ġoverride Ġfun Ġget Alpha (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Alpha ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġset Alpha (@ Int Range ( from Ġ= Ġ 0 , Ġto Ġ= Ġ 2 5 5 ) Ġalpha : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Alpha Ġ!= Ġalpha ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Alpha Ġ= Ġalpha ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Self () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget Color Filter (): ĠColor Filter ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Color Filter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġset Color Filter ( color Filter : ĠColor Filter ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Color Filter Ġ= Ġcolor Filter ĊĠĠĠĠĠĠĠ Ġinvalidate Self () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġset Tint (@ Color Int Ġt int Color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Tint List ( Color State List . valueOf ( tint Color )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġset Tint List ( tint : ĠColor State List ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Tint List Ġ= Ġt int ĊĠĠĠĠĠĠĠ Ġif Ġ( update Tint Filter ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Self () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġset Tint Mode ( tint Mode : ĠPort er D uff . Mode ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Tint Mode Ġ= Ġt int Mode ĊĠĠĠĠĠĠĠ Ġif Ġ( update Tint Filter ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Self () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis State ful (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Tint List Ġ!= Ġnull Ġ&& Ġm Tint List !!. is State ful ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon StateChange ( state : ĠInt Array ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġupdate Tint Filter () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Tint Filter (): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġt int List Ġ= Ġm Tint List ĊĠĠĠĠĠĠĠ Ġif Ġ( tint List Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhad Tint Filter Ġ= Ġm Tint Filter Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Tint Filter Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġhad Tint Filter ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġt int Color Ġ= Ġt int List . getColor For State ( state , ĠColor . TRANSP ARENT ) ĊĠĠĠĠĠĠĠ Ġ// ĠThey Ġmade ĠPort er D uff Color Filter . setColor () Ġand Ġset Mode () Ġ@ hide . ĊĠĠĠĠĠĠĠ Ġm Tint Filter Ġ= ĠPort er D uff Color Filter ( tint Color , Ġm Tint Mode ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget Opacity (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠBe Ġsafe . ĊĠĠĠĠĠĠĠ Ġreturn ĠPixel Format . TRANSL UC ENT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġdraw ( canvas : ĠCanvas ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġbounds Ġ= Ġbounds ĊĠĠĠĠĠĠĠ Ġif Ġ( bounds . width () Ġ== Ġ 0 Ġ|| Ġbounds . height () Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsave Count Ġ= Ġcanvas . save () ĊĠĠĠĠĠĠĠ Ġcanvas . translate ( bounds . left . toFloat (), Ġbounds . top . toFloat ()) ĊĠĠĠĠĠĠĠ Ġon Draw ( canvas , Ġbounds . width (), Ġbounds . height ()) ĊĠĠĠĠĠĠĠ Ġcanvas . restore To Count ( save Count ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġon Draw ( canvas : ĠCanvas , Ġwidth : ĠInt , Ġheight : ĠInt ) ĊĊĠĠĠ Ġ// ĠWork around ĠLayer Drawable . Child Drawable Ġwhich Ġcalls Ġget Constant State (). new Drawable () ĊĠĠĠ Ġ// Ġwithout Ġchecking Ġfor Ġnull . ĊĠĠĠ Ġ// ĠWe Ġare Ġnever Ġinfl ated Ġfrom ĠXML Ġso Ġthe Ġprotocol Ġof ĠConstant State Ġdoes Ġnot Ġapply Ġto Ġus . ĠIn ĊĠĠĠ Ġ// Ġorder Ġto Ġmake ĠLayer Drawable Ġhappy , Ġwe Ġreturn Ġourselves Ġfrom ĠDummy Constant State . new Drawable (). ĊĊĠĠĠ Ġoverride Ġfun Ġget Constant State (): ĠDrawable . Constant State Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Constant State ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠDummy Constant State Ġ: ĠDrawable . Constant State () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Changing Configurations (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnew Drawable (): ĠDrawable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis @ Base Drawable ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ