package Ġcom . alt am ir ano . fabric io . core . tools Ċ Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . graphics .* Ċ import Ġandroid . graphics . drawable . Bitmap Drawable Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . util . Base 6 4 Ċ import Ġandroidx . core . graphics . drawable . Drawable Compat Ċ import Ġandroidx . core . graphics . drawable . Rounded Bitmap Drawable Ċ import Ġandroidx . core . graphics . drawable . Rounded Bitmap Drawable Factory Ċ import Ġjava . io . ByteArray OutputStream Ċ Ċ /** Ċ Ġ* Ġ@ autor ĠCreated Ġby ĠFabric io ĠAlt am ir ano Ġon Ġ 7 / 3 / 1 8 . Ċ Ġ*/ Ċ object ĠImage Tools Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġres Ġresource Ġapp ĊĠĠĠĠ Ġ* Ġ@ param Ġsource Ġinput Ġimage Ġany Ġsize ĊĠĠĠĠ Ġ* Ġ@ return ĠBitmap Ġs Ġcircle Ġimage ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Circle Bitmap ( res : ĠResources ?, Ġsource : ĠBitmap ?): ĠBitmap ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġbitmap ĠS que are Ġto Ġcreate Ġperfect Ġcircle Ġimage ĊĠĠĠĠĠĠĠ Ġval Ġsquare Ġ= Ġget Square Bitmap ( source ) ĊĠĠĠĠĠĠĠ Ġreturn Ġget Rounded Corner Bitmap Drawable ( res , Ġsquare , Ġsquare !!. height . toFloat ()). bitmap ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġsource ĠDrawable Ġimage ĊĠĠĠĠ Ġ* Ġ@ return ĠBitmap Ġcircle ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Circle Bitmap ( source : ĠDrawable ): ĠBitmap Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Circle Bitmap (( source Ġas ĠBitmap Drawable ). bitmap ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġsource ĠBitmap ĊĠĠĠĠ Ġ* Ġ@ return ĠBitmap Ġcircle ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Circle Bitmap ( source : ĠBitmap ?): ĠBitmap Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwidth : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġheight : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= Ġget Square Bitmap ( source ) ĊĠĠĠĠĠĠĠ Ġval Ġmin Size Ġ= ĠMath . min ( bitmap !!. width , Ġbitmap . height ) ĊĠĠĠĠĠĠĠ Ġheight Ġ= Ġmin Size ĊĠĠĠĠĠĠĠ Ġwidth Ġ= Ġheight ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= ĠBitmap . create Bitmap ( width , Ġheight , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠĠĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( output ) ĊĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġ- 0 xb db dbe ĊĠĠĠĠĠĠĠ Ġval Ġpaint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠ Ġval Ġrect Ġ= ĠRect ( 0 , Ġ 0 , Ġwidth , Ġheight ) ĊĠĠĠĠĠĠĠ Ġval Ġrect F Ġ= ĠRect F ( rect ) ĊĠĠĠĠĠĠĠ Ġval Ġround Px Ġ= Ġmin Size . toFloat () ĊĠĠĠĠĠĠĠ Ġpaint . is Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġcanvas . draw ARGB ( 0 , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġpaint . color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġcanvas . draw Round Rect ( rect F , Ġround Px , Ġround Px , Ġpaint ) ĊĠĠĠĠĠĠĠ Ġpaint . xfer mode Ġ= ĠPort er D uff X fer mode ( Port er D uff . Mode . SRC _ IN ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( bitmap , Ġrect , Ġrect , Ġpaint ) ĊĠĠĠĠĠĠĠ Ġreturn Ġoutput ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġres Ġresource Ġapp ĊĠĠĠĠ Ġ* Ġ@ param Ġsource Ġinput Ġimage Ġany Ġsize ĊĠĠĠĠ Ġ* Ġ@ return ĠRo unded Bitmap Drawable Ġas Ġcircle Ġimage ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Circle Bitmap Drawable ( res : ĠResources ?, Ġsource : ĠBitmap ?): ĠRo unded Bitmap Drawable Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġbitmap ĠS que are Ġto Ġcreate Ġperfect Ġcircle Ġimage ĊĠĠĠĠĠĠĠ Ġval Ġsquare Ġ= Ġget Square Bitmap ( source ) ĊĠĠĠĠĠĠĠ Ġreturn Ġget Rounded Corner Bitmap Drawable ( res , Ġsquare , Ġsquare !!. height . toFloat ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġres Ġresource Ġapp ĊĠĠĠĠ Ġ* Ġ@ param Ġsource Ġinput Ġimage Ġany Ġsize ĊĠĠĠĠ Ġ* Ġ@ param Ġcorner Radius Ġsize Ġto Ġcorner Ġradius Ġimage ĊĠĠĠĠ Ġ* Ġ@ return ĠRo unded Bitmap Drawable Ġwith Ġcorner Ġradius ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Rounded Corner Bitmap Drawable ( ĊĠĠĠĠĠĠĠ Ġres : ĠResources ?, ĊĠĠĠĠĠĠĠ Ġsource : ĠBitmap ?, ĊĠĠĠĠĠĠĠ Ġcorner Radius : ĠFloat ĊĠĠĠ Ġ): ĠRo unded Bitmap Drawable Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate ĠRo unded Bitmap Drawable ĊĠĠĠĠĠĠĠ Ġval Ġrounded Drawable Ġ= ĠRo unded Bitmap Drawable Factory . create ( res !! , Ġsource ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġcorner Radius ĊĠĠĠĠĠĠĠ Ġrounded Drawable . corner Radius Ġ= Ġcorner Radius ĊĠĠĠĠĠĠĠ Ġreturn Ġrounded Drawable ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġdrawable Ġinput Ġany Ġdrawable ĊĠĠĠĠ Ġ* Ġ@ param Ġcorner Radius Ġset Ġradius Ġcorner Ġto Ġimage ĊĠĠĠĠ Ġ* Ġ@ return Ġbitmap Ġwith Ġrounded Ġcorners ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Rounded Corner Bitmap ( drawable : ĠDrawable , Ġcorner Radius : ĠFloat ): ĠBitmap Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= Ġ( drawable Ġas ĠBitmap Drawable ). bitmap ĊĠĠĠĠĠĠĠ Ġreturn Ġget Rounded Corner Bitmap ( bitmap , Ġcorner Radius ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġbitmap Ġ Ġinput Ġany Ġbitmap ĊĠĠĠĠ Ġ* Ġ@ param Ġcorner Radius Ġet Ġradius Ġcorner Ġto Ġimage ĊĠĠĠĠ Ġ* Ġ@ return Ġbitmap Ġwith Ġrounded Ġcorners ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Rounded Corner Bitmap ( bitmap : ĠBitmap , Ġcorner Radius : ĠFloat ): ĠBitmap Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġbitmap . width ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġbitmap . height ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= ĠBitmap . create Bitmap ( width , Ġheight , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠĠĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( output ) ĊĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġ- 0 xb db dbe ĊĠĠĠĠĠĠĠ Ġval Ġpaint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠ Ġval Ġrect Ġ= ĠRect ( 0 , Ġ 0 , Ġwidth , Ġheight ) ĊĠĠĠĠĠĠĠ Ġval Ġrect F Ġ= ĠRect F ( rect ) ĊĠĠĠĠĠĠĠ Ġpaint . is Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġcanvas . draw ARGB ( 0 , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġpaint . color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġcanvas . draw Round Rect ( rect F , Ġcorner Radius , Ġcorner Radius , Ġpaint ) ĊĠĠĠĠĠĠĠ Ġpaint . xfer mode Ġ= ĠPort er D uff X fer mode ( Port er D uff . Mode . SRC _ IN ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( bitmap , Ġrect , Ġrect , Ġpaint ) ĊĠĠĠĠĠĠĠ Ġreturn Ġoutput ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġbitmap Ġinput Ġimage Ġany Ġsize ĊĠĠĠĠ Ġ* Ġ@ return Ġbitmap Ġwith Ġmin Ġsize Ġas Ġsquare ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Square Bitmap ( bitmap : ĠBitmap ?): ĠBitmap ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( bitmap Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bitmap . height Ġ>= Ġbitmap . width ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap . create Bitmap ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap . height Ġ/ Ġ 2 Ġ- Ġbitmap . width Ġ/ Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap . width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap . width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap . create Bitmap ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap . width Ġ/ Ġ 2 Ġ- Ġbitmap . height Ġ/ Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap . height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap . height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġdrawable Ġinput Ġany Ġpng Ġfile Ġas Ġdrawable ĊĠĠĠĠ Ġ* Ġ@ param Ġcolor Ġsend Ġcolor Ġwith ĠColor Ġlibrary Ġas ĠColor . Red ĊĠĠĠĠ Ġ* Ġ@ return ĠDrawable Ġwith Ġonly Ġcolor ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Drawable Changed Color ( drawable : ĠDrawable ?, Ġcolor : ĠInt ): ĠDrawable Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwrapped Drawable Ġ= ĠDrawable Compat . wrap ( drawable !! ) ĊĠĠĠĠĠĠĠ ĠDrawable Compat . set Tint ( wrapped Drawable , Ġcolor ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwrapped Drawable ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġimage Ġinput ĠImage ĠBitmap ĊĠĠĠĠ Ġ* Ġ@ return Ġcode ĠBitmap Ġas ĠString ĠBase 6 4 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġencode Bitmap To Base 6 4 ( image : ĠBitmap ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġba os Ġ= ĠByteArrayOutputStream () ĊĠĠĠĠĠĠĠ Ġimage . compress ( Bitmap . Compress Format . PNG , Ġ 9 0 , Ġba os ) ĊĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġba os . toByteArray () ĊĠĠĠĠĠĠĠ Ġreturn ĠBase 6 4 . encode ToString ( b , ĠBase 6 4 . DEFAULT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Base 6 4 ĠString ĠBase 6 4 ĊĠĠĠĠ Ġ* Ġ@ return ĠBitmap Ġimage ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdecode Base 6 4 To Bitmap ( input Base 6 4 : ĠString ?): ĠBitmap Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdecoded Byte Ġ= ĠBase 6 4 . decode ( input Base 6 4 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġreturn ĠBitmap Factory . decode ByteArray ( decoded Byte , Ġ 0 , Ġdecoded Byte . size ) ĊĠĠĠ Ġ} Ċ }