package Ġcom . py rus . py rus service desk . utils Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics .* Ċ import Ġandroid . graphics . drawable . Bitmap Drawable Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . media . Thumbnail Utils Ċ import Ġandroidx . ex if interface . media . Ex if Interface Ċ import Ġcom . squareup . pic asso . Transformation Ċ Ċ /** Ċ Ġ* ĠPic asso Ġ[ Transformation ] Ġimplementation Ġthat Ġuses Ġ[ circle ] Ġfor Ċ Ġ* Ġtransform ing Ġimage . Ċ Ġ*/ Ċ internal Ġval ĠC IR CLE _ TRANS FORMATION Ġ= Ġobject Ġ: ĠTransformation Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġkey (): ĠString Ġ= Ġ" Circle " ĊĠĠĠ Ġoverride Ġfun Ġtransform ( source : ĠBitmap ): ĠBitmap Ġ= Ġsource . circle () Ċ } Ċ Ċ /** Ċ Ġ* ĠMakes Ġcirc led Ġbitmap Ġfrom Ġthe Ġsource . ĠIt Ġmakes Ġnew Ġsquare Ġbitmap Ġ 9 6 x 9 6 Ġpx Ġfrom Ġthe Ġcenter Ġof Ġthe Ġsource Ċ Ġ* Ġand Ġin scribe Ġit Ġinto Ġan Ġo val . ĠIf Ġthe Ġsource Ġimage Ġis Ġless Ġthan Ġ 9 6 x 9 6 , Ġit Ġwill Ġbe Ġst ret ched . Ċ Ġ* Ġ@ return Ġnew Ġ 9 6 x 9 6 Ġpx Ġbitmap Ġwith Ġcircle Ġimage Ċ Ġ*/ Ċ internal Ġfun ĠBitmap . circle (): ĠBitmap Ġ{ ĊĠĠĠ Ġval Ġdimension Ġ= Ġthis . width ĊĠĠĠ Ġval Ġscaled Ġ= ĠThumb nail Utils . extract Thumbnail ( this Ġ, Ġdimension , Ġdimension , ĠThumb nail Utils . OPTIONS _ REC Y CLE _ INPUT ) ĊĠĠĠ Ġval Ġoutput Ġ= ĠBitmap . create Bitmap ( ĊĠĠĠĠĠĠĠ Ġscaled . width , ĊĠĠĠĠĠĠĠ Ġscaled . height , ĠBitmap . Config . ARGB _ 8 8 8 8 ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( output ) ĊĠĠĠ Ġval Ġcolor Ġ= ĠColor . RED ĊĠĠĠ Ġval Ġpaint Ġ= ĠPaint () ĊĠĠĠ Ġval Ġrect Ġ= ĠRect ( 0 , Ġ 0 , Ġscaled . width , Ġscaled . height ) ĊĠĠĠ Ġval Ġrect F Ġ= ĠRect F ( rect ) ĊĠĠĠ Ġpaint . is Anti Alias Ġ= Ġtrue ĊĠĠĠ Ġcanvas . draw ARGB ( 0 , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠ Ġpaint . color Ġ= Ġcolor ĊĠĠĠ Ġcanvas . draw O val ( rect F , Ġpaint ) ĊĠĠĠ Ġpaint . xfer mode Ġ= ĠPort er D uff X fer mode ( Port er D uff . Mode . SRC _ IN ) ĊĠĠĠ Ġcanvas . draw Bitmap ( scaled , Ġrect , Ġrect , Ġpaint ) ĊĠĠĠ Ġscaled . recycle () ĊĠĠĠ Ġreturn Ġoutput Ċ } Ċ Ċ /** Ċ Ġ* ĠMakes Ġdrawable Ġcircle . Ċ Ġ* Ġ@ return Ġnew Ġdrawable Ġinstance Ġthat Ġhas Ġcircle Ġshape Ċ Ġ*/ Ċ internal Ġfun ĠDrawable . circle ( context : ĠContext ): ĠDrawable Ġ{ ĊĠĠĠ Ġval Ġout Ġ= ĠBitmap . create Bitmap ( intrinsic Width , Ġintr insic Height , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠ Ġthis . mutate (). run Ġ{ ĊĠĠĠĠĠĠĠ Ġset Bounds ( 0 , Ġ 0 , Ġout . width , Ġout . height ) ĊĠĠĠĠĠĠĠ Ġdraw ( Canvas ( out )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠBitmap Drawable ( context . resources , Ġout . circle ()) Ċ } Ċ Ċ internal Ġfun ĠBitmap . rotate ( rotation Degrees : ĠFloat ): ĠBitmap Ġ{ ĊĠĠĠ Ġreturn ĠBitmap . create Bitmap ( ĊĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠ Ġwidth , ĊĠĠĠĠĠĠĠ Ġheight , ĊĠĠĠĠĠĠĠ ĠMatrix (). apply Ġ{ Ġset Rotate ( rotation Degrees ) Ġ}, ĊĠĠĠĠĠĠĠ Ġtrue ) Ċ } Ċ Ċ internal Ġfun ĠgetImage Rotation ( ex if Interface : ĠEx if Interface ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( ex if Interface . getAttribute ( Ex if Interface . TAG _ OR IENTATION )?. toInt ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠEx if Interface . OR IENTATION _ ROT ATE _ 2 7 0 Ġ-> Ġ 2 7 0 ĊĠĠĠĠĠĠĠ ĠEx if Interface . OR IENTATION _ ROT ATE _ 1 8 0 Ġ-> Ġ 1 8 0 ĊĠĠĠĠĠĠĠ ĠEx if Interface . OR IENTATION _ ROT ATE _ 9 0 Ġ-> Ġ 9 0 ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 0 ĊĠĠĠ Ġ} Ċ } Ċ