package Ġcom . kn ight . kotlin . library _ widget Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Compose Shader Ċ import Ġandroid . graphics . Linear Gradient Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Point Ċ import Ġandroid . graphics . Port er D uff Ċ import Ġandroid . graphics . Rect F Ċ import Ġandroid . graphics . Shader Ċ import Ġandroid . graphics . Shader . Tile Mode Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroidx . annotation . Int Def Ċ import Ġjava . lang . annotation . Retention Ċ import Ġjava . lang . annotation . RetentionPolicy Ċ Ċ /** Ċ Ġ* ĠAuthor : K night Ċ Ġ* ĠTime : 2 0 2 2 / 5 / 2 5 Ġ 1 0 : 1 3 Ċ Ġ* ĠDescription : Color Picker View Ċ Ġ*/ Ċ class ĠColor Picker View Ġ: ĠView Ġ{ ĊĊĠĠĠ Ġ@ Int Def ( PANEL . SAT _ VAL , ĠPAN EL . H UE ) ĊĠĠĠ Ġ@ Retention ( RetentionPolicy . SOURCE ) ĊĠĠĠ Ġinternal Ġannotation Ġclass ĠPAN EL Ġ{ ĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠS AT _ VAL Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠH UE Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĺ¾ç¤º H ãĢģ SV çļĦ çŁ© å½¢ çļĦ è¾¹ æ¡Ĩ ç² Ĺ ç»Ĩ ï¼Ī åįķä½į ï¼ļ dp ï¼ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval ĠBORDER _ WIDTH Ġ= Ġ 1 f ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠH çŁ© å½¢ çļĦ å®½åº¦ ï¼Ī åįķä½į ï¼ļ dp ï¼ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Hue Panel Width Ġ= Ġ 3 0 f ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠH ãĢģ SV çŁ© å½¢ éĹ´ çļĦ éĹ´ è·Ŀ ï¼Ī åįķä½į ï¼ļ dp ï¼ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Panel Spacing Ġ= Ġ 1 0 f ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå½ĵ mode ä¸º Measure Spec . UNSPECIFIED æĹ¶çļĦ é¦ĸ éĢī é«ĺåº¦ ï¼Ī åįķä½į ï¼ļ dp ï¼ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Preferred Height Ġ= Ġ 2 0 0 f ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå½ĵ mode ä¸º Measure Spec . UNSPECIFIED æĹ¶çļĦ é¦ĸ éĢī å®½åº¦ ï¼Ī åįķä½į ï¼ļ dp ï¼ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Preferred Width Ġ= Ġm Preferred Height Ġ+ Ġm Hue Panel Width Ġ+ Ġm Panel Spacing ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSV æĮĩ ç¤º åĻ¨ çļĦ åįĬ å¾Ħ ï¼Ī åįķä½į ï¼ļ dp ï¼ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm SV Tracker Radius Ġ= Ġ 5 f ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSV æĮĩ ç¤º åĻ¨ çļĦ åįĬ å¾Ħ ï¼Ī åįķä½į ï¼ļ dp ï¼ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm H Tracker Height Ġ= Ġ 4 f ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠH ãĢģ SV çŁ© å½¢ ä¸İ çĪ¶ å¸ĥå±Ģ çļĦ è¾¹ è·Ŀ ï¼Ī åįķä½į ï¼ļ dp ï¼ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Rect Offset Ġ= Ġ 2 f ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å±ı å¹ķ å¯Ĩ åº¦ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Density Ġ= Ġ 1 f ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç»ĺ åĪ¶ SV çļĦ çĶ» ç¬Ķ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Sat Val Paint : ĠPaint ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç»ĺ åĪ¶ SV æĮĩ ç¤º åĻ¨ çļĦ çĶ» ç¬Ķ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Sat Val Tracker Paint : ĠPaint ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç»ĺ åĪ¶ H çļĦ çĶ» ç¬Ķ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Hue Paint : ĠPaint ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç»ĺ åĪ¶ H æĮĩ ç¤º åĻ¨ çļĦ çĶ» ç¬Ķ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Hue Tracker Paint : ĠPaint ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç»ĺ åĪ¶ H ãĢģ SV çŁ© å½¢ çļĦ è¾¹ çº¿ çļĦ çĶ» ç¬Ķ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Border Paint : ĠPaint ĊĊĠĠĠ Ġ// H ãĢģ V çĿĢ èī² åĻ¨ ĊĠĠĠ Ġprivate Ġvar Ġm Hue Shader : ĠShader ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Val Shader : ĠShader ? Ġ= Ġnull ĊĊĠĠĠ Ġ// H SV çļĦ é»ĺè®¤ åĢ¼ ĊĠĠĠ Ġprivate Ġvar Ġm Hue Ġ= Ġ 3 6 0 f ĊĠĠĠ Ġprivate Ġvar Ġm Sat Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġm Val Ġ= Ġ 0 f ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ çĶ¨äºİ æĺ¾ç¤º è¢« éĢīæĭ© H çļĦ ä½įç½® çļĦ æĮĩ ç¤º åĻ¨ çļĦ é¢ľèī² ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġm Slider Tracker Color Ġ= Ġ 0 xff 1 c 1 c 1 c . toInt () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠH ãĢģ SV çŁ© å½¢ çļĦ è¾¹ æ¡Ĩ é¢ľèī² ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġm BorderColor Ġ= Ġ 0 xff 6 E 6 E 6 E . toInt () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è®°å½ķ ä¸Ĭ ä¸Ģæ¬¡ è¢« çĤ¹åĩ» çļĦ é¢ľèī² æĿ¿ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ PANEL ĊĠĠĠ Ġprivate Ġvar Ġm Last Tou ched Panel Ġ= ĠPAN EL . SAT _ VAL ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è¾¹ è·Ŀ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Drawing Offset Ġ= Ġ 0 f ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠH æĮĩ ç¤º åĻ¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġ Ġm Drawing Rect : ĠRect F ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ çĶ¨äºİ éĢīæĭ© SV çļĦ çŁ© å½¢ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Sat Val Rect : ĠRect F ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ çĶ¨äºİ éĢīæĭ© H çļĦ çŁ© å½¢ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Hue Rect : ĠRect F ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSV æĮĩ ç¤º åĻ¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Start Touch Point : ĠPoint ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġm Listener : ĠOn Color Changed Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġinterface ĠOn Color Changed Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Color Changed ( color : ĠInt ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattribute Set : ĠAttributeSet ? Ġ= Ġnull , Ġdef Attr Style : ĠInt Ġ= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: Ġsuper ( context , Ġattribute Set , Ġdef Attr Style ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Density Ġ= Ġcontext . resources . display Metrics . density Ġ// èİ·åıĸ å±ı å¹ķ å¯Ĩ åº¦ ĊĠĠĠĠĠĠĠ Ġm SV Tracker Radius Ġ*= Ġm Density Ġ// çģ ° åº¦ é¥ ± åĴĮ åº¦ æĮĩ ç¤º åĻ¨ çļĦ åįĬ å¾Ħ ĊĠĠĠĠĠĠĠ Ġm H Tracker Height Ġ*= Ġm Density Ġ// èī² çĽ¸ æĮĩ ç¤º åĻ¨ é«ĺåº¦ ĊĠĠĠĠĠĠĠ Ġm Rect Offset Ġ*= Ġm Density Ġ// H ãĢģ SV çŁ© å½¢ ä¸İ çĪ¶ å¸ĥå±Ģ çļĦ è¾¹ è·Ŀ ĊĠĠĠĠĠĠĠ Ġm Hue Panel Width Ġ*= Ġm Density Ġ// H çŁ© å½¢ çļĦ å®½åº¦ ĊĠĠĠĠĠĠĠ Ġm Panel Spacing Ġ*= Ġm Density Ġ// H ãĢģ SV çŁ© å½¢ éĹ´ çļĦ éĹ´ è·Ŀ ĊĠĠĠĠĠĠĠ Ġm Preferred Height Ġ*= Ġm Density Ġ// å½ĵ mode ä¸º Measure Spec . UNSPECIFIED æĹ¶çļĦ é¦ĸ éĢī é«ĺåº¦ ĊĠĠĠĠĠĠĠ Ġm Preferred Width Ġ*= Ġm Density Ġ// å½ĵ mode ä¸º Measure Spec . UNSPECIFIED æĹ¶çļĦ é¦ĸ éĢī å®½åº¦ ĊĠĠĠĠĠĠĠ Ġm Drawing Offset Ġ= Ġcalculate Required Offset () Ġ// è®¡ç®Ĺ æīĢ éľĢ ä½į ç§» ĊĠĠĠĠĠĠĠ Ġinit Paint Tools () Ġ// åĪĿå§ĭåĮĸ çĶ» ç¬Ķ ãĢģ çĶ» å¸ĥ ĊĠĠĠĠĠĠĠ Ġis Focus able Ġ= Ġtrue Ġ// è®¾ç½® åı¯ èİ·åıĸ çĦ ¦ çĤ¹ ĊĠĠĠĠĠĠĠ Ġis Focus able In Touch Mode Ġ= Ġtrue Ġ// è®¾ç½® åľ¨ è¢« è§¦ æĳ ¸ æĹ¶ ä¼ļ èİ·åıĸ çĦ ¦ çĤ¹ ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġm SV Tracker Radius ãĢģ ĊĠĠĠĠ Ġ* Ġm Rect Offset ãĢģ ĊĠĠĠĠ Ġ* ĠBORDER _ WIDTH Ġ* Ġm Density ĊĠĠĠĠ Ġ* Ġ ä¸ī èĢħ çļĦ æľĢå¤§ åĢ¼ ĊĠĠĠĠ Ġ* ĠçļĦ 1 . 5 åĢ į ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ è¾¹ è·Ŀ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcalculate Required Offset (): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġoffset Ġ= ĠMath . max ( m SV Tracker Radius , Ġm Rect Offset ) ĊĠĠĠĠĠĠĠ Ġoffset Ġ= ĠMath . max ( offset , ĠBORDER _ WIDTH Ġ* Ġm Density ) ĊĠĠĠĠĠĠĠ Ġreturn Ġoffset Ġ* Ġ 1 . 5 f ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Paint Tools () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Sat Val Paint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠ Ġm Sat Val Tracker Paint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠ Ġm Hue Paint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠ Ġm Hue Tracker Paint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠ Ġm Border Paint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠ Ġm Sat Val Tracker Paint . setStyle ( Paint . Style . ST RO KE ) ĊĠĠĠĠĠĠĠ Ġm Sat Val Tracker Paint . set Stroke Width ( 2 f Ġ* Ġm Density ) ĊĠĠĠĠĠĠĠ Ġm Sat Val Tracker Paint . set Anti Alias ( true ) ĊĠĠĠĠĠĠĠ Ġm Hue Tracker Paint . setColor ( m Slider Tracker Color ) ĊĠĠĠĠĠĠĠ Ġm Hue Tracker Paint . setStyle ( Paint . Style . ST RO KE ) ĊĠĠĠĠĠĠĠ Ġm Hue Tracker Paint . set Stroke Width ( 2 f Ġ* Ġm Density ) ĊĠĠĠĠĠĠĠ Ġm Hue Tracker Paint . set Anti Alias ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwidth Mode Ġ= ĠMeasure Spec . get Mode ( width Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġheight Mode Ġ= ĠMeasure Spec . get Mode ( height Measure Spec ) ĊĠĠĠĠĠĠĠ Ġvar Ġwidth Allowed Ġ= ĠMeasure Spec . getSize ( width Measure Spec ) ĊĠĠĠĠĠĠĠ Ġvar Ġheight Allowed Ġ= ĠMeasure Spec . getSize ( height Measure Spec ) ĊĠĠĠĠĠĠĠ Ġwidth Allowed Ġ= Ġif Ġ( is Unspecified ( width Mode )) Ġm Preferred Width . toInt () Ġelse Ġwidth Allowed ĊĠĠĠĠĠĠĠ Ġheight Allowed Ġ= Ġif Ġ( is Unspecified ( height Mode )) Ġm Preferred Height . toInt () Ġelse Ġheight Allowed ĊĠĠĠĠĠĠĠ Ġvar Ġwidth Ġ= Ġwidth Allowed ĊĠĠĠĠĠĠĠ Ġvar Ġheight Ġ= Ġ( width Allowed Ġ- Ġm Panel Spacing Ġ- Ġm Hue Panel Width ). toInt () ĊĠĠĠĠĠĠĠ Ġ// å½ĵ æł¹æį® å®½åº¦ è®¡ç®Ĺ åĩº æĿ¥çļĦ é«ĺåº¦ å¤§äºİ åı¯ åħģè®¸ çļĦ æľĢå¤§ é«ĺåº¦ æĹ¶ ĠæĪĸ Ġå½ĵåīį æĺ¯ æ¨ ª å±ı ĊĠĠĠĠĠĠĠ Ġif Ġ( height Ġ> Ġheight Allowed Ġ|| Ġ" land scape " Ġ== Ġtag ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġheight Allowed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ( height Ġ+ Ġm Panel Spacing Ġ+ Ġm Hue Panel Width ). toInt () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Measured Dimension ( width , Ġheight ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Unspecified ( mode : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ!( mode Ġ== ĠMeasure Spec . EX ACT LY Ġ|| Ġmode Ġ== ĠMeasure Spec . AT _ MO ST ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Drawing Rect . width () Ġ<= Ġ 0 Ġ|| Ġm Drawing Rect . height () Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdraw Sat Val Panel ( canvas ) Ġ// ç»ĺ åĪ¶ SV éĢīæĭ© åĮºåŁŁ ĊĠĠĠĠĠĠĠ Ġdraw Hue Panel ( canvas ) Ġ// ç»ĺ åĪ¶ åı³ ä¾§ H éĢīæĭ© åĮºåŁŁ ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç»ĺ åĪ¶ S ãĢģ V éĢīæĭ© åĮºåŁŁ ï¼Ī çŁ© å½¢ ï¼ī ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcanvas Ġ çĶ» å¸ĥ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdraw Sat Val Panel ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// æıı è¾¹ ï¼Ī åħĪ çĶ» ä¸Ģä¸ª å¤§ çŁ© å½¢ , Ġ åĨį åľ¨ åĨħéĥ¨ çĶ» ä¸Ģä¸ª å°ı çŁ© å½¢ ï¼Į å°±åı¯ä»¥ æĺ¾ç¤º åĩº æıı è¾¹ çļĦ æķĪæŀľ ï¼ī ĊĠĠĠĠĠĠĠ Ġm Border Paint !!. color Ġ= Ġm BorderColor ĊĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Drawing Rect . left , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Drawing Rect . top , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Sat Val Rect !!. right Ġ+ ĠBORDER _ WIDTH , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Sat Val Rect . bottom Ġ+ ĠBORDER _ WIDTH , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Border Paint !! ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ç»ĦåĲĪ çĿĢ èī² åĻ¨ Ġ= Ġ æĺİ åº¦ çº¿ æĢ§ çĿĢ èī² åĻ¨ Ġ+ Ġ é¥ ± åĴĮ åº¦ çº¿ æĢ§ çĿĢ èī² åĻ¨ ĊĠĠĠĠĠĠĠ Ġval Ġm Shader Ġ= Ġgenerate SV Shader () ĊĠĠĠĠĠĠĠ Ġm Sat Val Paint !!. shader Ġ= Ġm Shader ĊĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( m Sat Val Rect !! , Ġm Sat Val Paint !! ) ĊĊĠĠĠĠĠĠĠ Ġ// åĪĿå§ĭåĮĸ éĢīæĭ© åĻ¨ çļĦ ä½įç½® ĊĠĠĠĠĠĠĠ Ġval Ġp : ĠPoint Ġ= Ġsat Val To Point ( m Sat , Ġm Val ) ĊĠĠĠĠĠĠĠ Ġ// ç»ĺ åĪ¶ æĺ¾ç¤º SV åĢ¼çļĦ éĢīæĭ© åĻ¨ ĊĠĠĠĠĠĠĠ Ġm Sat Val Tracker Paint . color Ġ= Ġ 0 xff 0 0 0 0 0 0 . toInt () ĊĠĠĠĠĠĠĠ Ġcanvas . draw Circle ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp . x . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp . y . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm SV Tracker Radius Ġ- Ġ 1 f Ġ* Ġm Density , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Sat Val Tracker Paint ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// ç»ĺ åĪ¶ å¤ĸ åľĨ ĊĠĠĠĠĠĠĠ Ġm Sat Val Tracker Paint . color Ġ= Ġ 0 xff dddd dd . toInt () ĊĠĠĠĠĠĠĠ Ġcanvas . draw Circle ( p . x . toFloat (), Ġp . y . toFloat (), Ġm SV Tracker Radius , Ġm Sat Val Tracker Paint ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĽå»º SV çĿĢ èī² åĻ¨ ( æĺİ åº¦ çº¿ æĢ§ çĿĢ èī² åĻ¨ Ġ+ Ġ é¥ ± åĴĮ åº¦ çº¿ æĢ§ çĿĢ èī² åĻ¨ ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ çĿĢ èī² åĻ¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgenerate SV Shader (): ĠCompose Shader Ġ{ ĊĠĠĠĠĠĠĠ Ġ// æĺİ åº¦ çº¿ æĢ§ çĿĢ èī² åĻ¨ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Val Shader Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Val Shader Ġ= ĠLinear Gradient ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Sat Val Rect . left , Ġm Sat Val Rect . top , Ġm Sat Val Rect . left , Ġm Sat Val Rect . bottom , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 xffffffff . toInt (), Ġ 0 xffffffff . toInt (), ĠTile Mode . CLAMP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// H SV è½¬ åĮĸ ä¸º RGB ĊĠĠĠĠĠĠĠ Ġval Ġrgb Ġ= ĠColor . H SV To Color ( float ArrayOf ( m Hue , Ġ 1 f , Ġ 1 f )) ĊĠĠĠĠĠĠĠ Ġ// é¥ ± åĴĮ çº¿ æĢ§ çĿĢ èī² åĻ¨ ĊĠĠĠĠĠĠĠ Ġval Ġsat Shader : ĠShader Ġ= ĠLinear Gradient ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Sat Val Rect . left , Ġm Sat Val Rect . top , Ġm Sat Val Rect . right , Ġm Sat Val Rect . top , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 xffffffff . toInt (), Ġrgb , ĠTile Mode . CLAMP ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// ç»ĦåĲĪ çĿĢ èī² åĻ¨ Ġ= Ġ æĺİ åº¦ çº¿ æĢ§ çĿĢ èī² åĻ¨ Ġ+ Ġ é¥ ± åĴĮ åº¦ çº¿ æĢ§ çĿĢ èī² åĻ¨ ĊĊĠĠĠĠĠĠĠ Ġreturn ĠCompose Shader ( m Val Shader !! , Ġsat Shader , ĠPort er D uff . Mode . MULTI PLY ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç»ĺ åĪ¶ åı³ ä¾§ H éĢīæĭ© åĮºåŁŁ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcanvas Ġ çĶ» å¸ĥ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdraw Hue Panel ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrect Ġ= Ġm Hue Rect !! ĊĠĠĠĠĠĠĠ Ġm Border Paint . color Ġ= Ġm BorderColor ĊĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrect . left Ġ- ĠBORDER _ WIDTH , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrect . top Ġ- ĠBORDER _ WIDTH , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrect . right Ġ+ ĠBORDER _ WIDTH , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrect . bottom Ġ+ ĠBORDER _ WIDTH , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Border Paint ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// åĪĿå§ĭåĮĸ H çº¿ æĢ§ çĿĢ èī² åĻ¨ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Hue Shader Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhue Ġ= ĠInt Array ( 3 6 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġhue . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhue [ count ] Ġ= ĠColor . H SV To Color ( float ArrayOf ( i . toFloat (), Ġ 1 f , Ġ 1 f )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi -- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Hue Shader Ġ= ĠLinear Gradient ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect . left , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect . top , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect . left , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect . bottom , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTile Mode . CLAMP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Hue Paint !!. shader Ġ= Ġm Hue Shader ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( rect , Ġm Hue Paint !! ) ĊĠĠĠĠĠĠĠ Ġval Ġhalf H Tracker Height Ġ= Ġm H Tracker Height Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġ// åĪĿå§ĭåĮĸ H éĢīæĭ© åĻ¨ éĢīæĭ© æĿ¡ ä½įç½® ĊĠĠĠĠĠĠĠ Ġval Ġp : ĠPoint Ġ= Ġhue To Point ( m Hue ) ĊĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĠRect F () ĊĠĠĠĠĠĠĠ Ġr . left Ġ= Ġrect . left Ġ- Ġm Rect Offset ĊĠĠĠĠĠĠĠ Ġr . right Ġ= Ġrect . right Ġ+ Ġm Rect Offset ĊĠĠĠĠĠĠĠ Ġr . top Ġ= Ġp . y Ġ- Ġhalf H Tracker Height ĊĠĠĠĠĠĠĠ Ġr . bottom Ġ= Ġp . y Ġ+ Ġhalf H Tracker Height ĊĊĠĠĠĠĠĠĠ Ġ// ç»ĺ åĪ¶ éĢīæĭ© æĿ¡ ĊĠĠĠĠĠĠĠ Ġcanvas . draw Round Rect ( r , Ġ 2 f , Ġ 2 f , Ġm Hue Tracker Paint ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhue To Point ( hue : ĠFloat ): ĠPoint Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrect Ġ= Ġm Hue Rect !! ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġrect . height () ĊĠĠĠĠĠĠĠ Ġval Ġp Ġ= ĠPoint () ĊĠĠĠĠĠĠĠ Ġp . y Ġ= Ġ( height Ġ- Ġhue Ġ* Ġheight Ġ/ Ġ 3 6 0 f Ġ+ Ġrect . top ). toInt () ĊĠĠĠĠĠĠĠ Ġp . x Ġ= Ġrect . left . toInt () ĊĠĠĠĠĠĠĠ Ġreturn Ġp ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsat Val To Point ( sat : ĠFloat , Ġval Float : ĠFloat ): ĠPoint Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġm Sat Val Rect !!. height () ĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġm Sat Val Rect . width () ĊĠĠĠĠĠĠĠ Ġval Ġp Ġ= ĠPoint () ĊĠĠĠĠĠĠĠ Ġp . x Ġ= Ġ( sat Ġ* Ġwidth Ġ+ Ġm Sat Val Rect . left ). toInt () ĊĠĠĠĠĠĠĠ Ġp . y Ġ= Ġ(( 1 f Ġ- Ġval Float ) Ġ* Ġheight Ġ+ Ġm Sat Val Rect . top ). toInt () ĊĠĠĠĠĠĠĠ Ġreturn Ġp ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġpoint ToS at Val ( x : ĠFloat , Ġy : ĠFloat ): ĠFloat Array Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġx Ġ= Ġx ĊĠĠĠĠĠĠĠ Ġvar Ġy Ġ= Ġy ĊĠĠĠĠĠĠĠ Ġval Ġrect Ġ= Ġm Sat Val Rect !! ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠFloat Array ( 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġrect . width () ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġrect . height () ĊĠĠĠĠĠĠĠ Ġx Ġ= Ġif Ġ( x Ġ< Ġrect . left ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 f ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( x Ġ> Ġrect . right ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ- Ġrect . left ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġy Ġ= Ġif Ġ( y Ġ< Ġrect . top ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 f ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( y Ġ> Ġrect . bottom ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ- Ġrect . top ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġresult [ 0 ] Ġ= Ġ 1 f Ġ/ Ġwidth Ġ* Ġx ĊĠĠĠĠĠĠĠ Ġresult [ 1 ] Ġ= Ġ 1 f Ġ- Ġ 1 f Ġ/ Ġheight Ġ* Ġy ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpoint To Hue ( y : ĠFloat ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġy Ġ= Ġy ĊĠĠĠĠĠĠĠ Ġval Ġrect Ġ= Ġm Hue Rect !! ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġrect . height () ĊĠĠĠĠĠĠĠ Ġy Ġ= Ġif Ġ( y Ġ< Ġrect . top ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 f ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( y Ġ> Ġrect . bottom ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ- Ġrect . top ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ 3 6 0 f Ġ- Ġy Ġ* Ġ 3 6 0 f Ġ/ Ġheight ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Track ball Event ( event : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġevent . x ĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġevent . y ĊĠĠĠĠĠĠĠ Ġvar Ġis Updated Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( event . action Ġ== ĠMotion Event . ACTION _ MOVE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( m Last Tou ched Panel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPAN EL . SAT _ VAL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsat : ĠFloat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġ` val `: ĠFloat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsat Ġ= Ġm Sat Ġ+ Ġx Ġ/ Ġ 5 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` val ` Ġ= Ġm Val Ġ- Ġy Ġ/ Ġ 5 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sat Ġ< Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsat Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( sat Ġ> Ġ 1 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsat Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(` val ` Ġ< Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` val ` Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(` val ` Ġ> Ġ 1 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` val ` Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Sat Ġ= Ġsat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Val Ġ= Ġ` val ` ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Updated Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPAN EL . H UE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġhue Ġ= Ġm Hue Ġ- Ġy Ġ* Ġ 1 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hue Ġ< Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhue Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( hue Ġ> Ġ 3 6 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhue Ġ= Ġ 3 6 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Hue Ġ= Ġhue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Updated Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( is Updated ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Listener ?. on Color Changed ( Color . H SV To Color ( float ArrayOf ( m Hue , Ġm Sat , Ġm Val ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Track ball Event ( event ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Touch Event ( event : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġis Updated Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġwhen Ġ( event . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Start Touch Point Ġ= ĠPoint ( event . x . toInt (), Ġevent . y . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Updated Ġ= Ġmove Track ers IfNeeded ( event ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ MOVE Ġ-> Ġis Updated Ġ= Ġmove Track ers IfNeeded ( event ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ UP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Start Touch Point Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Updated Ġ= Ġmove Track ers IfNeeded ( event ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( is Updated ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Listener ?. on Color Changed ( Color . H SV To Color ( float ArrayOf ( m Hue , Ġm Sat , Ġm Val ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Touch Event ( event ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmove Track ers IfNeeded ( event : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Start Touch Point Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġupdate Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġstart X Ġ= Ġm Start Touch Point !!. x ĊĠĠĠĠĠĠĠ Ġval Ġstart Y Ġ= Ġm Start Touch Point !!. y ĊĠĠĠĠĠĠĠ Ġif Ġ( m Hue Rect !!. contains ( start X . toFloat (), Ġstart Y . toFloat ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Last Tou ched Panel Ġ= ĠPAN EL . H UE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Hue Ġ= Ġpoint To Hue ( event . y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( m Sat Val Rect !!. contains ( start X . toFloat (), Ġstart Y . toFloat ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Last Tou ched Panel Ġ= ĠPAN EL . SAT _ VAL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġpoint ToS at Val ( event . x , Ġevent . y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Sat Ġ= Ġresult [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Val Ġ= Ġresult [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġupdate ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Size Changed ( w : ĠInt , Ġh : ĠInt , Ġold w : ĠInt , Ġold h : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Size Changed ( w , Ġh , Ġold w , Ġold h ) ĊĠĠĠĠĠĠĠ Ġm Drawing Rect Ġ= ĠRect F () ĊĠĠĠĠĠĠĠ Ġm Drawing Rect . left Ġ= Ġm Drawing Offset Ġ+ Ġpadding Left ĊĠĠĠĠĠĠĠ Ġm Drawing Rect . right Ġ= Ġw Ġ- Ġm Drawing Offset Ġ- Ġpadding Right ĊĠĠĠĠĠĠĠ Ġm Drawing Rect . top Ġ= Ġm Drawing Offset Ġ+ Ġpadding Top ĊĠĠĠĠĠĠĠ Ġm Drawing Rect . bottom Ġ= Ġh Ġ- Ġm Drawing Offset Ġ- Ġpadding Bottom ĊĠĠĠĠĠĠĠ Ġ// å½ĵ DatePicker View çļĦ éķ¿ å®½ æĶ¹åıĺ æĹ¶ ï¼Į éĩįæĸ° è®¡ç®Ĺ SV ãĢģ H çŁ© å½¢ å¤§å°ı ĊĠĠĠĠĠĠĠ ĠsetUp Sat Val Rect () ĊĠĠĠĠĠĠĠ ĠsetUp Hue Rect () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp Sat Val Rect () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġd Rect Ġ= Ġm Drawing Rect ĊĠĠĠĠĠĠĠ Ġval Ġpanel Side : ĠFloat Ġ= Ġd Rect . height () Ġ- ĠBORDER _ WIDTH Ġ* Ġ 2 ĊĠĠĠĠĠĠĠ Ġval Ġleft : ĠFloat Ġ= Ġd Rect . left Ġ+ ĠBORDER _ WIDTH ĊĠĠĠĠĠĠĠ Ġval Ġtop : ĠFloat Ġ= Ġd Rect . top Ġ+ ĠBORDER _ WIDTH ĊĠĠĠĠĠĠĠ Ġval Ġbottom Ġ= Ġtop Ġ+ Ġpanel Side ĊĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġleft Ġ+ Ġpanel Side ĊĠĠĠĠĠĠĠ Ġm Sat Val Rect Ġ= ĠRect F ( left , Ġtop , Ġright , Ġbottom ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp Hue Rect () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġd Rect Ġ= Ġm Drawing Rect ĊĠĠĠĠĠĠĠ Ġval Ġleft : ĠFloat Ġ= Ġd Rect . right Ġ- Ġm Hue Panel Width Ġ+ ĠBORDER _ WIDTH ĊĠĠĠĠĠĠĠ Ġval Ġtop : ĠFloat Ġ= Ġd Rect . top Ġ+ ĠBORDER _ WIDTH ĊĠĠĠĠĠĠĠ Ġval Ġbottom : ĠFloat Ġ= Ġd Rect . bottom Ġ- ĠBORDER _ WIDTH ĊĠĠĠĠĠĠĠ Ġval Ġright : ĠFloat Ġ= Ġd Rect . right Ġ- ĠBORDER _ WIDTH ĊĠĠĠĠĠĠĠ Ġm Hue Rect Ġ= ĠRect F ( left , Ġtop , Ġright , Ġbottom ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® é¢ľèī² æĶ¹åıĺ çĽĳåĲ¬ åĻ¨ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener Ġ é¢ľèī² æĶ¹åıĺ çĽĳåĲ¬ åĻ¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset On Color Changed Listener ( listener : ĠOn Color Changed Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ å½ĵåīį é¢ľèī² ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġå½ĵåīį é¢ľèī² ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Color (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠColor . H SV To Color ( float ArrayOf ( m Hue , Ġm Sat , Ġm Val )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® éĢīæĭ© çļĦ é¢ľèī² ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcolor Ġ è¢« éĢīæĭ© çļĦ é¢ľèī² ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Color ( color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Color ( color , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® è¢« éĢīæĭ© çļĦ é¢ľèī² ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcolor ĠĠĠ Ġ è¢« éĢīæĭ© çļĦ é¢ľèī² ĊĠĠĠĠ Ġ* Ġ@ param Ġcallback Ġæĺ¯åĲ¦ è§¦åıĳ On Color Changed Listener ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Color ( color : ĠInt , Ġcallback : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġh sv Ġ= ĠFloat Array ( 3 ) ĊĠĠĠĠĠĠĠ ĠColor . color To H SV ( color , Ġh sv ) ĊĠĠĠĠĠĠĠ Ġm Hue Ġ= Ġh sv [ 0 ] ĊĠĠĠĠĠĠĠ Ġm Sat Ġ= Ġh sv [ 1 ] ĊĠĠĠĠĠĠĠ Ġm Val Ġ= Ġh sv [ 2 ] ĊĠĠĠĠĠĠĠ Ġif Ġ( callback Ġ&& Ġm Listener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Listener !!. on Color Changed ( Color . H SV To Color ( float ArrayOf ( m Hue , Ġm Sat , Ġm Val ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊ Ċ }