/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 4 Ġå¤§ åīį èī¯ ä»ĭ Ġ( OH MA E ĠR y os uke ) Ċ Ġ* Ċ Ġ* ĠThis Ġsoftware Ġis Ġreleased Ġunder Ġthe ĠMIT ĠLicense . Ċ Ġ* Ġhttp :// opensource . org / licenses / MIT Ċ Ġ*/ Ċ Ċ package Ġnet . mm 2 d . w cc Ċ Ċ import Ġnet . mm 2 d . color . Color Utils Ċ import Ġnet . mm 2 d . color . to Ratio Ċ import Ġjava . awt . Color Ċ import Ġjava . awt . Dimension Ċ import Ġjava . awt . Graphics Ċ import Ġjava . awt . Graphics 2 D Ċ import Ġjava . awt . event . Mouse Adapter Ċ import Ġjava . awt . event . MouseEvent Ċ import Ġjava . awt . image . Buffered Image Ċ import Ġjavax . swing . JPanel Ċ Ċ /** Ċ Ġ* Ġ è¼ Ŀ åº¦ å½ © åº¦ ãĤĴ åĨ Ĩ æŁ ± ãĥ¢ ãĥĩ ãĥ« æĸŃ éĿ¢ ãģ§ æĵįä½ľ ãģĻãĤĭ UI Ċ Ġ*/ Ċ class ĠS v Section Ġ: ĠJPanel () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġimage Ġ= ĠBufferedImage ( RANGE Ġ+ Ġ 1 , ĠR ANGE Ġ+ Ġ 1 , ĠBufferedImage . TYPE _ 4 BYTE _ AB GR ) ĊĠĠĠ Ġprivate Ġval ĠmarginTop : ĠInt Ġ= Ġ( WIDTH Ġ- ĠR ANGE ) Ġ/ Ġ 2 ĊĠĠĠ Ġprivate Ġval ĠmarginLeft : ĠInt Ġ= Ġ( HEIGHT Ġ- ĠR ANGE ) Ġ/ Ġ 2 ĊĠĠĠ Ġprivate Ġvar Ġhue : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġsat uration : ĠFloat Ġ= Ġ 1 f ĊĠĠĠ Ġprivate Ġvar Ġvalue : ĠFloat Ġ= Ġ 1 f ĊĠĠĠ Ġprivate Ġvar Ġmax Color : ĠColor Ġ= ĠColor . RED ĊĠĠĠ Ġvar Ġon Sv ChangeListener : Ġ(( hue : ĠFloat , Ġsat uration : ĠFloat , Ġvalue : ĠFloat ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ãĤ¤ãĥ³ ãĤ¹ãĤ¿ ãĥ³ãĤ¹ ä½ľæĪĲ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( y Ġin Ġ 0 .. RANGE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( x Ġin Ġ 0 .. RANGE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġx . toFloat () Ġ/ ĠR ANGE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġ( RANGE Ġ- Ġy ). toFloat () Ġ/ ĠR ANGE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage . set RGB ( x , Ġy , ĠColor Utils . sv To Mask ( s , Ġv )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpreferred Size Ġ= ĠDimension ( WIDTH , ĠHEIGHT ) ĊĠĠĠĠĠĠĠ Ġadd Mouse Listener ( object Ġ: ĠMouse Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Pressed ( e : ĠMouseEvent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselect Point ( e . x , Ġe . y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġadd Mouse Motion Listener ( object Ġ: ĠMouse Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Drag ged ( e : ĠMouseEvent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselect Point ( e . x , Ġe . y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġãĥ ŀ ãĤ¦ ãĤ¹ æĵįä½ľ ãģ«ãĤĪ ãĤĭ åĢ¤ ãģ® éģ¸æĬŀ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġx ĠX åº§ æ¨Ļ ĊĠĠĠĠ Ġ* Ġ@ param Ġy ĠY åº§ æ¨Ļ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġselect Point ( x : ĠInt , Ġy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġ( x Ġ- ĠmarginLeft ). coerce In ( 0 , Ġ 2 5 5 ). to Ratio () ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġ( RANGE Ġ- Ġ( y Ġ- ĠmarginTop )). coerce In ( 0 , Ġ 2 5 5 ). to Ratio () ĊĠĠĠĠĠĠĠ Ġset H sv ( hue , Ġs , Ġv , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠH SV ãģ® åĢ¤ ãĤĴè¨Ńå®ļ ãģĻãĤĭ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġh ĠH ĊĠĠĠĠ Ġ* Ġ@ param Ġs ĠS ĊĠĠĠĠ Ġ* Ġ@ param Ġv ĠV ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset H sv ( h : ĠFloat , Ġs : ĠFloat , Ġv : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset H sv ( h , Ġs , Ġv , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠH SV ãģ® åĢ¤ ãĤĴè¨Ńå®ļ ãģĻãĤĭ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġh ĠH ĊĠĠĠĠ Ġ* Ġ@ param Ġs ĠS ĊĠĠĠĠ Ġ* Ġ@ param Ġv ĠV ĊĠĠĠĠ Ġ* Ġ@ param Ġnotify Ġ ãĥª ãĤ¹ ãĥĬ ãĥ¼ éĢļçŁ¥ ãģĻãĤĭ åł´åĲĪ true ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset H sv ( h : ĠFloat , Ġs : ĠFloat , Ġv : ĠFloat , Ġnotify : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( hue Ġ!= Ġh ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhue Ġ= Ġh ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Color Ġ= ĠColor ( Color Utils . h sv To Color ( hue , Ġ 1 f , Ġ 1 f )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsat uration Ġ= Ġs ĊĠĠĠĠĠĠĠ Ġvalue Ġ= Ġv ĊĠĠĠĠĠĠĠ Ġif Ġ( notify ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Sv ChangeListener ?. invoke ( h , Ġs , Ġv ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrep aint () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġpaint ( g : ĠGraphics ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( g Ġ! is ĠGraphics 2 D ) Ġreturn ĊĠĠĠĠĠĠĠ Ġg . background Ġ= Ġbackground ĊĠĠĠĠĠĠĠ Ġg . clear Rect ( 0 , Ġ 0 , Ġwidth , Ġheight ) ĊĠĠĠĠĠĠĠ Ġg . color Ġ= Ġmax Color ĊĠĠĠĠĠĠĠ Ġg . fillRect ( margin Left , ĠmarginTop , Ġimage . width , Ġimage . height ) ĊĠĠĠĠĠĠĠ Ġg . drawImage ( image , ĠmarginLeft , ĠmarginTop , Ġthis ) ĊĠĠĠĠĠĠĠ Ġ// Ġ éģ¸æĬŀ ãģĹãģ¦ãģĦãĤĭ çĤ¹ ãĤĴ æıı çĶ» ĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġ( sat uration Ġ* ĠR ANGE ). toInt () Ġ+ ĠmarginLeft ĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġ( RANGE Ġ- Ġvalue Ġ* ĠR ANGE ). toInt () Ġ+ ĠmarginTop ĊĠĠĠĠĠĠĠ Ġg . set XOR Mode ( Color . WHITE ) ĊĠĠĠĠĠĠĠ Ġg . draw Rect ( x Ġ- Ġ 1 , Ġy Ġ- Ġ 1 , Ġ 2 , Ġ 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠR ANGE Ġ= Ġ 2 5 5 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠWIDTH Ġ= Ġ 2 6 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠHEIGHT Ġ= Ġ 2 6 0 ĊĠĠĠ Ġ} Ċ } Ċ