package Ġcom . dan . simp ler aw camera Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġkotlin . reflect .* Ċ import Ġkotlin . reflect . full . create Type Ċ import Ġkotlin . reflect . full . declared Member Properties Ċ Ċ /** Ċ ĠSettings : Ġall Ġpublic Ġvar Ġfields Ġwill Ġbe Ġsaved Ċ Ġ*/ Ċ class ĠSettings ( Ġprivate Ġval Ġactivity : ĠActivity ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEXP _ STEPS _ PER _ 1 EV Ġ= Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSPE ED _ MAN UAL _ MIN _ PRE VIEW Ġ= Ġ 1 5 6 2 5 0 0 0 L Ġ// Ġ 1 / 6 4 Ġsec ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSPE ED _ MAX _ MAN UAL Ġ= Ġ 6 4 0 0 0 0 0 0 0 0 0 L Ġ// Ġ 6 4 Ġsec ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSPE ED _ DEFAULT _ MAN UAL Ġ= Ġ 7 8 1 2 5 0 0 L Ġ// Ġ 1 / 1 2 8 ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠISO _ MODE _ AUTO Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠISO _ MODE _ MAN UAL Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval ĠISO _ MODE _ TO _ STRING Ġ= ĠarrayOf (" A ", Ġ" M ") ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSPE ED _ MODE _ AUTO Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSPE ED _ MODE _ MAN UAL Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval ĠSPE ED _ MODE _ TO _ STRING Ġ= ĠarrayOf (" A ", Ġ" M ") ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠF OC US _ TYPE _ CONT IN UO US Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠF OC US _ TYPE _ HY PER FO CAL Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠF OC US _ TYPE _ MAN UAL Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠF OC US _ TYPE _ MAX Ġ= Ġ 3 ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPH OTO _ TYPE _ JPEG Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPH OTO _ TYPE _ D NG Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPH OTO _ TYPE _ JPEG _ D NG Ġ= Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFRAME _ TYPE _ NONE Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFRAME _ TYPE _ 1 _ 1 Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFRAME _ TYPE _ 4 _ 3 Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFRAME _ TYPE _ 3 _ 2 Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFRAME _ TYPE _ 1 6 _ 9 Ġ= Ġ 4 ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFL ASH _ MODE _ OFF Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFL ASH _ MODE _ ON Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFL ASH _ MODE _ TOR CH Ġ= Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠNOI SE _ RED UCTION _ DISABLED Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠNOI SE _ RED UCTION _ JPEG _ ONLY Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠNOI SE _ RED UCTION _ ENABLED Ġ= Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġval ĠSEQUENCE _ DELAY _ START _ OPTIONS Ġ= ĠarrayOf ( 2 , Ġ 5 , Ġ 1 0 ) ĊĠĠĠĠĠĠĠ Ġval ĠSEQUENCE _ DELAY _ B ETWEEN _ OPTIONS Ġ= ĠarrayOf ( 0 , Ġ 1 , Ġ 5 , Ġ 1 0 , Ġ 3 0 , Ġ 6 0 , Ġ 1 2 0 , Ġ 3 0 0 , Ġ 6 0 0 ) ĊĠĠĠĠĠĠĠ Ġval ĠSEQUENCE _ NUMBER _ OF _ PH OT OS _ OPTIONS Ġ= ĠarrayOf ( 1 , Ġ 3 , Ġ 5 , Ġ 1 0 , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġval ĠFL ASH _ MODES Ġ= ĠarrayOf (" OFF ", Ġ" ON ", Ġ" Torch ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġsave Uri : ĠString Ġ= Ġ"" ĊĠĠĠ Ġvar Ġcamera Index : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġiso Mode : ĠInt Ġ= ĠISO _ MODE _ AUTO ĊĠĠĠ Ġvar Ġiso Value : ĠInt Ġ= Ġ 1 0 0 ĊĠĠĠ Ġvar Ġspeed Mode : ĠInt Ġ= ĠSPE ED _ MODE _ AUTO ĊĠĠĠ Ġvar Ġspeed Value : ĠLong Ġ= Ġ 7 8 1 2 5 0 0 L Ġ// Ġ 1 / 1 2 5 Ġseconds ĊĠĠĠ Ġvar Ġexp Comp ensation Value : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġfocus Type : ĠInt Ġ= ĠF OC US _ TYPE _ CONT IN UO US ĊĠĠĠ Ġvar Ġfocus Manual Progress : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġshow Grid : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġvar Ġframe Type : ĠInt Ġ= ĠFRAME _ TYPE _ NONE ĊĠĠĠ Ġvar Ġcontinuous Mode : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġvar Ġtake Photo Modes : ĠInt Ġ= ĠPH OTO _ TYPE _ JPEG _ D NG ĊĠĠĠ Ġvar Ġnoise Reduction : ĠInt Ġ= ĠNOI SE _ RED UCTION _ JPEG _ ONLY ĊĠĠĠ Ġvar Ġsequence Delay Start : ĠInt Ġ= Ġ 2 ĊĠĠĠ Ġvar Ġsequence Delay Between : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġsequence NumberOf Photos : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġshow Sequence : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġvar Ġshow Debug Info : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġvar Ġflash Mode : ĠInt Ġ= ĠFL ASH _ MODE _ OFF ĊĠĠĠ Ġvar Ġenable H aptic Feedback Ġ= Ġtrue ĊĠĠĠ Ġvar Ġuse Location Ġ= Ġtrue ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġload Properties () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠforEach Setting Property ( Ġlistener : Ġ( K Mutable Property < *> )-> Unit Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor ( Ġmember Ġin Ġthis :: class . declared Member Properties Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( member . visibility Ġ== ĠK Visibility . PUBLIC Ġ&& Ġmember Ġis ĠK Mutable Property <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . invoke ( member ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Properties () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpreferences Ġ= Ġactivity . get Preferences ( Context . MODE _ PRIVATE ) ĊĊĠĠĠĠĠĠĠ ĠforEach Setting Property Ġ{ Ġproperty Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( Ġproperty . returnType Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoolean :: class . create Type () Ġ-> Ġproperty . setter . call ( Ġthis , Ġpreferences . getBoolean ( Ġproperty . name , Ġproperty . getter . call ( this ) Ġas ĠBoolean Ġ) Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInt :: class . create Type () Ġ-> Ġproperty . setter . call ( Ġthis , Ġpreferences . getInt ( Ġproperty . name , Ġproperty . getter . call ( this ) Ġas ĠInt Ġ) Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLong :: class . create Type () Ġ-> Ġproperty . setter . call ( Ġthis , Ġpreferences . getLong ( Ġproperty . name , Ġproperty . getter . call ( this ) Ġas ĠLong Ġ) Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFloat :: class . create Type () Ġ-> Ġproperty . setter . call ( Ġthis , Ġpreferences . get Float ( Ġproperty . name , Ġproperty . getter . call ( this ) Ġas ĠFloat Ġ) Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString :: class . create Type () Ġ-> Ġproperty . setter . call ( Ġthis , Ġpreferences . getString ( Ġproperty . name , Ġproperty . getter . call ( this ) Ġas ĠString Ġ) Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave Properties () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpreferences Ġ= Ġactivity . get Preferences ( Context . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġpreferences . edit () ĊĊĠĠĠĠĠĠĠ ĠforEach Setting Property Ġ{ Ġproperty Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( Ġproperty . returnType Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoolean :: class . create Type () Ġ-> Ġeditor . put Boolean ( Ġproperty . name , Ġproperty . getter . call ( this ) Ġas ĠBoolean Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInt :: class . create Type () Ġ-> Ġeditor . put Int ( Ġproperty . name , Ġproperty . getter . call ( this ) Ġas ĠInt Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLong :: class . create Type () Ġ-> Ġeditor . put Long ( Ġproperty . name , Ġproperty . getter . call ( this ) Ġas ĠLong Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFloat :: class . create Type () Ġ-> Ġeditor . put Float ( Ġproperty . name , Ġproperty . getter . call ( this ) Ġas ĠFloat Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString :: class . create Type () Ġ-> Ġeditor . putString ( Ġproperty . name , Ġproperty . getter . call ( this ) Ġas ĠString Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġeditor . commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Array Value ( Ġvalue : ĠInt , Ġdelta : ĠInt , Ġarray : ĠArray < Int > Ġ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġarray . indexOf ( value ) ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ< Ġ 0 ) Ġindex Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġindex Ġ+= Ġdelta ĊĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ< Ġ 0 ) Ġindex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( index Ġ>= Ġarray . size ) Ġindex Ġ= Ġarray . size - 1 ĊĊĠĠĠĠĠĠĠ Ġreturn Ġarray [ index ] ĊĠĠĠ Ġ} Ċ }