package Ġcom . omega _ r . libs . ome gat ypes . image Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . RequestBuilder Ċ import Ġcom . bump tech . glide . load . DataSource Ċ import Ġcom . bump tech . glide . load . engine . G lide Exception Ċ import Ġcom . bump tech . glide . request . RequestListener Ċ import Ġcom . bump tech . glide . request . target . Custom View Target Ċ import Ġcom . bump tech . glide . request . target . Target Ċ import Ġcom . bump tech . glide . request . transition . Transition Ċ import Ġcom . omega _ r . libs . ome gat ypes . de coders . Bitmap De coders Ċ import Ġcom . omega _ r . libs . ome gat ypes . de coders . Simple Bitmap De coders Ċ import Ġcom . omega _ r . libs . ome gat ypes . image . Image . Companion . NO _ PLACE HOLDER _ RES Ċ import Ġjava . io . InputStream Ċ import Ġkotlin . reflect . K Class Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠAnt on ĠK ny az ev Ġon Ġ 2 0 1 9 - 1 0 - 0 3 . Ċ Ġ*/ Ċ open Ġclass ĠG lide Images Processor ( ĊĠĠĠĠĠĠĠ Ġprotected Ġval Ġold Images Processor : ĠImage Processors , ĊĠĠĠĠĠĠĠ Ġvar arg Ġexclude Image Classes : ĠK Class < out ĠImage > Ċ ) Ġ: ĠImage Processors () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġset As Current Images Processor () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Ġ= ĠG lide Images Processor ( current ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset G lide Bitmap Pool ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap De coders . current Ġ= ĠSimple Bitmap De coders ( G lide Bitmap Pool ( G lide . get ( context ). bitmap Pool )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġexclude Image Classes Ġ= ĠlistOf (* exclude Image Classes ) ĊĊĠĠĠ Ġprotected Ġfun Ġ< T > ĠRequest Builder < T >. create RequestBuilder ( image : ĠImage ): ĠRequest Builder < T >? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( exclude Image Classes . contains ( image :: class )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( image ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠUrl Image Ġ-> Ġload ( image . url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠUri Image Ġ-> Ġload ( image . uri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠJava File Image Ġ-> Ġload ( image . file ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResource Image Ġ-> Ġload ( image . res Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBitmap Image Ġ-> Ġload ( image . bitmap ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDrawable Image Ġ-> Ġload ( image . drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠByteArray Image Ġ-> Ġload ( image . byteArray ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠImage . apply Image ( imageView : ĠImageView , Ġplaceholder Res Id : ĠInt , Ġon Image Applied : Ġ(() Ġ-> ĠUnit )? ) Ġ{ ĊĠĠĠĠĠĠĠ ĠG lide . with ( imageView ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Drawable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create RequestBuilder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . apply Placeholder ( placeholder Res Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . listener ( G lide Image RequestListener ( on Image Applied )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . into ( imageView ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġapply Old Ġ{ Ġapply Image ( imageView , Ġplaceholder Res Id ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠImage . apply Background ( view : ĠView , Ġplaceholder Res Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠImage . Processor . apply Empty Background ( view , Ġplaceholder Res Id ) ĊĠĠĠĠĠĠĠ ĠG lide . with ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Drawable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create RequestBuilder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . apply Placeholder ( placeholder Res Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . into ( object Ġ: ĠCustom View Target < View , ĠDrawable >( view ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Failed ( error Drawable : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage . Processor . apply Background ( view , Ġerror Drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Cle ared ( placeholder : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage . Processor . apply Background ( view , Ġplaceholder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( resource : ĠDrawable , Ġtransition : ĠTransition < in ĠDrawable > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage . Processor . apply Background ( view , Ġresource ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġapply Old Ġ{ Ġapply Background ( view , Ġplaceholder Res Id ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun ĠImage . get Stream ( context : ĠContext , Ġcompress Format : ĠBitmap . Compress Format , Ġquality : ĠInt ): ĠInputStream Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠG lide . with ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Bitmap () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create RequestBuilder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfuture Target Ġ= Ġsubmit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= Ġfuture Target . get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap . to InputStream ( compress Format , Ġquality ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. clear ( future Target ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġapply Old Ġ{ Ġget Stream ( context , Ġcompress Format , Ġquality ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠImage . preload ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ ĠG lide . with ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Drawable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create RequestBuilder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . preload () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġapply Old Ġ{ Ġpreload ( context ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġ< T > ĠRequest Builder < T >. apply Placeholder ( placeholder Res Id : ĠInt ): ĠRequest Builder < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( placeholder Res Id Ġ!= ĠNO _ PLACE HOLDER _ RES ) Ġplaceholder ( placeholder Res Id ) Ġelse Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġinline Ġfun Ġ< R > Ġapply Old ( block : ĠImage Processors . () Ġ-> ĠR ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġblock ( old Images Processor ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠG lide Image RequestListener ( private Ġval Ġon Image Loaded : Ġ(() Ġ-> ĠUnit )? ) Ġ: ĠRequest Listener < Drawable > Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠG lide Image RequestListener :: class . java . name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonLoad Failed ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe : ĠG lide Exception ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget : ĠTarget < Drawable > ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis First Resource : ĠBoolean ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Image Ġload Ġfailed : Ġ", Ġe ) ĊĠĠĠĠĠĠĠ Ġif Ġ( is First Resource ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Image Loaded ?. invoke () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresource : ĠDrawable , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget : ĠTarget < Drawable >, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdataSource : ĠDataSource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis First Resource : ĠBoolean ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġtarget . on Resource Ready ( resource , Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( is First Resource ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Image Loaded ?. invoke () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ }