package Ġcc . xia ob aic z . sl iding lock Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics .* Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġkotlin . jvm . Jvm Over loads Ċ import Ġcc . xia ob aic z . sl iding lock . Sl iding Lock View . On Sl iding Listener Ċ import Ġcc . xia ob aic z . sl iding lock . Sl iding Lock View . On Sl iding Complete Ċ import Ġjava . lang . StringBuilder Ċ import Ġjava . util . ArrayList Ċ import Ġjava . util . HashSet Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġx ia ob aic z Ġon Ġ 2 0 1 8 / 2 / 1 4 . Ċ Ġ*/ Ċ class ĠSl iding Lock View Ġ@ Jvm Over loads Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style Attr : ĠInt Ġ= Ġ 0 ) Ġ: ĠView ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" Sl iding Lock " ĊĊĠĠĠ Ġ// é»ĺè®¤ è¡Į æķ° ĊĠĠĠ Ġprivate Ġval ĠDEF _ ROW Ġ= Ġ 3 ĊĊĠĠĠ Ġ// é»ĺè®¤ åľ Ī åľ Ī åįĬ å¾Ħ ĊĠĠĠ Ġprivate Ġval ĠDEF _ R Ġ= Ġ 3 2 f ĊĊĠĠĠ Ġ// é»ĺè®¤ çĶ» ç¬Ķ å¤§å°ı ĊĠĠĠ Ġprivate Ġval ĠDEF _ WIDTH Ġ= Ġ 1 0 f ĊĊĠĠĠ Ġ// é»ĺè®¤ çº¿ æĿ¡ é¢ľèī² ĊĠĠĠ Ġprivate Ġval ĠDEF _ LINE _ COLOR Ġ= Ġ- 0 x 1 ĊĊĠĠĠ Ġ// é»ĺè®¤ åľ Ī åľ Ī é¢ľèī² ĊĠĠĠ Ġprivate Ġval ĠDEF _ POINT _ COLOR Ġ= Ġ- 0 x 1 ĊĠĠĠ Ġprivate Ġvar Ġm Width : ĠFloat ĊĠĠĠ Ġprivate Ġvar Ġm Line Color : ĠInt ĊĠĠĠ Ġprivate Ġvar Ġm Point Color : ĠInt ĊĊĠĠĠ Ġ// æİ§ä»¶ å¤§å°ı ĊĠĠĠ Ġprivate Ġvar Ġm Size Ġ= Ġ 0 ĊĊĠĠĠ Ġ// çĶ» ç¬Ķ ĊĠĠĠ Ġprivate Ġval Ġm Paint : ĠPaint ĊĊĠĠĠ Ġ// è¡Į æķ° ĊĠĠĠ Ġprivate Ġvar Ġm Row : ĠInt ĊĊĠĠĠ Ġ// çĤ¹ å¤§å°ı ĊĠĠĠ Ġprivate Ġval Ġm Rect F Ġ= ĠRect F () ĊĊĠĠĠ Ġ// åľ Ī åľ Ī èĥĮæĻ¯ ĊĠĠĠ Ġprivate Ġvar Ġm BG : ĠBitmap ? Ġ= Ġnull ĊĊĠĠĠ Ġ// æīĢæľī éĢī ä¸ŃçļĦ çĤ¹ ĊĠĠĠ Ġprivate Ġval Ġm Items : ĠMutable List < Item ?> Ġ= ĠArrayList () ĊĊĠĠĠ Ġ// çĤ¹ éĽĨåĲĪ ĊĠĠĠ Ġprivate Ġval Ġm Points : ĠMutable Set < Item > Ġ= ĠHashSet () ĊĊĠĠĠ Ġ// çĤ¹ è·¯å¾Ħ ĊĠĠĠ Ġprivate Ġval Ġm Line Path Ġ= ĠPath () ĊĊĠĠĠ Ġ// è·Ł éļı æīĭ æĮĩ çļĦ çĤ¹ ĊĠĠĠ Ġprivate Ġval Ġm Down Ġ= ĠItem () ĊĊĠĠĠ Ġ// æĺ¯åĲ¦ è§¦ æĳ ¸ ĊĠĠĠ Ġprivate Ġvar Ġis Down Ġ= Ġfalse ĊĊĠĠĠ Ġ// åľ Ī åľ Ī åİŁ çĤ¹ åĿĲæłĩ ĊĠĠĠ Ġvar Ġm Coordinate Ġ= Ġ 0 f ĊĊĠĠĠ Ġ// åľ Ī åľ Ī åįĬ å¾Ħ ĊĠĠĠ Ġvar Ġm R : ĠFloat ĊĊĠĠĠ Ġ// éĹ´ éļĶ ĊĠĠĠ Ġvar Ġm Interval Ġ= Ġ 0 f ĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmode _ w Ġ= ĠMeasure Spec . get Mode ( width Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġmode _ h Ġ= ĠMeasure Spec . get Mode ( height Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġsize _ w Ġ= ĠMeasure Spec . getSize ( width Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġsize _ h Ġ= ĠMeasure Spec . getSize ( height Measure Spec ) ĊĠĠĠĠĠĠĠ Ġm Size Ġ= Ġif Ġ( mode _ w Ġ== ĠMeasure Spec . AT _ MO ST Ġ&& Ġmode _ h Ġ== ĠMeasure Spec . AT _ MO ST ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// èĩª éĢĤ åºĶ Ġ 4 8 0 px ĊĠĠĠĠĠĠĠĠĠĠĠĠ 4 8 0 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( mode _ w Ġ== ĠMeasure Spec . AT _ MO ST Ġ&& Ġmode _ h Ġ== ĠMeasure Spec . EX ACT LY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æľĢå¤§ é«ĺåº¦ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize _ h ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( mode _ w Ġ== ĠMeasure Spec . EX ACT LY Ġ&& Ġmode _ h Ġ== ĠMeasure Spec . AT _ MO ST ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æľĢå¤§ å®½åº¦ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize _ w ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// åıĸ æľĢå°ı éķ¿åº¦ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( size _ w Ġ< Ġsize _ h ) Ġsize _ w Ġelse Ġsize _ h ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Measured Dimension ( m Size , Ġm Size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĊĠĠĠĠĠĠĠ Ġ// å¹³ åĪĨ æİ§ä»¶ éĹ´ éļĶ ĊĠĠĠĠĠĠĠ Ġm Interval Ġ= Ġ 1 . 0 f Ġ* Ġm Size Ġ/ Ġm Row ĊĠĠĠĠĠĠĠ Ġ// ç¬¬ä¸Ģä¸ª çĤ¹ åĿĲæłĩ ĊĠĠĠĠĠĠĠ Ġm Coordinate Ġ= Ġm Interval Ġ/ Ġ 2 f ĊĠĠĠĠĠĠĠ Ġif Ġ( is Invalidate ) Ġm Items . clear () ĊĠĠĠĠĠĠĠ Ġdraw Line ( canvas ) ĊĠĠĠĠĠĠĠ Ġif Ġ( m BG Ġ== Ġnull Ġ|| Ġis Invalidate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç»ĺ åĪ¶ èĥĮæĻ¯ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Invalidate Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm BG Ġ= ĠBitmap . create Bitmap ( m Size , Ġm Size , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw BG ( m BG ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( m BG !! , Ġ 0 f , Ġ 0 f , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġis Invalidate Ġ= Ġfalse ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç»ĺ åĪ¶ çº¿ æĿ¡ ĊĠĠĠĠ Ġ* Ġ@ param Ġcanvas Ġ çĶ» æĿ¿ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdraw Line ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Paint . style Ġ= ĠPaint . Style . ST RO KE ĊĊĠĠĠĠĠĠĠ Ġ// éĩį ç½® çĤ¹ è·¯å¾Ħ ĊĠĠĠĠĠĠĠ Ġm Line Path . reset () ĊĠĠĠĠĠĠĠ Ġ// ä¸ĭ æłĩ ĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġ// è·¯å¾Ħ ĊĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġm Items ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index ++ Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Line Path . moveTo ( item !!. x , Ġitem . y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Line Path . lineTo ( item !!. x , Ġitem . y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( is Down Ġ&& Ġm Items . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æĺ¯åĲ¦ è¿ŀæİ¥ æīĭ æĮĩ è§¦ æĳ ¸ çĤ¹ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Line Path . lineTo ( m Down . x , Ġm Down . y ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ç»ĺ åĪ¶ è½ ¨ è¿ ¹ ĊĠĠĠĠĠĠĠ Ġcanvas . draw Path ( m Line Path , Ġm Paint ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç»ĺ åĪ¶ èĥĮæĻ¯ ĊĠĠĠĠ Ġ* Ġ@ param Ġbg Ġ åĽ¾çīĩ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdraw BG ( bg : ĠBitmap ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Paint . style Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠ Ġm Paint . color Ġ= Ġm Point Color ĊĠĠĠĠĠĠĠ Ġval Ġtmp Ġ= ĠCanvas ( bg !! ) ĊĠĠĠĠĠĠĠ Ġm Points . clear () ĊĠĠĠĠĠĠĠ Ġ// æīĢæľī åľ Ī åľ Ī ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġm Row ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 Ġuntil Ġm Row ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= ĠItem ( j Ġ* Ġm Interval Ġ+ Ġm Coordinate , Ġi Ġ* Ġm Interval Ġ+ Ġm Coordinate ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Rect F [ item . x Ġ- Ġm R , Ġitem . y Ġ- Ġm R , Ġitem . x Ġ+ Ġm R ] Ġ= Ġitem . y Ġ+ Ġm R ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Points . add ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp . draw O val ( m Rect F , Ġm Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Touch Event ( event : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Touch Event ( event ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispatch Touch Event ( event : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . dispatch Touch Event ( event ) ĊĠĠĠĠĠĠĠ Ġif Ġ( event . action Index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// å¤ĦçĲĨ ç¬¬ä¸Ģä¸ª è§¦ æĳ ¸ çĤ¹ äºĭä»¶ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġevent . x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġevent . y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġitem : ĠItem ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdown Ġ= ĠItem ( x , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( tmp Ġin Ġm Points ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tmp . exist ( down , ĠRect F ( 0 f , Ġ 0 f , Ġm R Ġ* Ġ 4 , Ġm R Ġ* Ġ 4 ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// çĤ¹ åŃĺåľ¨ åĪĻ èİ·åıĸ è¯¥ çĤ¹ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġ= Ġtmp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( event . action Mask ed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// è§¦ æĳ ¸ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Paint . color Ġ= Ġm Line Color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Down Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Items . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Ġ!= Ġnull Ġ&& Ġ! m Items . contains ( item )) Ġ// çĤ¹ åŃĺåľ¨ ä¸Ķ æ²¡æľī éĢī ä¸Ń åĪĻ éĢī ä¸Ń è¯¥ çĤ¹ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Items . add ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ MOVE Ġ-> Ġif Ġ( item Ġ!= Ġnull Ġ&& Ġ! m Items . contains ( item )) Ġm Items . add ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ UP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç¦» å¼Ģ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Down Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç»ĵæŀľ å¤ĦçĲĨ äºĭä»¶ , å¯Ĩçłģ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems Ġ= ĠInt Array ( m Items . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( tmp Ġin Ġm Items ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġ(( tmp !!. x Ġ- Ġm Coordinate ) Ġ/ Ġm Interval ). toInt () Ġshl Ġ 1 6 Ġor Ġ(( tmp . y Ġ- Ġm Coordinate ) Ġ/ Ġm Interval ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems [ index ++] Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m On Sl iding Listener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm On Sl iding Listener !!. on Sl iding ( sb . toString (), Ġm Items . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m On Sl iding Complete Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm On Sl iding Complete !!. onComplete ( items ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®°å½ķ å½ĵåīį è§¦ æĳ ¸ ä½įç½® ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Down . x Ġ= Ġx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Down . y Ġ= Ġy ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// éĢļçŁ¥ åĪ·æĸ° ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġm On Sl iding Listener : ĠOn Sl iding Listener ? Ġ= Ġnull ĊĠĠĠ Ġfun Ġset On Sl iding Listener ( listener : ĠOn Sl iding Listener ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġm On Sl iding Listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġm On Sl iding Complete : ĠOn Sl iding Complete ? Ġ= Ġnull ĊĠĠĠ Ġfun Ġset On Sl iding Listener ( listener : ĠOn Sl iding Complete ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġm On Sl iding Complete Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Line Color ( color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Paint . color Ġ= Ġcolor ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Def Line Color ( color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Line Color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġis Invalidate Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Def Point Color ( color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm BG !!. recycle () ĊĠĠĠĠĠĠĠ Ġm BG Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġm Point Color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġis Invalidate Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Def LineWidth ( width : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Width Ġ= Ġwidth . toFloat () ĊĠĠĠĠĠĠĠ Ġm Paint . stroke Width Ġ= Ġm Width ĊĠĠĠĠĠĠĠ Ġis Invalidate Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Row ( row : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Row Ġ= Ġif Ġ( row Ġ<= ĠDEF _ ROW ) ĠDEF _ ROW Ġelse Ġif Ġ( row Ġ>= Ġ 1 6 ) Ġ 1 6 Ġelse Ġrow ĊĠĠĠĠĠĠĠ Ġis Invalidate Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset R ( r : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm R Ġ= Ġr . toFloat () ĊĠĠĠĠĠĠĠ Ġis Invalidate Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Deprecated ("") ĊĠĠĠ Ġinterface ĠOn Sl iding Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġæ » ĳ åĬ¨ ç»ĵæŀľ è¿ĶåĽŀ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġpassword Ġ å¯Ĩçłģ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Deprecated ("") ĊĠĠĠĠĠĠĠ Ġfun Ġon Sl iding ( password : ĠString ?, Ġlen : ĠInt ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Sl iding Complete Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġæ » ĳ åĬ¨ ç»ĵæŀľ è¿ĶåĽŀ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġitems Ġ å¯Ĩçłģ åĿĲæłĩ ï¼Į é«ĺ 1 6 ä½į X ï¼Į ä½İ 1 6 ä½į Y ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun ĠonComplete ( items : ĠInt Array ?) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġclass ĠItem ( var Ġid : ĠInt , Ġvar Ġx : ĠFloat , Ġvar Ġy : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠĠĠĠĠ Ġconstructor ( x : ĠFloat Ġ= Ġ 0 f , Ġy : ĠFloat Ġ= Ġ 0 f ) Ġ: Ġthis ( 0 , Ġx , Ġy ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠåĪ¤æĸŃ çĤ¹ item æĺ¯åĲ¦ åŃĺåľ¨ å½ĵåīį çĤ¹ çļĦ rect èĮĥåĽ´ åĨħ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġitem Ġ çĤ¹ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġrect Ġ èĮĥåĽ´ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġæĺ¯åĲ¦ åŃĺåľ¨ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġexist ( item : ĠItem , Ġrect : ĠRect F ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl Ġ= Ġx Ġ- Ġrect . width () Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġx Ġ+ Ġrect . width () Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt Ġ= Ġy Ġ- Ġrect . height () Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġy Ġ+ Ġrect . height () Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( item . x Ġ> Ġl Ġ&& Ġitem . x Ġ< Ġr Ġ&& Ġitem . y Ġ> Ġt Ġ&& Ġitem . y Ġ< Ġb ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġequals ( o : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġo ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( o Ġ== Ġnull Ġ|| Ġjava Class Ġ!= Ġo . java Class ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġo Ġas ĠItem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( java . lang . Float . compare ( item . x , Ġx ) Ġ!= Ġ 0 ) Ġfalse Ġelse Ġjava . lang . Float . compare ( item . y , Ġy ) Ġ== Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġif Ġ( x Ġ!= Ġ+ 0 . 0 f ) Ġjava . lang . Float . float ToInt Bits ( x ) Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġif Ġ( y Ġ!= Ġ+ 0 . 0 f ) Ġjava . lang . Float . float ToInt Bits ( y ) Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" Item {" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x =" Ġ+ Ġx Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ", Ġy =" Ġ+ Ġy Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' }' ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtyped Array Ġ= Ġcontext . obtain Styled Attributes ( attrs , ĠR . style able . Sl iding Lock View ) ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġtyped Array . index Count ĊĠĠĠĠĠĠĠ Ġm Row Ġ= ĠDEF _ ROW ĊĠĠĠĠĠĠĠ Ġm R Ġ= ĠDEF _ R ĊĠĠĠĠĠĠĠ Ġm Width Ġ= ĠDEF _ WIDTH ĊĠĠĠĠĠĠĠ Ġm Line Color Ġ= ĠDEF _ LINE _ COLOR ĊĠĠĠĠĠĠĠ Ġm Point Color Ġ= ĠDEF _ POINT _ COLOR ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġtyped Array . getIndex ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== ĠR . style able . Sl iding Lock View _ slv _ row ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Row Ġ= Ġtyped Array . getInteger ( index , ĠDEF _ ROW ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Row Ġ= Ġif Ġ( m Row Ġ<= ĠDEF _ ROW ) ĠDEF _ ROW Ġelse Ġif Ġ( m Row Ġ>= Ġ 1 6 ) Ġ 1 6 Ġelse Ġm Row ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( index Ġ== ĠR . style able . Sl iding Lock View _ slv _ radius ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm R Ġ= Ġtyped Array . get Dimension ( index , ĠDEF _ R ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( index Ġ== ĠR . style able . Sl iding Lock View _ slv _ line _ width ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Width Ġ= Ġtyped Array . get Dimension ( index , ĠDEF _ WIDTH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( index Ġ== ĠR . style able . Sl iding Lock View _ slv _ line _ color ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Line Color Ġ= Ġtyped Array . getColor ( index , ĠDEF _ LINE _ COLOR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( index Ġ== ĠR . style able . Sl iding Lock View _ slv _ point _ color ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Point Color Ġ= Ġtyped Array . getColor ( index , ĠDEF _ POINT _ COLOR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtyped Array . recycle () ĊĠĠĠĠĠĠĠ Ġm Paint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠ Ġm Paint . stroke Width Ġ= Ġm Width ĊĠĠĠĠĠĠĠ Ġm Paint . is Anti Alias Ġ= Ġtrue ĊĠĠĠ Ġ} Ċ }