package Ġcom . peng ke . paper . scanner Ċ Ċ import Ġandroid . content . Content Values Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics .* Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Base Columns Ċ import Ġandroid . widget . Seek Bar Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . peng ke . paper . scanner . base . ID Ċ import Ġcom . peng ke . paper . scanner . helper . Db Helper Ċ import Ġcom . peng ke . paper . scanner . helper . Image Table Ċ import Ġkotlinx . android . synt hetic . main . activity _ contrast .* Ċ import Ġkotlinx . android . synt hetic . main . activity _ rotate . cancel Btn Ċ import Ġkotlinx . android . synt hetic . main . activity _ rotate . decision Btn Ċ import Ġkotlinx . android . synt hetic . main . activity _ rotate . imageView Ċ import Ġset Contrast Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġkotlin . concurrent . thread Ċ Ċ class ĠContr ast Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbm : ĠBitmap ĊĠĠĠ Ġprivate Ġvar Ġid Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġval Ġdb Helper Ġ= ĠDb Helper ( this ) ĊĠĠĠ Ġprivate Ġvar Ġcurrent Val : ĠFloat = Ġ 1 F ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ contrast ) ĊĠĠĠĠĠĠĠ Ġset Image () ĊĠĠĠĠĠĠĠ Ġset Btn Listener () ĊĠĠĠĠĠĠĠ Ġset Slider () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġdb Helper . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġto Disable Btn s () ĊĠĠĠĠĠĠĠ Ġnav To ImageList Sc rn () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Image () Ġ{ ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġintent . getString Extra ( ID ). toString () ĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġdb Helper . readable Database ĊĠĠĠĠĠĠĠ Ġval Ġselection Ġ= Ġ"${ Base Columns ._ ID } Ġ= Ġ? " ĊĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġdb . query ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage Table . TABLE _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( Image Table . COLUMN _ NAME _ BITMAP ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselection , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( id ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcursor . moveTo First () ĊĠĠĠĠĠĠĠ Ġval Ġblob Ġ= Ġcursor . get Blob ( 0 ) ĊĠĠĠĠĠĠĠ Ġbm Ġ= ĠBitmap Factory . decode ByteArray ( blob , Ġ 0 , Ġblob . size ) ĊĠĠĠĠĠĠĠ ĠimageView . setImage Bitmap ( bm ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Btn Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġcancel Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto Disable Btn s () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav To ImageList Sc rn () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdecision Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto Disable Btn s () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav To ImageList Sc rn () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġto Disable Btn s () Ġ{ ĊĠĠĠĠĠĠĠ Ġcancel Btn . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġdecision Btn . isEnabled Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġdb Helper . writable Database ĊĠĠĠĠĠĠĠ Ġbm Ġ= Ġbm . set Contrast ( current Val ) !! ĊĠĠĠĠĠĠĠ Ġval Ġthumb Bm Ġ= ĠBitmap . create Scaled Bitmap ( bm , Ġbm . width / 2 , Ġbm . height / 2 , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġedited Ġ= Ġget Binary From Bitmap ( bm ) ĊĠĠĠĠĠĠĠ Ġval Ġthumb Ġ= Ġget Binary From Bitmap ( thumb Bm ) ĊĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= ĠgetContent Values ( edited , Ġthumb ) ĊĠĠĠĠĠĠĠ Ġval Ġselection Ġ= Ġ"${ Base Columns ._ ID } Ġ= Ġ? " ĊĠĠĠĠĠĠĠ Ġdb . update ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage Table . TABLE _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselection , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( id ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Slider () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcontrast Ġ= Ġ 1 F ĊĠĠĠĠĠĠĠ Ġslider . progress Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġslider . max Ġ= Ġ 2 0 0 ĊĠĠĠĠĠĠĠ Ġslider . setOn Seek Bar ChangeListener ( object : ĠSeek Bar . On Seek Bar ChangeListener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĢ¤ å¤īæĽ´ æĻĤ ãģ« åĳ¼ ãģ° ãĤĮãĤĭ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress Changed ( seek Bar : ĠSeek Bar ?, Ġprogress : ĠInt , Ġfrom User : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġ 2 0 0 Ġ- Ġprogress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcontrast ãģ® æľī åĬ¹ ç¯Ħ åĽ ² ãģ¯ 0 .. 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġãĥĩ ãĥķãĤ© ãĥ« ãĥĪ ãģ¯ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontrast Ġ= Ġvalue / 1 0 0 F ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Val Ġ= Ġcontrast ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . setImage Bitmap ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbm . set Contrast ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontrast ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ãģ¤ ãģ¾ ãģ¿ ãĤ¿ ãĥĥ ãĥģ æĻĤ ãģ« åĳ¼ ãģ° ãĤĮãĤĭ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" ãĥī ãĥ© ãĥĥ ãĤ° ãĤ¹ãĤ¿ ãĥ¼ãĥĪ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ãģ¤ ãģ¾ ãģ¿ ãĥª ãĥª ãĥ¼ãĤ¹ æĻĤ ãģ« åĳ¼ ãģ° ãĤĮãĤĭ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stop Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" ãĥª ãĥª ãĥ¼ãĤ¹ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetContent Values ( edited Binary : ĠByteArray , Ġthumb Binary : ĠByteArray ): ĠContent Values Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠContent Values (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ("${ Image Table . COLUMN _ NAME _ BITMAP }", Ġedited Binary ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ("${ Image Table . COLUMN _ NAME _ TH UMB _ BITMAP }", Ġthumb Binary ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Binary From Bitmap ( bitmap : ĠBitmap ): ĠByteArray { ĊĠĠĠĠĠĠĠ Ġval ĠbyteArray OutputStream Ġ= ĠByteArrayOutputStream () ĊĠĠĠĠĠĠĠ Ġbitmap . compress ( Bitmap . Compress Format . JPEG , Ġ 1 0 0 , ĠbyteArray OutputStream ) ĊĠĠĠĠĠĠĠ Ġreturn ĠbyteArray OutputStream . toByteArray () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnav To ImageList Sc rn () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠImage List Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( ID , Ġid ) ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} Ċ }