package Ġhy pr . hyper gan . com . hy pr . Generator Loader Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . util . Log Ċ import Ġhy pr . hyper gan . com . hy pr . Generator . Generator Ċ import Ġhy pr . hyper gan . com . hy pr . Model Frag mnt . Inline Image Ċ import Ġhy pr . hyper gan . com . hy pr . Util . to Bitmap Ċ import Ġkotlin . properties . Deleg ates Ċ Ċ class ĠEasy Generator Loader () Ġ: ĠGenerator Loader () Ġ{ ĊĠĠĠ Ġvar Ġbase Image : ĠBitmap ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġencoded : ĠFloat Array ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġmask : ĠFloat Array Ġby ĠDeleg ates . vet o able ( float ArrayOf ()) Ġ{ Ġproperty , ĠoldValue , ĠnewValue Ġ-> ĊĠĠĠĠĠĠĠ Ġfeature Enabled ( Feature . MASK ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġz 1 : ĠFloat Array Ġ= Ġthis . random _ z () ĊĠĠĠ Ġvar Ġz 2 : ĠFloat Array Ġ= Ġthis . random _ z () ĊĠĠĠ Ġval Ġin liner Ġ= ĠInline Image () ĊĊĠĠĠ Ġfun Ġrandomize () Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( generator !!. features . contains (" h allow een ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġz 1 Ġ= Ġthis . random _ z ( 5 . 0 f , Ġ 1 0 . 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġz 2 Ġ= Ġthis . random _ z ( 5 . 0 f , Ġ 1 0 . 0 f ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġz 1 Ġ= Ġthis . random _ z () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġz 2 Ġ= Ġthis . random _ z () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( generator !!. features . contains (" style ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġz 1 Ġ= Ġthis . style _ z ( z 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsample Image With Image ( person : ĠPerson , Ġimage : ĠBitmap ?, Ġc ropped Point : ĠRect ): ĠBitmap ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscaled Ġ= ĠBitmap . create Scaled Bitmap ( image , Ġgenerator ?. generator ?. output ?. width !! , Ġgenerator ?. generator ?. output ?. height !! , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġbase Image Ġ= Ġscaled ĊĠĠĠĠĠĠĠ Ġmask Ġ= Ġthis . mask ( scaled ) ĊĠĠĠĠĠĠĠ Ġthis . random ize () ĊĊĠĠĠĠĠĠĠ Ġval Ġimage Ġ= Ġthis . sample ( this . get _ z ( 1 . 0 f ), Ġmask , Ġscaled ). to Bitmap ( this . width , Ġthis . height ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġinline Image ( person , Ġimage , Ġc ropped Point ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget _ z ( slider : ĠFloat ): ĠFloat Array Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġz Ġ= ĠFloat Array ( z _ dims . toInt ()) ĊĠĠĠĠĠĠĠ Ġval Ġs : Float Ġ= Ġ( slider Ġ+ Ġ 1 . 0 f ) Ġ/ Ġ 2 . 0 f ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. z _ dims . toInt () Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġz [ i ] Ġ= Ġs Ġ* Ġz 1 ! ![ i ] Ġ+ Ġ( 1 . 0 f - s ) Ġ* Ġz 2 ! ![ i ] ĊĠĠĠĠĠĠĠ Ġreturn Ġz ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsample Image Without Image (): ĠInt Array Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscaled Ġ= ĠBitmap . create Bitmap ( generator ?. generator ?. output ?. width !! , Ġgenerator ?. generator ?. output ?. height !! , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠĠĠĠĠ Ġmask Ġ= Ġthis . mask ( scaled ) ĊĠĠĠĠĠĠĠ Ġbase Image Ġ= Ġscaled ĊĠĠĠĠĠĠĠ Ġthis . random ize () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . sample ( this . get _ z ( 0 . 5 f ), Ġmask , Ġscaled ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsample With Slider ( slider : ĠFloat ): ĠInt Array Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . sample ( this . get _ z ( slider ), Ġmask , Ġbase Image !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinline Image ( person : ĠPerson , Ġnew C ropped Image : ĠBitmap , Ġc ropped Point : ĠRect ): ĠBitmap ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġimage : ĠBitmap ? ĊĠĠĠĠĠĠĠ Ġif Ġ( feature Enabled ( Feature . INLINE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfull Image Ġ= Ġperson . full Image ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġface Image Ġ= Ġperson . face Image ?. to Bitmap () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Ġ= Ġif Ġ( face Image Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin liner . set Before After Crop S izing Ratio ( face Image , Ġnew C ropped Image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfull Image . to Bitmap ()?. let Ġ{ Ġin liner . inline C ropped Image To Full Image ( new C ropped Image , Ġit , Ġc ropped Point ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew C ropped Image ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Ġ= Ġnew C ropped Image ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġimage ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfeature Enabled ( feature : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġgenerator !!. features . contains ( feature ) ĊĠĠĠ Ġ} Ċ }