/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠPeter ĠRes pon dek Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . l any ard . helpers Ċ Ċ import Ġandroid . graphics . Point Ċ import Ġandroid . graphics . PointF Ċ import Ġandroid . graphics . Rect Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġcom . l any ard . canvas . Size Ċ import Ġkotlin . math . atan 2 Ċ import Ġkotlin . math . max Ċ import Ġkotlin . math . min Ċ import Ġkotlin . math . sqrt Ċ import Ġandroid . view . animation . Animation Ċ import Ġandroidx . fragment . app . Fragment ĊĊ Ċ operator Ġfun ĠPoint . plus ( other : ĠPoint ): ĠPoint Ġ{ ĊĠĠĠ Ġreturn ĠPoint ( x Ġ+ Ġother . x , Ġy Ġ+ Ġother . y ) Ċ } Ċ Ċ operator Ġfun ĠPoint . plus ( other : ĠSize ): ĠPoint Ġ{ ĊĠĠĠ Ġreturn ĠPoint ( x Ġ+ Ġother . width , Ġy Ġ+ Ġother . height ) Ċ } Ċ Ċ operator Ġfun ĠPoint . minus ( other : ĠPoint ): ĠPoint Ġ{ ĊĠĠĠ Ġreturn ĠPoint ( x Ġ- Ġother . x , Ġy Ġ- Ġother . y ) Ċ } Ċ Ċ class ĠColor Helper Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠAR GB Int ( alpha : ĠFloat , Ġred : ĠFloat , Ġgreen : ĠFloat , Ġblue : ĠFloat ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( alpha Ġ* Ġ 2 5 5 . 0 f Ġ+ Ġ 0 . 5 f ). toInt () Ġshl Ġ 2 4 Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(( red Ġ* Ġ 2 5 5 . 0 f Ġ+ Ġ 0 . 5 f ). toInt () Ġshl Ġ 1 6 ) Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(( green Ġ* Ġ 2 5 5 . 0 f Ġ+ Ġ 0 . 5 f ). toInt () Ġshl Ġ 8 ) Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( blue Ġ* Ġ 2 5 5 . 0 f Ġ+ Ġ 0 . 5 f ). toInt () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ fun ĠBoolean . toInt () Ġ: ĠInt Ġ{ ĊĠĠĠ Ġif Ġ( and ( true )) Ġreturn Ġ 1 ĊĠĠĠ Ġreturn Ġ 0 Ċ } ĊĊĊ Ċ operator Ġfun ĠPoint . minus ( other : ĠSize ): ĠPoint Ġ{ ĊĠĠĠ Ġreturn ĠPoint ( x Ġ- Ġother . width , Ġy Ġ- Ġother . height ) Ċ } Ċ Ċ operator Ġfun ĠPoint . times ( other : ĠFloat ): ĠPoint Ġ{ ĊĠĠĠ Ġreturn ĠPoint (( x Ġ* Ġother ). toInt (), Ġ( y Ġ* Ġother ). toInt ()) Ċ } Ċ Ċ operator Ġfun ĠPoint . unary Minus () Ġ: ĠPoint Ġ{ ĊĠĠĠ Ġreturn ĠPoint (- x ,- y ) Ċ } Ċ operator Ġfun ĠPoint . times Assign Ġ( other : ĠPoint ) Ġ{ ĊĠĠĠ Ġx Ġ*= Ġother . x ĊĠĠĠ Ġy Ġ*= Ġother . y Ċ } Ċ Ċ operator Ġfun ĠPoint . times Assign Ġ( other : ĠFloat ) Ġ{ ĊĠĠĠ Ġx Ġ*= Ġother . toInt () ĊĠĠĠ Ġy Ġ*= Ġother . toInt () Ċ } Ċ Ċ operator Ġfun ĠPoint . minus Assign ( other : ĠPoint ) Ġ{ ĊĠĠĠ Ġx Ġ-= Ġother . x ĊĠĠĠ Ġy Ġ-= Ġother . y Ċ } Ċ Ċ operator Ġfun ĠPoint . minus Assign ( other : ĠSize ) Ġ{ ĊĠĠĠ Ġx Ġ-= Ġother . width ĊĠĠĠ Ġy Ġ-= Ġother . height Ċ } Ċ Ċ operator Ġfun ĠPoint . minus Assign ( other : ĠFloat ) Ġ{ ĊĠĠĠ Ġx Ġ-= Ġother . toInt () ĊĠĠĠ Ġy Ġ-= Ġother . toInt () Ċ } Ċ Ċ operator Ġfun ĠPoint F . minus Ġ( other : ĠPoint F ) Ġ: ĠPoint F Ġ{ ĊĠĠĠ Ġreturn ĠPoint F Ġ( this . x Ġ- Ġother . x , Ġthis . y Ġ- Ġother . y ) Ċ } Ċ operator Ġfun ĠPoint . plus Assign ( other : ĠPoint ) Ġ{ ĊĠĠĠ Ġx Ġ+= Ġother . x ĊĠĠĠ Ġy Ġ+= Ġother . y Ċ } Ċ Ċ fun ĠPoint . set ( other : ĠPoint F ) Ġ{ ĊĠĠĠ Ġx Ġ= Ġother . x . toInt () ĊĠĠĠ Ġy Ġ= Ġother . y . toInt () Ċ } Ċ Ċ fun Ġ< T > ĠMutable List < T >. pop Last () Ġ: ĠT Ċ { ĊĠĠĠ Ġvar Ġlast Ġ= Ġlast () ĊĠĠĠ Ġremove At ( size - 1 ) ĊĠĠĠ Ġreturn Ġlast Ċ } Ċ Ċ val ĠPoint . angle Ġ: ĠDouble ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġatan 2 ( y . toDouble (), Ġx . toDouble ()); ĊĠĠĠ Ġ} Ċ Ċ val ĠPoint F . angle Ġ: ĠDouble ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġatan 2 ( y . toDouble (), Ġx . toDouble ()); ĊĠĠĠ Ġ} Ċ Ċ fun ĠPoint . l enght Ġ() Ġ: ĠDouble Ġ{ ĊĠĠĠ Ġreturn Ġsqrt ( Ġ( x * x Ġ+ Ġy * y ). toDouble () Ġ); Ċ } Ċ Ċ fun ĠPoint . to PointF () Ġ: ĠPoint F Ġ{ ĊĠĠĠ Ġreturn ĠPoint F ( x . toFloat (), y . toFloat ()) Ċ } Ċ Ċ fun ĠPoint F . to Point () Ġ: ĠPoint Ġ{ ĊĠĠĠ Ġreturn ĠPoint ( x . toInt (), y . toInt ()) Ċ } Ċ Ċ fun ĠPoint . distance ( other : ĠPoint ) Ġ: ĠDouble Ġ{ ĊĠĠĠ Ġreturn Ġ( this Ġ- Ġother ). l enght () Ċ } Ċ Ċ fun ĠRect . intersect s ( rect : ĠRect ) Ġ: ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġintersect s ( min ( rect . left , rect . right ), min ( rect . top , rect . bottom ), max ( rect . right , rect . left ) Ġ, max ( rect . bottom , rect . top )) Ċ } Ċ Ċ fun ĠPoint . set ( other : ĠPoint ) Ġ{ ĊĠĠĠ Ġset ( other . x , other . y ) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT > ĠGson . fromJson ( json : ĠString ) Ġ= Ġthis . fromJson < T >( json , Ġobject : ĠType Token < T >() Ġ{} . type ) ĊĊĊĊ