package Ġcom . sup . dev . java . tools Ċ Ċ object ĠTools Color Ġ{ ĊĊĠĠĠ Ġfun Ġalpha ( color : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcolor . ush r ( 2 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġred ( color : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcolor Ġshr Ġ 1 6 Ġand Ġ 0 xFF ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgreen ( color : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcolor Ġshr Ġ 8 Ġand Ġ 0 xFF ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġblue ( color : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcolor Ġand Ġ 0 xFF ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrgb ( red : ĠInt , Ġgreen : ĠInt , Ġblue : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 xFF Ġshl Ġ 2 4 Ġor Ġ( red Ġshl Ġ 1 6 ) Ġor Ġ( green Ġshl Ġ 8 ) Ġor Ġblue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġarg b ( alpha : ĠInt , Ġred : ĠInt , Ġgreen : ĠInt , Ġblue : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġalpha Ġshl Ġ 2 4 Ġor Ġ( red Ġshl Ġ 1 6 ) Ġor Ġ( green Ġshl Ġ 8 ) Ġor Ġblue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Alpha ( alpha : ĠInt , Ġcolor : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġalpha S Ġ= Ġalpha ĊĠĠĠĠĠĠĠ Ġif Ġ( alpha S Ġ< Ġ 0 ) Ġalpha S Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġif Ġ( alpha S Ġ> Ġ 2 5 5 ) Ġalpha S Ġ= Ġ 2 5 5 ĊĠĠĠĠĠĠĠ Ġreturn Ġarg b ( alpha S , Ġred ( color ), Ġgreen ( color ), Ġblue ( color )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd ( color 1 : ĠInt , Ġcolor 2 : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġa 1 Ġ= Ġ 2 5 5 f Ġ/ Ġalpha ( color 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġa 2 Ġ= Ġ 2 5 5 f Ġ/ Ġalpha ( color 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalpha ( color 1 ) Ġ== Ġ 0 Ġ-> Ġalpha ( color 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalpha ( color 2 ) Ġ== Ġ 0 Ġ-> Ġalpha ( color 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalpha ( color 1 ) Ġ!= Ġ 0 Ġ&& Ġalpha ( color 2 ) Ġ!= Ġ 0 Ġ&& Ġalpha ( color 1 ) Ġ!= Ġ 2 5 5 Ġ&& Ġalpha ( color 2 ) Ġ!= Ġ 2 5 5 Ġ-> Ġ( alpha ( color 1 ) Ġ+ Ġalpha ( color 2 )) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 2 5 5 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġr 1 Ġ= Ġred ( color 1 ) Ġ/ Ġa 1 ĊĠĠĠĠĠĠĠ Ġval Ġr 2 Ġ= Ġred ( color 2 ) Ġ/ Ġa 2 ĊĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġif Ġ( r 1 Ġ+ Ġr 2 Ġ< Ġ 2 5 5 ) Ġr 1 Ġ+ Ġr 2 Ġelse Ġif Ġ( r 1 Ġ- Ġr 2 Ġ< Ġ 0 ) Ġr 2 Ġ- Ġr 1 Ġelse Ġr 1 Ġ- Ġr 2 ĊĊĠĠĠĠĠĠĠ Ġval Ġg 1 Ġ= Ġgreen ( color 1 ) Ġ/ Ġa 1 ĊĠĠĠĠĠĠĠ Ġval Ġg 2 Ġ= Ġgreen ( color 2 ) Ġ/ Ġa 2 ĊĠĠĠĠĠĠĠ Ġval Ġg Ġ= Ġif Ġ( g 1 Ġ+ Ġg 2 Ġ< Ġ 2 5 5 ) Ġg 1 Ġ+ Ġg 2 Ġelse Ġif Ġ( g 1 Ġ- Ġg 2 Ġ< Ġ 0 ) Ġg 2 Ġ- Ġg 1 Ġelse Ġg 1 Ġ- Ġg 2 ĊĊĠĠĠĠĠĠĠ Ġval Ġb 1 Ġ= Ġblue ( color 1 ) Ġ/ Ġa 1 ĊĠĠĠĠĠĠĠ Ġval Ġb 2 Ġ= Ġblue ( color 2 ) Ġ/ Ġa 2 ĊĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġif Ġ( b 1 Ġ+ Ġb 2 Ġ< Ġ 2 5 5 ) Ġb 1 Ġ+ Ġb 2 Ġelse Ġif Ġ( b 1 Ġ- Ġb 2 Ġ< Ġ 0 ) Ġb 2 Ġ- Ġb 1 Ġelse Ġb 1 Ġ- Ġb 2 ĊĊĠĠĠĠĠĠĠ Ġreturn Ġarg b ( a , Ġr . toInt (), Ġg . toInt (), Ġb . toInt ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove ( color 1 : ĠInt , Ġcolor 2 : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġarg b ( alpha ( color 1 ), Ġred ( color 1 ) Ġ- Ġred ( color 2 ), Ġgreen ( color 1 ) Ġ- Ġgreen ( color 2 ), Ġblue ( color 1 ) Ġ- Ġblue ( color 2 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Alpha Percent ( color : ĠInt , Ġalpha Percent : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġarg b ( 2 5 5 Ġ/ Ġ 1 0 0 Ġ* Ġalpha Percent , Ġred ( color ), Ġgreen ( color ), Ġblue ( color )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget White Percent ( percent : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrgb ( 2 5 5 Ġ/ Ġ 1 0 0 Ġ* Ġpercent , Ġ 2 5 5 Ġ/ Ġ 1 0 0 Ġ* Ġpercent , Ġ 2 5 5 Ġ/ Ġ 1 0 0 Ġ* Ġpercent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Black Percent ( percent : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrgb ( 2 5 5 Ġ- Ġ 2 5 5 Ġ/ Ġ 1 0 0 Ġ* Ġpercent , Ġ 2 5 5 Ġ- Ġ 2 5 5 Ġ/ Ġ 1 0 0 Ġ* Ġpercent , Ġ 2 5 5 Ġ- Ġ 2 5 5 Ġ/ Ġ 1 0 0 Ġ* Ġpercent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠtoString ( color : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġalpha ( color ). toString () Ġ+ Ġ" Ġ" Ġ+ Ġred ( color ) Ġ+ Ġ" Ġ" Ġ+ Ġgreen ( color ) Ġ+ Ġ" Ġ" Ġ+ Ġblue ( color ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrandom (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrgb (( Math . random () Ġ* Ġ 2 5 5 ). toInt (), Ġ( Math . random () Ġ* Ġ 2 5 5 ). toInt (), Ġ( Math . random () Ġ* Ġ 2 5 5 ). toInt ()) ĊĠĠĠ Ġ} Ċ Ċ } Ċ