/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠStream . IO , ĠInc . ĠAll ĠRights ĠReserved . Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* Ġhttp :// 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 . Ċ Ġ*/ Ċ Ċ package Ġio . get stream . avatar view . stream . integration Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Linear Gradient Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Shader Ċ import Ġandroid . graphics . Type face Ċ import Ġandroid . util . Typed Value Ċ import Ġandroidx . annotation . Px Ċ import Ġio . get stream . avatar view . co il . Avatar Ċ import Ġio . get stream . avatar view . co il . Avatar Bitmap Factory Ċ import Ġkotlin . math . abs Ċ import Ġkotlin . math . round ToInt Ċ Ċ /** Ċ Ġ* ĠA Ġcustom Ġbitmap Ġfactory Ġthat Ġextends Ġ[ Avatar Bitmap Factory ] Ġto Ġimplement Ċ Ġ* ĠStream ĠSDK 's Ġavatar Ġbitmap Ġstyle . Ċ Ġ*/ Ċ public Ġclass ĠStream Avatar Bitmap Factory ( private Ġval Ġcontext : ĠContext ) Ġ: ĊĠĠĠ ĠAvatar Bitmap Factory ( context ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġgradient Base Colors Ġ= ĊĠĠĠĠĠĠĠ Ġcontext . resources . getInt Array ( R . array . avatar View _ gradient _ colors ) ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġload Avatar Placeholder Bitmap ( ĊĠĠĠĠĠĠĠ Ġdata : ĠAny ?, ĊĠĠĠĠĠĠĠ Ġavatar : ĠAvatar , ĊĠĠĠĠĠĠĠ Ġavatar Size : ĠInt ĊĠĠĠ Ġ): ĠBitmap Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Initial s Bitmap ( data , Ġavatar , Ġavatar Size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Initial s Bitmap ( ĊĠĠĠĠĠĠĠ Ġdata : ĠAny ?, ĊĠĠĠĠĠĠĠ Ġavatar : ĠAvatar , ĊĠĠĠĠĠĠĠ Ġ@ Px Ġavatar Size : ĠInt , ĊĠĠĠ Ġ): ĠBitmap Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinitial s Ġ= Ġavatar . getTag From Initial s Map ( data , ĠB AG _ AV AT AR _ INITIAL S ) Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġreturn ĠBitmap . create Bitmap ( avatar Size , Ġavatar Size , ĠBitmap . Config . ARGB _ 8 8 8 8 ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Gradient ( initial s , Ġavatar Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Initial s ( data , Ġavatar , Ġinitial s , Ġavatar Size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠCanvas . draw Gradient ( initial s : ĠString , Ġavatar Size : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpaint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshader Ġ= Ġcreate Linear Gradient Shader ( initial s , Ġavatar Size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdraw Rect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġavatar Size . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġavatar Size . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠCanvas . draw Initial s ( ĊĠĠĠĠĠĠĠ Ġdata : ĠAny ?, ĊĠĠĠĠĠĠĠ Ġavatar : ĠAvatar , ĊĠĠĠĠĠĠĠ Ġinitial s : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ Px Ġavatar Size : ĠInt , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtext Paint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextAlign Ġ= ĠPaint . Align . CENTER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġavatar . getTag From Initial s Map ( data , ĠB AG _ AV AT AR _ INITIAL S _ TEXT _ COLOR ) Ġ?: ĠColor . WHITE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Size Ġ= Ġ( avatar . getTag From Initial s Map ( data , ĠB AG _ AV AT AR _ INITIAL S _ TEXT _ SIZE ) Ġ?: Ġ 1 3 f ). sp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype face Ġ= ĠType face . default From Style ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġavatar . getTag From Initial s Map ( data , ĠB AG _ AV AT AR _ INITIAL S _ FONT ) Ġ?: ĠType face . NORMAL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdraw Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinitial s , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġavatar Size Ġ/ Ġ 2 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġavatar Size Ġ/ Ġ 2 f Ġ- Ġ( text Paint . as cent () Ġ+ Ġtext Paint . desc ent ()) Ġ/ Ġ 2 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠFloat . sp : ĠFloat ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠTyped Value . apply Dimension ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTyped Value . COMPLEX _ UNIT _ SP , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , Ġcontext . resources . display Metrics ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Linear Gradient Shader ( initial s : ĠString , Ġ@ Px Ġavatar Size : ĠInt ): ĠShader Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbase Color Index Ġ= Ġabs ( initial s . hashCode ()) Ġ% Ġgradient Base Colors . size ĊĠĠĠĠĠĠĠ Ġval Ġbase Color Ġ= Ġgradient Base Colors [ base Color Index ] ĊĠĠĠĠĠĠĠ Ġreturn ĠLinear Gradient ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġavatar Size . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadjust Color LB rightness ( base Color , ĠGR AD IENT _ DARK ER _ COLOR _ FACTOR ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadjust Color LB rightness ( base Color , ĠGR AD IENT _ LIGHT ER _ COLOR _ FACTOR ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠShader . Tile Mode . CLAMP ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadjust Color LB rightness ( color : ĠInt , Ġfactor : ĠFloat ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= ĠColor . alpha ( color ) ĊĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġ( Color . red ( color ) Ġ* Ġfactor ). round ToInt () ĊĠĠĠĠĠĠĠ Ġval Ġg Ġ= Ġ( Color . green ( color ) Ġ* Ġfactor ). round ToInt () ĊĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġ( Color . blue ( color ) Ġ* Ġfactor ). round ToInt () ĊĠĠĠĠĠĠĠ Ġreturn ĠColor . arg b ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr . coerce At Most ( 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg . coerce At Most ( 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb . coerce At Most ( 2 5 5 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġprivate Ġfun Ġ< T > ĠAvatar . getTag From Initial s Map ( data : ĠAny ?, Ġkey : ĠString ): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap : ĠMutable Map < String , ĠAny > Ġ= Ġget Tag ( data ?. toString () Ġ?: Ġ"") Ġ?: Ġmutable Map Of () ĊĠĠĠĠĠĠĠ Ġreturn Ġmap [ key ] Ġas ? ĠT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠGR AD IENT _ DARK ER _ COLOR _ FACTOR Ġ= Ġ 1 . 3 f ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠGR AD IENT _ LIGHT ER _ COLOR _ FACTOR Ġ= Ġ 0 . 7 f ĊĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠB AG _ AV AT AR _ INITIAL S Ġ= Ġ" B AG _ AV AT AR _ INITIAL S " ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠB AG _ AV AT AR _ INITIAL S _ FONT Ġ= Ġ" B AG _ AV AT AR _ INITIAL S _ FONT " ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠB AG _ AV AT AR _ INITIAL S _ TEXT _ SIZE Ġ= Ġ" B AG _ AV AT AR _ INITIAL S _ TEXT _ SIZE " ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠB AG _ AV AT AR _ INITIAL S _ TEXT _ COLOR Ġ= Ġ" B AG _ AV AT AR _ INITIAL S _ TEXT _ COLOR " ĊĠĠĠ Ġ} Ċ } Ċ