/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttps :// 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 Name (" Pic asso Image ") Ċ @ file : Jvm Mult if ile Class Ċ Ċ package Ġdev . chr is ban es . ac comp an ist . pic asso Ċ Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . net . Uri Ċ import Ġandroidx . compose . foundation . Image Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . graphics . Color Filter Ċ import Ġandroidx . compose . ui . graphics . Image Asset Ċ import Ġandroidx . compose . ui . graphics . as Image Asset Ċ import Ġandroidx . compose . ui . graphics . p ainter . Image Painter Ċ import Ġandroidx . compose . ui . graphics . p ainter . Painter Ċ import Ġandroidx . compose . ui . layout . Content Scale Ċ import Ġandroidx . compose . ui . unit . Int Size Ċ import Ġcom . squareup . pic asso . Pic asso Ċ import Ġcom . squareup . pic asso . Request Creator Ċ import Ġdev . chr is ban es . ac comp an ist . image loading . DataSource Ċ import Ġdev . chr is ban es . ac comp an ist . image loading . Default Ref etch On Size Change Lambda Ċ import Ġdev . chr is ban es . ac comp an ist . image loading . Empty Request Complete Lambda Ċ import Ġdev . chr is ban es . ac comp an ist . image loading . Image Load Ċ import Ġdev . chr is ban es . ac comp an ist . image loading . Image Load State Ċ import Ġdev . chr is ban es . ac comp an ist . image loading . Material Loading Image Ċ import Ġdev . chr is ban es . ac comp an ist . image loading . to Painter Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . suspend C ancellable Coroutine Ċ import Ġokhttp 3 . Http Url Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* ĠCreates Ġa Ġcomp osable Ġthat Ġwill Ġattempt Ġto Ġload Ġthe Ġgiven Ġ[ data ] Ġusing Ġ[ Pic asso ], Ġand Ġprovides Ċ Ġ* Ġcomplete Ġcontent Ġof Ġhow Ġthe Ġcurrent Ġstate Ġis Ġdisplayed : Ċ Ġ* Ċ Ġ* Ġ``` Ċ Ġ* ĠPic asso Image ( Ċ Ġ* ĠĠ Ġdata Ġ= Ġ" https :// www . image . url ", Ċ Ġ* Ġ) Ġ{ Ġimage State Ġ-> Ċ Ġ* ĠĠ Ġwhen Ġ( image State ) Ġ{ Ċ Ġ* ĠĠĠĠ Ġis ĠImage Load State . Success Ġ-> Ġ// ĠTODO Ċ Ġ* ĠĠĠĠ Ġis ĠImage Load State . Error Ġ-> Ġ// ĠTODO Ċ Ġ* ĠĠĠĠ ĠImage Load State . Loading Ġ-> Ġ// ĠTODO Ċ Ġ* ĠĠĠĠ ĠImage Load State . Empty Ġ-> Ġ// ĠTODO Ċ Ġ* ĠĠ Ġ} Ċ Ġ* Ġ} Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* Ġ@ param Ġdata ĠThe Ġdata Ġto Ġload . ĠSee Ġ[ Request Creator . data ] Ġfor Ġthe Ġtypes Ġallowed . Ċ Ġ* Ġ@ param Ġmodifier Ġ[ Modifier ] Ġused Ġto Ġadjust Ġthe Ġlayout Ġalgorithm Ġor Ġdraw Ġdecoration Ġcontent . Ċ Ġ* Ġ@ param Ġrequest Builder ĠOptional Ġbuilder Ġfor Ġthe Ġ[ Request Creator ]. Ċ Ġ* Ġ@ param Ġshould Ref etch On Size Change ĠLambda Ġwhich Ġwill Ġbe Ġinvoked Ġwhen Ġthe Ġsize Ġchanges , Ġallowing Ċ Ġ* Ġoptional Ġre - fetch ing Ġof Ġthe Ġimage . ĠReturn Ġtrue Ġto Ġre - fetch Ġthe Ġimage . Ċ Ġ* Ġ@ param Ġon Request Completed ĠListener Ġwhich Ġwill Ġbe Ġcalled Ġwhen Ġthe Ġloading Ġrequest Ġhas Ġfinished . Ċ Ġ* Ġ@ param Ġcontent ĠContent Ġto Ġbe Ġdisplayed Ġfor Ġthe Ġgiven Ġstate . Ċ Ġ*/ Ċ @ Composable Ċ fun ĠPic asso Image ( ĊĠĠĠ Ġdata : ĠAny , ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ Ġpic asso : ĠPic asso Ġ= ĠPic asso . get (), ĊĠĠĠ Ġrequest Builder : Ġ( Request Creator .( size : ĠInt Size ) Ġ-> ĠRequest Creator )? Ġ= Ġnull , ĊĠĠĠ Ġshould Ref etch On Size Change : Ġ( current Result : ĠImage Load State , Ġsize : ĠInt Size ) Ġ-> ĠBoolean Ġ= ĠDefault Ref etch On Size Change Lambda , ĊĠĠĠ Ġon Request Completed : Ġ( Image Load State ) Ġ-> ĠUnit Ġ= ĠEmpty Request Complete Lambda , ĊĠĠĠ Ġcontent : Ġ@ Composable Ġ( image Load State : ĠImage Load State ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ ĠImage Load ( ĊĠĠĠĠĠĠĠ Ġrequest Ġ= Ġdata . to Request Creator ( pic asso ), ĊĠĠĠĠĠĠĠ Ġrequest Key Ġ= Ġdata , Ġ// ĠPic asso ĠRequest Creator Ġdoesn 't Ġsupport Ġequality Ġso Ġwe Ġuse Ġthe Ġdata ĊĠĠĠĠĠĠĠ Ġexecute Request Ġ= Ġ{ Ġr Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Opt In ( Experimental Cor outines Api :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuspend C ancellable Coroutine Ġ{ Ġcont Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= Ġobject Ġ: Ġcom . squareup . pic asso . Target Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bitmap Loaded ( bitmap : ĠBitmap , Ġfrom : ĠPic asso . Loaded From ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠImage Load State . Success ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= ĠImage Painter ( bitmap . as Image Asset ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= Ġfrom . to DataSource () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcont . resume ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNot Ġmuch Ġwe Ġcan Ġdo Ġhere . ĠIgnore Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bitmap Failed ( exception : ĠException , Ġerror Drawable : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠImage Load State . Error ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrowable Ġ= Ġexception , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġerror Drawable ?. to Painter (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcont . resume ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNot Ġmuch Ġwe Ġcan Ġdo Ġhere . ĠIgnore Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Prepare Load ( placeholder : ĠDrawable ?) Ġ= ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcont . invoke On Cancellation Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġthe Ġcoroutine Ġis Ġcancelled , Ġcancel Ġthe Ġrequest ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpic asso . cancel Request ( target ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNow Ġkick Ġoff Ġthe Ġimage Ġload Ġinto Ġour Ġtarget ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr . into ( target ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtransform Request For Size Ġ= Ġ{ Ġr , Ġsize Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsized Request Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġthe Ġsize Ġcontains Ġan Ġunspecified Ġsized Ġdimension , Ġwe Ġdon 't Ġspecify Ġa Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġin Ġthe ĠCo il Ġrequest ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . width Ġ< Ġ 0 Ġ|| Ġsize . height Ġ< Ġ 0 Ġ-> Ġr ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġwe Ġhave Ġa Ġnon - zero Ġsize , Ġwe Ġcan Ġmodify Ġthe Ġrequest Ġto Ġinclude Ġthe Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ!= ĠInt Size . Zero Ġ-> Ġr . resize ( size . width , Ġsize . height ). only Scale Down () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOtherwise Ġwe Ġhave Ġa Ġzero Ġsize , Ġso Ġno Ġpoint Ġexecuting Ġa Ġrequest ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sized Request Ġ!= Ġnull Ġ&& Ġrequest Builder Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġwe Ġhave Ġa Ġtransformed Ġrequest Ġand Ġbuilder , Ġlet Ġit Ġrun ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Builder ( sized Request , Ġsize ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOtherwise Ġwe Ġjust Ġreturn Ġthe Ġsized Request ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsized Request ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġshould Ref etch On Size Change Ġ= Ġshould Ref etch On Size Change , ĊĠĠĠĠĠĠĠ Ġon Request Completed Ġ= Ġon Request Completed , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠĠĠĠĠ Ġcontent Ġ= Ġcontent ĊĠĠĠ Ġ) Ċ } Ċ Ċ /** Ċ Ġ* ĠCreates Ġa Ġcomp osable Ġthat Ġwill Ġattempt Ġto Ġload Ġthe Ġgiven Ġ[ data ] Ġusing Ġ[ Pic asso ], Ġand Ġthen Ċ Ġ* Ġdisplay Ġthe Ġresult Ġin Ġan Ġ[ Image ]. Ċ Ġ* Ċ Ġ* ĠThis Ġversion Ġof Ġthe Ġfunction Ġis Ġmore Ġopinion ated , Ġproviding : Ċ Ġ* Ċ Ġ* Ġ- ĠSupport Ġfor Ġdisplaying Ġalternative Ġcontent Ġwhile Ġthe Ġrequest Ġis Ġ' loading '. Ċ Ġ* ĠĠ ĠSee Ġthe Ġ[ loading ] Ġparameter . Ċ Ġ* Ġ- ĠSupport Ġfor Ġdisplaying Ġalternative Ġcontent Ġif Ġthe Ġrequest Ġwas Ġun successful . Ċ Ġ* ĠĠ ĠSee Ġthe Ġ[ error ] Ġparameter . Ċ Ġ* Ġ- ĠSupport Ġfor Ġautomatically Ġf ading - in Ġthe Ġimage Ġonce Ġloaded . ĠSee Ġthe Ġ[ fadeIn ] Ġparameter . Ċ Ġ* Ċ Ġ* Ġ``` Ċ Ġ* ĠPic asso Image ( Ċ Ġ* ĠĠ Ġdata Ġ= Ġ" https :// www . image . url ", Ċ Ġ* ĠĠ ĠfadeIn Ġ= Ġtrue , Ċ Ġ* ĠĠ Ġloading Ġ= Ġ{ Ċ Ġ* ĠĠĠĠ ĠStack ( Modifier . fill MaxSize ()) Ġ{ Ċ Ġ* ĠĠĠĠĠĠ ĠCircular Progress Indicator ( Modifier . align ( Alignment . Center )) Ċ Ġ* ĠĠĠĠ Ġ} Ċ Ġ* ĠĠ Ġ} Ċ Ġ* Ġ) Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* Ġ@ param Ġdata ĠThe Ġdata Ġto Ġload . ĠSee Ġ[ Request Creator . data ] Ġfor Ġthe Ġtypes Ġallowed . Ċ Ġ* Ġ@ param Ġmodifier Ġ[ Modifier ] Ġused Ġto Ġadjust Ġthe Ġlayout Ġalgorithm Ġor Ġdraw Ġdecoration Ġcontent . Ċ Ġ* Ġ@ param Ġalignment ĠOptional Ġalignment Ġparameter Ġused Ġto Ġplace Ġthe Ġloaded Ġ[ Image Asset ] Ġin Ġthe Ċ Ġ* Ġgiven Ġbounds Ġdefined Ġby Ġthe Ġwidth Ġand Ġheight . Ċ Ġ* Ġ@ param Ġcontent Scale ĠOptional Ġscale Ġparameter Ġused Ġto Ġdetermine Ġthe Ġaspect Ġratio Ġscaling Ġto Ġbe Ċ Ġ* Ġused Ġif Ġthe Ġbounds Ġare Ġa Ġdifferent Ġsize Ġfrom Ġthe Ġintr insic Ġsize Ġof Ġthe Ġloaded Ġ[ Image Asset ]. Ċ Ġ* Ġ@ param Ġcolor Filter ĠOptional Ġcolor Filter Ġto Ġapply Ġfor Ġthe Ġ[ Painter ] Ġwhen Ġit Ġis Ġrendered Ġon screen . Ċ Ġ* Ġ@ param Ġerror ĠContent Ġto Ġbe Ġdisplayed Ġwhen Ġthe Ġrequest Ġfailed . Ċ Ġ* Ġ@ param Ġloading ĠContent Ġto Ġbe Ġdisplayed Ġwhen Ġthe Ġrequest Ġis Ġin Ġprogress . Ċ Ġ* Ġ@ param ĠfadeIn ĠWhether Ġto Ġrun Ġa Ġfade - in Ġanimation Ġwhen Ġimages Ġare Ġsuccessfully Ġloaded . Ċ Ġ* ĠDefault : Ġ` false `. Ċ Ġ* Ġ@ param Ġrequest Builder ĠOptional Ġbuilder Ġfor Ġthe Ġ[ Request Creator ]. Ċ Ġ* Ġ@ param Ġshould Ref etch On Size Change ĠLambda Ġwhich Ġwill Ġbe Ġinvoked Ġwhen Ġthe Ġsize Ġchanges , Ġallowing Ċ Ġ* Ġoptional Ġre - fetch ing Ġof Ġthe Ġimage . ĠReturn Ġtrue Ġto Ġre - fetch Ġthe Ġimage . Ċ Ġ* Ġ@ param Ġon Request Completed ĠListener Ġwhich Ġwill Ġbe Ġcalled Ġwhen Ġthe Ġloading Ġrequest Ġhas Ġfinished . Ċ Ġ*/ Ċ @ Composable Ċ fun ĠPic asso Image ( ĊĠĠĠ Ġdata : ĠAny , ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ Ġalignment : ĠAlignment Ġ= ĠAlignment . Center , ĊĠĠĠ Ġcontent Scale : ĠContent Scale Ġ= ĠContent Scale . Fit , ĊĠĠĠ Ġcolor Filter : ĠColor Filter ? Ġ= Ġnull , ĊĠĠĠ ĠfadeIn : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġpic asso : ĠPic asso Ġ= ĠPic asso . get (), ĊĠĠĠ Ġrequest Builder : Ġ( Request Creator .( size : ĠInt Size ) Ġ-> ĠRequest Creator )? Ġ= Ġnull , ĊĠĠĠ Ġshould Ref etch On Size Change : Ġ( current Result : ĠImage Load State , Ġsize : ĠInt Size ) Ġ-> ĠBoolean Ġ= ĠDefault Ref etch On Size Change Lambda , ĊĠĠĠ Ġon Request Completed : Ġ( Image Load State ) Ġ-> ĠUnit Ġ= ĠEmpty Request Complete Lambda , ĊĠĠĠ Ġerror : Ġ@ Composable Ġ(( Image Load State . Error ) Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠĠĠ Ġloading : Ġ@ Composable Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull , Ċ ) Ġ{ ĊĠĠĠ ĠPic asso Image ( ĊĠĠĠĠĠĠĠ Ġdata Ġ= Ġdata , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠĠĠĠĠ Ġrequest Builder Ġ= Ġrequest Builder , ĊĠĠĠĠĠĠĠ Ġpic asso Ġ= Ġpic asso , ĊĠĠĠĠĠĠĠ Ġshould Ref etch On Size Change Ġ= Ġshould Ref etch On Size Change , ĊĠĠĠĠĠĠĠ Ġon Request Completed Ġ= Ġon Request Completed , ĊĠĠĠ Ġ) Ġ{ Ġimage State Ġ-> ĊĠĠĠĠĠĠĠ Ġwhen Ġ( image State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠImage Load State . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial Loading Image ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġimage State , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfadeIn Enabled Ġ= ĠfadeIn , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalignment Ġ= Ġalignment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Scale Ġ= Ġcontent Scale , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Filter Ġ= Ġcolor Filter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠImage Load State . Error Ġ-> Ġif Ġ( error Ġ!= Ġnull ) Ġerror ( image State ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage Load State . Loading Ġ-> Ġif Ġ( loading Ġ!= Ġnull ) Ġloading () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage Load State . Empty Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠPic asso . Loaded From . to DataSource (): ĠDataSource Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠ ĠPic asso . Loaded From . MEMORY Ġ-> ĠDataSource . MEMORY ĊĠĠĠ ĠPic asso . Loaded From . DISK Ġ-> ĠDataSource . DISK ĊĠĠĠ ĠPic asso . Loaded From . NETWORK Ġ-> ĠDataSource . NETWORK Ċ } Ċ Ċ private Ġfun ĠAny . to Request Creator ( pic asso : ĠPic asso ): ĠRequest Creator Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠ Ġis ĠString Ġ-> Ġpic asso . load ( this ) ĊĠĠĠ Ġis ĠUri Ġ-> Ġpic asso . load ( this ) ĊĠĠĠ Ġis ĠFile Ġ-> Ġpic asso . load ( this ) ĊĠĠĠ Ġis ĠInt Ġ-> Ġpic asso . load ( this ) ĊĠĠĠ Ġis ĠHttp Url Ġ-> Ġpic asso . load ( Uri . parse ( toString ())) ĊĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Data Ġis Ġnot Ġof Ġa Ġtype Ġwhich ĠPic asso Ġsupports : Ġ${ this :: class . java }") Ċ } Ċ