/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠV lad ĠWe ber - P fl a um er Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// 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 Ġk z . sg q . color assistant . ui . view Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Typed Array Ċ import Ġandroid . graphics .* Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġk z . sg q . color assistant . R Ċ import Ġk z . sg q . color assistant . ui . util . H SL Converter Ċ Ċ class ĠColor Picker Ġ: ĠView Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġlight ness View : ĠLight ness View ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġsat uration View : ĠSat uration View ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġitem Color : ĠItem Color ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġvalue Sat uration Ġ= Ġ 1 f ĊĠĠĠ Ġprivate Ġvar Ġvalue Light ness Ġ= Ġ 1 f ĊĠĠĠ Ġprivate Ġvar Ġbool Light ness Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġtranslation Offset Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġcolor Wheel Thickness Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcolor Pointer Radius Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcolor Pointer H alo Radius Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcolor Wheel Radius Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcolor Center Radius Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcenter Color Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġfirst Color Wheel Radius Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġfirst Color Center Radius Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcolor Pointer Paint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĠĠĠ Ġprivate Ġvar Ġcolor Pointer H alo Paint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĠĠĠ Ġprivate Ġvar Ġcolor Wheel Paint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĠĠĠ Ġprivate Ġvar Ġcolor Center Paint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĠĠĠ Ġprivate Ġvar Ġcolor Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġold Selected Listener Color Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġuser Moving Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġangle Ġ= Ġ- Math . PI Ġ/ Ġ 2 ĊĠĠĠ Ġprivate Ġvar Ġm S lop X Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġm S lop Y Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġtouch Color Wheel Enabled Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġswitch Pointer Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġval ĠCOL ORS Ġ= Ġint ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 0 xffff 0 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 0 xff 0 0 0 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 0 xff 0 1 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 0 x 1 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 0 x 1 0 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 0 xff 0 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 0 xffff 0 1 ĊĠĠĠ Ġ) ĊĠĠĠ Ġprivate Ġval Ġm H SV Color Ġ= ĠFloat Array ( 3 ) ĊĠĠĠ Ġprivate Ġval Ġcolor Wheel Rectangle Ġ= ĠRect F () ĊĠĠĠ Ġprivate Ġval Ġcolor Center Rectangle Ġ= ĠRect F () ĊĊĠĠĠ Ġconstructor ( context : ĠContext ?) Ġ: Ġsuper ( context ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinit Constructor ( null , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?) Ġ: Ġsuper ( context , Ġattrs ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinit Constructor ( attrs , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattrs : ĠAttributeSet ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdef Style Attr : ĠInt ĊĠĠĠ Ġ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinit Constructor ( attrs , Ġdef Style Attr ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintr insic Size Ġ= Ġ 2 Ġ* Ġ( first Color Wheel Radius Ġ+ Ġcolor Pointer H alo Radius ) ĊĠĠĠĠĠĠĠ Ġval Ġwidth Mode Ġ= ĠView . Measure Spec . get Mode ( width Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġwidth Size Ġ= ĠView . Measure Spec . getSize ( width Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġheight Mode Ġ= ĠView . Measure Spec . get Mode ( height Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġheight Size Ġ= ĠView . Measure Spec . getSize ( height Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġwhen Ġ( width Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMeasure Spec . EX ACT LY Ġ-> Ġwidth Size ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMeasure Spec . AT _ MO ST Ġ-> ĠMath . min ( intrinsic Size , Ġwidth Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMeasure Spec . UNSPECIFIED Ġ-> Ġintr insic Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġwhen Ġ( height Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMeasure Spec . EX ACT LY Ġ-> Ġheight Size ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMeasure Spec . AT _ MO ST Ġ-> ĠMath . min ( intrinsic Size , Ġheight Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMeasure Spec . UNSPECIFIED Ġ-> Ġintr insic Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmin Ġ= ĠMath . min ( width , Ġheight ) ĊĊĠĠĠĠĠĠĠ Ġset Measured Dimension ( min , Ġmin ) ĊĊĠĠĠĠĠĠĠ Ġtranslation Offset Ġ= Ġmin Ġ* Ġ 0 . 5 f ĊĠĠĠĠĠĠĠ Ġcolor Wheel Radius Ġ= Ġmin Ġ/ Ġ 2 Ġ- Ġcolor Wheel Thickness Ġ- Ġcolor Pointer H alo Radius ĊĊĠĠĠĠĠĠĠ Ġcolor Wheel Rectangle . set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- color Wheel Radius . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- color Wheel Radius . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Wheel Radius . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Wheel Radius . toFloat () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġcolor Center Radius Ġ= Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Color Center Radius . toFloat () Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( color Wheel Radius . toFloat () Ġ/ Ġfirst Color Wheel Radius ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). toInt () ĊĊĠĠĠĠĠĠĠ Ġcolor Center Rectangle . set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- color Center Radius . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- color Center Radius . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Center Radius . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Center Radius . toFloat () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĊĠĠĠĠĠĠĠ Ġval Ġpointer Position Ġ= Ġif Ġ( switch Pointer ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Color ?. setPosition ( calc Point Position ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Color ?. getPosition () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswitch Pointer Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Color ?. getPosition () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcanvas ?. apply Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtranslate ( translation Offset , Ġtranslation Offset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw O val ( color Wheel Rectangle , Ġcolor Wheel Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Circle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpointer Position ! ![ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpointer Position [ 1 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Pointer H alo Radius . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Pointer H alo Paint ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Circle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpointer Position ! ![ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpointer Position [ 1 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Pointer Radius . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Pointer Paint ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw O val ( color Center Rectangle , Ġcolor Center Paint ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Click ableView Accessibility ") ĊĠĠĠ Ġoverride Ġfun Ġon Touch Event ( event : ĠMotion Event ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġevent !!. x Ġ- Ġtranslation Offset ĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġevent . y Ġ- Ġtranslation Offset ĊĊĠĠĠĠĠĠĠ Ġparent . request Dis allow Intercept Touch Event ( true ) ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( event . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpointer Position Ġ= Ġcalc Point Position () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Color ?. setPosition ( pointer Position ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( x Ġ>= Ġ( pointer Position [ 0 ] Ġ- Ġcolor Pointer H alo Radius )) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( x Ġ<= Ġ( pointer Position [ 0 ] Ġ+ Ġcolor Pointer H alo Radius )) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( y Ġ>= Ġ( pointer Position [ 1 ] Ġ- Ġcolor Pointer H alo Radius )) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( y Ġ<= Ġ( pointer Position [ 1 ] Ġ+ Ġcolor Pointer H alo Radius ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm S lop X Ġ= Ġx Ġ- Ġpointer Position [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm S lop Y Ġ= Ġy Ġ- Ġpointer Position [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Moving Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(( Math . sqrt (( x Ġ* Ġx Ġ+ Ġy Ġ* Ġy ). toDouble ()) Ġ<= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( color Wheel Radius Ġ+ Ġcolor Pointer H alo Radius )) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Math . sqrt (( x Ġ* Ġx Ġ+ Ġy Ġ* Ġy ). toDouble ()) Ġ>= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( color Wheel Radius Ġ- Ġcolor Pointer H alo Radius )) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtouch Color Wheel Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Moving Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent . request Dis allow Intercept Touch Event ( false ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ MOVE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Moving ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġangle Ġ= ĠMath . atan 2 (( y Ġ- Ġm S lop Y ). toDouble (), Ġ( x Ġ- Ġm S lop X ). toDouble ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Color ?. set Angle ( angle ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalc Color () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Pointer Paint . color Ġ= Ġcolor ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Color ( color ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Pointer H alo Paint . color Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Pointer H alo Paint . alpha Ġ= Ġ 0 x 5 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent . request Dis allow Intercept Touch Event ( false ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ UP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Moving Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( center Color Ġ!= Ġold Selected Listener Color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Selected Listener Color Ġ= Ġcenter Color ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ CANCEL Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( center Color Ġ!= Ġold Selected Listener Color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Selected Listener Color Ġ= Ġcenter Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Light ness ( float : ĠFloat , Ġbool : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvalue Light ness Ġ= Ġfloat ĊĠĠĠĠĠĠĠ Ġbool Light ness Ġ= Ġbool ĊĊĠĠĠĠĠĠĠ Ġitem Color ?. set Light ness ( float ) ĊĠĠĠĠĠĠĠ Ġitem Color ?. set Bool Light ness ( bool ) ĊĠĠĠĠĠĠĠ Ġcalc Color () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Sat uration ( float : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvalue Sat uration Ġ= Ġfloat ĊĊĠĠĠĠĠĠĠ Ġitem Color ?. set Sat uration ( float ) ĊĠĠĠĠĠĠĠ Ġcalc Color () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Position Light ness ( position : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġitem Color ?. setPosition Light ness ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Position Sat uration ( position : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġitem Color ?. setPosition Sat uration ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Item Color ( item Color : ĠItem Color ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġthis . item Color ?. set Enable ( false ) ĊĊĠĠĠĠĠĠĠ Ġthis . item Color Ġ= Ġitem Color . apply Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( getPosition () Ġ== Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Color ( center Color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Position Light ness ( light ness View ?. getPosition () !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Position Sat uration ( sat uration View ?. getPosition () !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Angle ( angle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswitch Pointer Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlight ness View ?. setPosition ( getPosition Light ness ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsat uration View ?. setPosition ( getPosition Sat uration ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġangle Ġ= Ġget Angle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Light ness Ġ= Ġget Light ness () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbool Light ness Ġ= Ġget Bool Light ness () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Sat uration Ġ= Ġget Sat uration () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġthis . item Color ?. set Enable ( true ) ĊĠĠĠĠĠĠĠ Ġcalc Color () ĊĊĠĠĠĠĠĠĠ Ġcolor Pointer Paint . color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġcolor Pointer H alo Paint . color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġcolor Pointer H alo Paint . alpha Ġ= Ġ 0 x 5 0 ĊĊĠĠĠĠĠĠĠ Ġset Color ( color ) ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Light ness View ( light ness View : ĠLight ness View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . light ness View Ġ= Ġlight ness View ĊĊĠĠĠĠĠĠĠ Ġthis . light ness View ?. add Color Picker ( this ) ĊĠĠĠĠĠĠĠ Ġthis . light ness View ?. setColor ( color ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Sat uration View ( sat uration View : ĠSat uration View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . sat uration View Ġ= Ġsat uration View ĊĊĠĠĠĠĠĠĠ Ġthis . sat uration View ?. add Color Picker ( this ) ĊĠĠĠĠĠĠĠ Ġthis . sat uration View ?. setColor ( color ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Constructor ( attrs : ĠAttributeSet ?, Ġdef Style Attr : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresources Ġ= Ġcontext . resources ĊĠĠĠĠĠĠĠ Ġval Ġtyped Array : ĠTyped Array Ġ= Ġcontext . obtain Styled Attributes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Color Picker , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdef Style Attr , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcolor Wheel Thickness Ġ= Ġtyped Array . get Dimension Pixel Size ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Color Picker _ color _ wheel _ thickness , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . get Dimension Pixel Size ( R . dim en . color _ wheel _ thickness ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcolor Pointer Radius Ġ= Ġtyped Array . get Dimension Pixel Size ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Color Picker _ color _ pointer _ radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . get Dimension Pixel Size ( R . dim en . color _ pointer _ radius ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcolor Pointer H alo Radius Ġ= Ġtyped Array . get Dimension Pixel Size ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Color Picker _ color _ center _ h alo _ radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . get Dimension Pixel Size ( R . dim en . color _ pointer _ h alo _ radius ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcolor Wheel Radius Ġ= Ġtyped Array . get Dimension Pixel Size ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Color Picker _ color _ wheel _ radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . get Dimension Pixel Size ( R . dim en . color _ wheel _ radius ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcolor Center Radius Ġ= Ġtyped Array . get Dimension Pixel Size ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Color Picker _ color _ center _ radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . get Dimension Pixel Size ( R . dim en . color _ center _ radius ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfirst Color Wheel Radius Ġ= Ġcolor Wheel Radius ĊĠĠĠĠĠĠĠ Ġfirst Color Center Radius Ġ= Ġcolor Center Radius ĊĊĠĠĠĠĠĠĠ Ġtyped Array . recycle () ĊĊĠĠĠĠĠĠĠ Ġcolor Pointer Paint . color Ġ= Ġcalc Color () ĊĠĠĠĠĠĠĠ Ġcolor Pointer H alo Paint . color Ġ= Ġcalc Color () ĊĠĠĠĠĠĠĠ Ġcolor Pointer H alo Paint . alpha Ġ= Ġ 0 x 5 0 ĊĠĠĠĠĠĠĠ Ġcolor Wheel Paint . shader Ġ= ĠS weep Gradient ( 0 f , Ġ 0 f , ĠCOL ORS , Ġnull ) ĊĠĠĠĠĠĠĠ Ġcolor Wheel Paint . style Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠ Ġcolor Wheel Paint . stroke Width Ġ= Ġcolor Wheel Thickness . toFloat () ĊĠĠĠĠĠĠĠ Ġcolor Center Paint . color Ġ= Ġcalc Color () ĊĊĠĠĠĠĠĠĠ Ġitem Color ?. setColor ( calc Color ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcalc Point Position (): ĠFloat Array Ġ= Ġfloat ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( color Wheel Radius Ġ* ĠMath . cos ( angle )). toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( color Wheel Radius Ġ* ĠMath . sin ( angle )). toFloat () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġaverage ( a : ĠInt , Ġb : ĠInt , Ġc : ĠFloat ): ĠInt Ġ= Ġa Ġ+ ĠMath . round ( c Ġ* Ġ( b Ġ- Ġa )) ĊĊĠĠĠ Ġprivate Ġfun Ġcalc Color (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġunit Ġ= Ġ( angle Ġ/ Ġ( 2 Ġ* ĠMath . PI )). toFloat () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( unit Ġ< Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunit Ġ+= Ġ 1 f ĊĊĠĠĠĠĠĠĠ Ġif Ġ( unit Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠCOL ORS [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcenter Color Ġ= ĠCOL ORS [ 0 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCOL ORS [ 0 ] ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( unit Ġ>= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠCOL ORS [ COLORS . size Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcenter Color Ġ= ĠCOL ORS [ COLORS . size Ġ- Ġ 1 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCOL ORS [ COLORS . size Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġp Ġ= Ġunit Ġ* Ġ( COLORS . size Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġp . toInt () ĊĠĠĠĠĠĠĠ Ġp Ġ-= Ġi . toFloat () ĊĠĠĠĠĠĠĠ Ġval Ġc 0 Ġ= ĠCOL ORS [ i ] ĊĠĠĠĠĠĠĠ Ġval Ġc 1 Ġ= ĠCOL ORS [ i Ġ+ Ġ 1 ] ĊĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġaverage ( Color . red ( c 0 ), ĠColor . red ( c 1 ), Ġp ) ĊĠĠĠĠĠĠĠ Ġval Ġg Ġ= Ġaverage ( Color . green ( c 0 ), ĠColor . green ( c 1 ), Ġp ) ĊĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġaverage ( Color . blue ( c 0 ), ĠColor . blue ( c 1 ), Ġp ) ĊĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . rgb ( r , Ġg , Ġb ) ĊĊĠĠĠĠĠĠĠ ĠColor . color To H SV ( color , Ġm H SV Color ) ĊĊĠĠĠĠĠĠĠ Ġcenter Color Ġ= Ġif Ġ( bool Light ness ) ĠColor . H SV To Color ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfloat ArrayOf ( m H SV Color [ 0 ], Ġvalue Light ness , Ġ 1 f ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġelse ĠColor . H SV To Color ( float ArrayOf ( m H SV Color [ 0 ], Ġ 1 f , Ġvalue Light ness )) ĊĊĠĠĠĠĠĠĠ Ġcenter Color Ġ= ĠH SL Converter . getS at uration ( center Color , Ġvalue Sat uration ) ĊĊĠĠĠĠĠĠĠ Ġset Center Color () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠColor . rgb ( r , Ġg , Ġb ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Color ( color : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġlight ness View ?. setColor ( color ) ĊĠĠĠĠĠĠĠ Ġsat uration View ?. setColor ( color ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Center Color () Ġ{ ĊĠĠĠĠĠĠĠ Ġcolor Center Paint . color Ġ= Ġcenter Color ĊĊĠĠĠĠĠĠĠ Ġitem Color ?. setColor ( center Color ) ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} Ċ }