package Ġcom . github . sk g mn . mo ch ka . frame Ċ Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . widget . ImageView Ċ import Ġcom . github . sk g mn . mo ch ka . Bitmap Decoder Ċ Ċ internal Ġabstract Ġclass ĠFrame Builder ( ĊĠĠĠ Ġprivate Ġval Ġdecoder : ĠBitmap Decoder , ĊĠĠĠ Ġprotected Ġvar Ġframe Width : ĠInt , ĊĠĠĠ Ġprotected Ġvar Ġframe Height : ĠInt , ĊĠĠĠ Ġprivate Ġval Ġbackground : ĠDrawable ? Ċ ) Ġ{ ĊĠĠĠ Ġprotected Ġabstract Ġfun Ġget Bounds ( ĊĠĠĠĠĠĠĠ Ġdecoder : ĠBitmap Decoder , ĊĠĠĠĠĠĠĠ Ġframe Width : ĠInt , ĊĠĠĠĠĠĠĠ Ġframe Height : ĠInt , ĊĠĠĠĠĠĠĠ Ġout Src : ĠRect ?, ĊĠĠĠĠĠĠĠ Ġout Dest : ĠRect ? ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġset Region ( ĊĠĠĠĠĠĠĠ Ġdecoder : ĠBitmap Decoder , ĊĠĠĠĠĠĠĠ Ġframe Width : ĠInt , ĊĠĠĠĠĠĠĠ Ġframe Height : ĠInt , ĊĠĠĠĠĠĠĠ Ġdest Region : ĠRect ? ĊĠĠĠ Ġ): ĠBitmap Decoder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsource Region Ġ= ĠRect () ĊĠĠĠĠĠĠĠ Ġget Bounds ( decoder , Ġframe Width , Ġframe Height , Ġsource Region , Ġdest Region ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Region . left Ġ== Ġ 0 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Region . top Ġ== Ġ 0 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Region . right Ġ== Ġdecoder . width Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Region . bottom Ġ== Ġdecoder . height ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecoder ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecoder . region ( source Region ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdecode (): ĠBitmap Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbitmap : ĠBitmap Ġ= ĠBitmap . create Bitmap ( frame Width , Ġframe Height , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠĠĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( bitmap ) ĊĠĠĠĠĠĠĠ Ġbackground ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Bounds ( 0 , Ġ 0 , Ġbitmap . width , Ġbitmap . height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw ( canvas ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrect Dest Ġ= ĠRect () ĊĠĠĠĠĠĠĠ Ġval Ġpaint Ġ= ĠPaint ( Paint . FILTER _ BITMAP _ FLAG ) ĊĠĠĠĠĠĠĠ Ġval Ġdecoded Bitmap Ġ= Ġset Region ( decoder , Ġframe Width , Ġframe Height , Ġrect Dest ). decode () ĊĠĠĠĠĠĠĠ Ġdecoded Bitmap ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( it , Ġnull , Ġrect Dest , Ġpaint ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbitmap ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecoder : ĠBitmap Decoder , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale Type : ĠImageView . Scale Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġframe Width : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġframe Height : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackground : ĠDrawable ? ĊĠĠĠĠĠĠĠ Ġ): ĠFrame Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImageView . Scale Type . MATRIX Ġ== Ġscale Type Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMatrix Frame Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecoder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframe Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframe Height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImageView . Scale Type . FIT _ XY Ġ== Ġscale Type Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFit XY Frame Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecoder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframe Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframe Height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImageView . Scale Type . FIT _ START Ġ== Ġscale Type Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFit Gravity Frame Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecoder , Ġframe Width , Ġframe Height , Ġbackground , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFit Gravity Frame Builder . GR AV ITY _ START ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImageView . Scale Type . FIT _ CENTER Ġ== Ġscale Type Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFit Gravity Frame Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecoder , Ġframe Width , Ġframe Height , Ġbackground , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFit Gravity Frame Builder . GR AV ITY _ CENTER ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImageView . Scale Type . FIT _ END Ġ== Ġscale Type Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFit Gravity Frame Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecoder , Ġframe Width , Ġframe Height , Ġbackground , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFit Gravity Frame Builder . GR AV ITY _ END ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImageView . Scale Type . CENTER Ġ== Ġscale Type Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCenter Frame Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecoder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframe Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframe Height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImageView . Scale Type . CENTER _ C ROP Ġ== Ġscale Type Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCenter Crop Frame Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecoder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframe Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframe Height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImageView . Scale Type . CENTER _ INS IDE Ġ== Ġscale Type Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCenter Inside Frame Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecoder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframe Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframe Height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" scale Type ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ