package Ġcom . element ary . tasks . core . utils Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Type face Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . net . Uri Ċ import Ġcom . element ary . tasks . core . views . Text Drawable Ċ import Ġcom . google . android . gms . maps . model . Bitmap Descriptor Ċ import Ġcom . google . android . gms . maps . model . Bitmap Descriptor Factory Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . io . FileNotFoundException Ċ import Ġjava . util .* Ċ Ċ object ĠBitmap Utils Ġ{ ĊĊĠ Ġprivate Ġconst Ġval ĠREQUIRED _ SIZE Ġ= Ġ 3 5 0 ĊĠ Ġprivate Ġval ĠCOL ORS Ġ= ĠarrayOf ( ĊĠĠĠ ĠColor . parse Color ("# F 4 4 3 3 6 "), ĊĠĠĠ ĠColor . parse Color ("# 9 C 2 7 B 0 "), ĊĠĠĠ ĠColor . parse Color ("# 6 7 3 AB 7 "), ĊĠĠĠ ĠColor . parse Color ("# 3 F 5 1 B 5 "), ĊĠĠĠ ĠColor . parse Color ("# 2 1 9 6 F 3 "), ĊĠĠĠ ĠColor . parse Color ("# 0 3 A 9 F 4 "), ĊĠĠĠ ĠColor . parse Color ("# 0 0 BCD 4 "), ĊĠĠĠ ĠColor . parse Color ("# 0 0 9 6 8 8 "), ĊĠĠĠ ĠColor . parse Color ("# 3 8 8 E 3 C "), ĊĠĠĠ ĠColor . parse Color ("# 8 BC 3 4 A "), ĊĠĠĠ ĠColor . parse Color ("# C DDC 3 9 "), ĊĠĠĠ ĠColor . parse Color ("# FF EB 3 B "), ĊĠĠĠ ĠColor . parse Color ("# FF C 1 0 7 "), ĊĠĠĠ ĠColor . parse Color ("# FF 9 8 0 0 "), ĊĠĠĠ ĠColor . parse Color ("# FF 5 7 2 2 "), ĊĠĠĠ ĠColor . parse Color ("# E 9 1 E 6 3 ") ĊĠ Ġ) ĊĊĠ Ġfun Ġimage FromName ( userName : ĠString ?, Ġcallback : Ġ(( Drawable ?) Ġ-> ĠUnit )? ) Ġ{ ĊĠĠĠ Ġif Ġ( userName Ġ== Ġnull Ġ|| ĠuserName . isEmpty ()) Ġ{ ĊĠĠĠĠĠ Ġcallback ?. invoke ( null ) ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġlaunch Default Ġ{ ĊĠĠĠĠĠ Ġval Ġwords Ġ= ĠuserName . split ("\\ s ". to Regex ()). drop Last While Ġ{ Ġit . isEmpty () Ġ}. to Typed Array () ĊĠĠĠĠĠ Ġval Ġinit : ĠString ĊĠĠĠĠĠ Ġif Ġ( words . size Ġ>= Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġword 1 Ġ= Ġwords [ 0 ] ĊĠĠĠĠĠĠĠ Ġval Ġword 2 Ġ= Ġwords [ 1 ] ĊĠĠĠĠĠĠĠ Ġinit Ġ= Ġif Ġ( word 1 . isNotEmpty () Ġ&& Ġword 2 . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġword 1 . toUpperCase (). substring ( 0 , Ġ 1 ) Ġ+ Ġword 2 . toUpperCase (). substring ( 0 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( word 1 . length Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġword 1 . toUpperCase (). substring ( 0 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( word 2 . length Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġword 2 . toUpperCase (). substring ( 0 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġw Ġ= ĠuserName . toUpperCase () ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( w . length Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw . substring ( 0 , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġw Ġ= ĠuserName . toUpperCase () ĊĠĠĠĠĠĠĠ Ġinit Ġ= Ġif Ġ( w . length Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġw . substring ( 0 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġw ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠTim ber . d (" image FromName : Ġ% s ", Ġinit ) ĊĠĠĠĠĠ Ġval Ġdrawable Ġ= ĠText Drawable . builder () ĊĠĠĠĠĠĠĠ Ġ. begin Config () ĊĠĠĠĠĠĠĠ Ġ. width ( 1 5 0 ) ĊĠĠĠĠĠĠĠ Ġ. height ( 1 5 0 ) ĊĠĠĠĠĠĠĠ Ġ. textColor ( Color . WHITE ) ĊĠĠĠĠĠĠĠ Ġ. use Font ( Type face . DEFAULT ) ĊĠĠĠĠĠĠĠ Ġ. bold () ĊĠĠĠĠĠĠĠ Ġ. toUpperCase () ĊĠĠĠĠĠĠĠ Ġ. end Config () ĊĠĠĠĠĠĠĠ Ġ. build Round ( init , ĠCOL ORS [ Random (). nextInt ( COLORS . size )]) ĊĠĠĠĠĠ Ġwith UI Context Ġ{ Ġcallback ?. invoke ( drawable ) Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun ĠgetDescriptor ( drawable : ĠDrawable ): ĠBitmap Descriptor Ġ{ ĊĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas () ĊĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap . create Bitmap ( drawable . intrinsic Width , Ġdrawable . intrinsic Height , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠ Ġcanvas . set Bitmap ( bitmap ) ĊĠĠĠ Ġdrawable . setBounds ( 0 , Ġ 0 , Ġdrawable . intrinsic Width , Ġdrawable . intrinsic Height ) ĊĠĠĠ Ġdrawable . draw ( canvas ) ĊĠĠĠ Ġreturn ĠBitmap Descriptor Factory . from Bitmap ( bitmap ) ĊĠ Ġ} ĊĊĠ Ġ@ Throws ( FileNotFoundException :: class ) ĊĠ Ġfun Ġdecode Uri To Bitmap ( context : ĠContext , Ġselected Image : ĠUri ): ĠBitmap Ġ{ ĊĠĠĠ Ġval Ġo Ġ= ĠBitmap Factory . Options () ĊĠĠĠ Ġo . in Just Decode Bounds Ġ= Ġtrue ĊĠĠĠ ĠBitmap Factory . decode Stream ( context . content Resolver . open InputStream ( selected Image ), Ġnull , Ġo ) ĊĠĠĠ Ġvar Ġwidth Tmp Ġ= Ġo . out Width ĊĠĠĠ Ġvar Ġheight Tmp Ġ= Ġo . out Height ĊĠĠĠ Ġvar Ġscale Ġ= Ġ 1 ĊĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( width Tmp Ġ/ Ġ 2 Ġ< ĠREQUIRED _ SIZE Ġ|| Ġheight Tmp Ġ/ Ġ 2 Ġ< ĠREQUIRED _ SIZE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġwidth Tmp Ġ/= Ġ 2 ĊĠĠĠĠĠ Ġheight Tmp Ġ/= Ġ 2 ĊĠĠĠĠĠ Ġscale Ġ*= Ġ 2 ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġo 2 Ġ= ĠBitmap Factory . Options () ĊĠĠĠ Ġo 2 . in Sample Size Ġ= Ġscale ĊĠĠĠ Ġreturn ĠBitmap Factory . decode Stream ( context . content Resolver . open InputStream ( selected Image ), Ġnull , Ġo 2 ) ĊĠĠĠĠĠ Ġ?: Ġthrow ĠFileNotFoundException () ĊĠ Ġ} Ċ } Ċ