/* čĊ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠSeb astian ĠE rives čĊ Ġ* čĊ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy čĊ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal čĊ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights čĊ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell čĊ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis čĊ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : čĊ Ġ* čĊ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall čĊ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . čĊ Ġ* čĊ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR čĊ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , čĊ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE čĊ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER čĊ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , čĊ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE čĊ Ġ* ĠSOFTWARE . čĊ Ġ* čĊ Ġ*/ čĊč Ċ package Ġcom . github . ser ives me j ia . e oc v sim . tun er . field . cv čĊč Ċ import Ġcom . github . ser ives me j ia . e oc v sim . E OC VS im č Ċ import Ġcom . github . ser ives me j ia . e oc v sim . tun er . T unable Field č Ċ import Ġcom . github . ser ives me j ia . e oc v sim . tun er . scanner . Register T unable Field č Ċ import Ġorg . opencv . core . Rect č Ċ import Ġorg . open ft c . easy opencv . Open Cv Pipeline č Ċ import Ġjava . lang . reflect . Field čĊč Ċ @ Register T unable Field č Ċ class ĠRect Field ( instance : ĠOpen Cv Pipeline , Ġreflection Field : ĠField , Ġe oc v Sim : ĠE OC VS im ) Ġ: ĠčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT unable Field < Rect >( instance , Ġreflection Field , Ġe oc v Sim , ĠAllow Mode . ONLY _ NUMBER S _ DECIMAL ) Ġ{ čĊčĊĠĠĠ Ġprivate Ġvar Ġrect Ġ= ĠarrayOf ( 0 . 0 , Ġ 0 . 0 , Ġ 0 . 0 , Ġ 0 . 0 ) čĊĠĠĠ Ġprivate Ġvar Ġlast Rect Ġ= ĠarrayOf ( 0 . 0 , Ġ 0 . 0 , Ġ 0 . 0 , Ġ 0 . 0 ) čĊčĊĠĠĠ Ġ@ Volatile Ġprivate Ġvar Ġhas Changed Ġ= Ġfalse čĊčĊĠĠĠ Ġprivate Ġvar Ġinitial Rect Ġ= Ġif ( initial FieldValue Ġ!= Ġnull ) čĊĠĠĠĠĠĠĠ Ġinitial FieldValue Ġas ĠRect čĊĠĠĠ Ġelse ĠRect ( 0 , Ġ 0 , Ġ 0 , Ġ 0 ) čĊčĊĠĠĠ Ġinit Ġ{ čĊĠĠĠĠĠĠĠ Ġrect [ 0 ] Ġ= Ġinitial Rect . x . toDouble () čĊĠĠĠĠĠĠĠ Ġrect [ 1 ] Ġ= Ġinitial Rect . y . toDouble () čĊĠĠĠĠĠĠĠ Ġrect [ 2 ] Ġ= Ġinitial Rect . width . toDouble () čĊĠĠĠĠĠĠĠ Ġrect [ 3 ] Ġ= Ġinitial Rect . height . toDouble () čĊĠĠĠĠĠĠĠĠčĊĠĠĠĠĠĠĠ Ġgui Field Amount Ġ= Ġ 4 čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġinit () Ġ{} čĊčĊĠĠĠ Ġoverride Ġfun Ġupdate () Ġ{ čĊĠĠĠĠĠĠĠ Ġif ( has Changed ()){ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Rect Ġ= Ġreflection Field . get ( pipeline ) Ġas ĠRect čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġrect [ 0 ] Ġ= Ġinitial Rect . x . toDouble () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġrect [ 1 ] Ġ= Ġinitial Rect . y . toDouble () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġrect [ 2 ] Ġ= Ġinitial Rect . width . toDouble () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġrect [ 3 ] Ġ= Ġinitial Rect . height . toDouble () čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Gui Field Values () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġupdate Gui Field Values () Ġ{ čĊĠĠĠĠĠĠĠ Ġfor (( i , Ġvalue ) Ġin Ġrect . with Index ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Panel . set FieldValue ( i , Ġvalue ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġset Gui FieldValue ( index : ĠInt , ĠnewValue : ĠString ) Ġ{ čĊĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠnewValue . toDouble () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġrect [ index ] Ġ= Ġvalue čĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠNumber FormatException ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Parameter Ġshould Ġbe Ġa Ġvalid Ġnumeric ĠString ") čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġinitial Rect . set ( rect . toDouble Array ()); čĊĠĠĠĠĠĠĠ Ġset Pipeline FieldValue ( initial Rect ) čĊčĊĠĠĠĠĠĠĠ Ġlast Rect [ 0 ] Ġ= Ġinitial Rect . x . toDouble () čĊĠĠĠĠĠĠĠ Ġlast Rect [ 1 ] Ġ= Ġinitial Rect . y . toDouble () čĊĠĠĠĠĠĠĠ Ġlast Rect [ 2 ] Ġ= Ġinitial Rect . width . toDouble () čĊĠĠĠĠĠĠĠ Ġlast Rect [ 3 ] Ġ= Ġinitial Rect . height . toDouble () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun ĠgetValue (): ĠRect Ġ= ĠRect ( rect . toDouble Array ()) čĊčĊĠĠĠ Ġoverride Ġfun Ġget Gui FieldValue ( index : ĠInt ): ĠAny Ġ= Ġrect [ index ] čĊčĊĠĠĠ Ġoverride Ġfun Ġhas Changed (): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ Ġhas Changed Ġ= Ġrect [ 0 ] Ġ!= Ġlast Rect [ 0 ] Ġ|| Ġrect [ 1 ] Ġ!= Ġlast Rect [ 1 ] čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġrect [ 2 ] Ġ!= Ġlast Rect [ 2 ] Ġ|| Ġrect [ 3 ] Ġ!= Ġlast Rect [ 3 ] čĊĠĠĠĠĠĠĠ Ġreturn Ġhas Changed čĊĠĠĠ Ġ} čĊč Ċ }