package Ġkr . dev flow . ark 2 d . data Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Point Ċ import Ġandroid . os . Build Ċ import Ġandroid . view . KeyEvent Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . webkit . Web Chrome Client Ċ import Ġandroid . webkit . WebView Ċ import Ġandroid . webkit . WebView Client Ċ import Ġandroid . widget . Seek Bar Ċ import Ġkotlinx . android . synt hetic . main . char _ overlay . view .* Ċ import Ġkotlinx . android . synt hetic . main . config _ overlay . view .* Ċ import Ġkr . dev flow . ark 2 d . Overlay Wrapper Ċ import Ġkr . dev flow . ark 2 d . R Ċ import Ġkr . dev flow . ark 2 d . util . Pref Ċ import Ġkr . dev flow . ark 2 d . view . Overlay Container Ċ import Ġkotlin . math . max Ċ import Ġkotlin . math . min Ċ Ċ class ĠChar Overlay Ġconstructor ( ĊĠĠĠ Ġval Ġoverlay Id : ĠString , ĊĠĠĠ Ġval Ġcontext : ĠContext , ĊĠĠĠ Ġprivate Ġval Ġwin Manager : ĠWindow Manager , ĊĠĠĠ Ġprivate Ġval Ġchar IPC : ĠChar IPC Ċ ) Ġ{ ĊĠĠĠ Ġlateinit Ġvar Ġcharacter Overlay : ĠOverlay Wrapper ĊĠĠĠ Ġlateinit Ġvar Ġconfig Overlay : ĠOverlay Wrapper ĊĊĠĠĠ Ġvar Ġcharacter Data Ġ= ĠChar Data (" build _ char _ 0 0 2 _ ami ya ", Ġ" ëĭ¹ ë ģ ¼ ") ĊĊĠĠĠ Ġfun Ġcreate ( default Character : ĠChar Data ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsaved Scale Ġ= ĠPref . read Pref ( context , Ġ" char a _ scale ", Ġ" 1 0 "). toInt () ĊĊĠĠĠĠĠĠĠ Ġhide () ĊĊĠĠĠĠĠĠĠ Ġcharacter Overlay Ġ= ĠOverlay Wrapper ( context , Ġwin Manager , Ġcalc Char a Scale ( saved Scale ), Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġcharacter Overlay . is Overflow Allowed Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġcharacter Overlay . is Resizable Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġcharacter Overlay . create View ( R . layout . char _ overlay ) ĊĠĠĠĠĠĠĠ Ġcharacter Overlay . touch Callback Ġ= Ġchar Callback ĊĠĠĠĠĠĠĠ Ġcharacter Overlay . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase View . web View . web View Client Ġ= ĠCustom Client () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase View . web View . web Chrome Client Ġ= Ġ( object Ġ: ĠWeb Chrome Client () Ġ{}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase View . web View . load Url ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" file :/// android _ asset / index . html ? c =% s ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Character ?. id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcharacter Overlay . show () ĊĊĠĠĠĠĠĠĠ Ġconfig Overlay Ġ= ĠOverlay Wrapper ( context , Ġwin Manager , ĠPoint ( 2 4 0 , Ġ 1 2 0 ), Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġconfig Overlay . create View ( R . layout . config _ overlay ) ĊĠĠĠĠĠĠĠ Ġconfig Overlay . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase View . btn Close Config Overlay . setOnClickListener Ġ{ Ġtoggle Config Overlay () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase View . sb Char a Size . max Ġ= Ġ 1 0 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase View . sb Char a Size . min Ġ= Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase View . sb Char a Size . progress Ġ= Ġsaved Scale ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase View . sb Char a Size . setOn Seek Bar ChangeListener ( size Seek Bar Listener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase View . tv Char a Slot . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchar IPC . request Change Char ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Char Overlay , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcharacter Data . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtoggle Config Overlay () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( config Overlay . is Shown ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcharacter Overlay . is Resizable Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcharacter Overlay . base View . set BackgroundColor ( Color . TRANSP ARENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Overlay . hide () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchar IPC . change Config State ( false ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcharacter Overlay . is Resizable Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcharacter Overlay . base View . setBackground Resource ( R . drawable . border _ background ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Overlay . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchar IPC . change Config State ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhide () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(:: character Overlay . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcharacter Overlay . hide () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(:: config Overlay . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Overlay . hide () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġscreen Size Changed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(:: character Overlay . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcharacter Overlay . screen Size Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(:: config Overlay . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcharacter Overlay . screen Size Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġchange Character ( cd : ĠChar Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcharacter Data Ġ= Ġcd ĊĠĠĠĠĠĠĠ Ġconfig Overlay . base View . tv Char a Slot . text Ġ= Ġ" ì º Ĳ ë¦ Ń íĦ° Ġ: Ġ${ cd . name }" ĊĠĠĠĠĠĠĠ Ġjs Change Char ( cd . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġjs Change Char ( char Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcharacter Overlay . base View . web View . evaluate Javascript ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" change Char (\" % s \") ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchar Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcalc Char a Scale ( big Scale : ĠInt ): ĠPoint Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPoint ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 8 0 Ġ* Ġ( big Scale Ġ/ Ġ 1 0 . 0 )). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 1 4 0 Ġ* Ġ( big Scale Ġ/ Ġ 1 0 . 0 )). toInt () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchange Char a Scale ( big Scale : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcharacter Overlay . change Scale ( calc Char a Scale ( big Scale )) ĊĠĠĠĠĠĠĠ ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPref . save Pref ( context , Ġ" char a _ scale ", Ġbig Scale . toString ()) ĊĠĠĠĠĠĠĠ Ġ}. run () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġchar Callback Ġ= Ġobject Ġ: ĠOverlay Container . Callbacks Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resize Start () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// character Overlay . base View . setBackground Resource ( R . drawable . border _ background ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resize End () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// character Overlay . base View . set BackgroundColor ( Color . TRANSP ARENT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Single Click () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcharacter Overlay . base View . web View . evaluate Javascript (" flip X ()", Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resize ( dx : ĠInt , Ġdy : ĠInt , Ġdirection : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Drag ( dx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Drag End ( dx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Drag Start ( dx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon DoubleClick () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcharacter Overlay . base View . web View . evaluate Javascript (" Change Animation ()", Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Long Press () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoggle Config Overlay () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġsize Seek Bar Listener Ġ= Ġobject Ġ: ĠSeek Bar . On Seek Bar ChangeListener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress Changed ( seek Bar : ĠSeek Bar ?, Ġprogress : ĠInt , Ġfrom User : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchunk Progress Ġ= Ġmin ( max ( progress , Ġ 5 ), Ġ 1 0 0 ) Ġ// Ġfor Ġ> ĠAndroid ĠO re o ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Char a Scale ( chunk Progress ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stop Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠChar IPC Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġchange Config State ( isOpen : ĠBoolean ) ĊĠĠĠĠĠĠĠ Ġfun Ġrequest Change Char ( caller : ĠChar Overlay , Ġcurrent Char Id : ĠString ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠCustom Client Ġ: ĠWebView Client () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshould Override KeyEvent ( view : ĠWebView ?, Ġevent : ĠKeyEvent ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }