package Ġorg . open rs 2 . archive . map Ċ Ċ import Ġkotlin . math . max Ċ import Ġkotlin . math . min Ċ import Ġkotlin . math . pow Ċ Ċ public Ġobject ĠColors Ġ{ ĊĠĠĠ Ġprivate Ġval ĠH SL _ TO _ RGB Ġ= ĠInt Array ( 6 5 5 3 6 ) ĊĠĠĠ Ġprivate Ġconst Ġval ĠB RIGHT NESS Ġ= Ġ 0 . 8 ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( h Ġin Ġ 0 Ġuntil Ġ 6 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( s Ġin Ġ 0 Ġuntil Ġ 8 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( l Ġin Ġ 0 Ġuntil Ġ 1 2 8 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhue Ġ= Ġh . toDouble () Ġ/ Ġ 6 4 Ġ+ Ġ 0 . 0 0 7 8 1 2 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsat uration Ġ= Ġs . toDouble () Ġ/ Ġ 8 Ġ+ Ġ 0 . 0 6 2 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlight ness Ġ= Ġl . toDouble () Ġ/ Ġ 1 2 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH SL _ TO _ RGB [ i ++] Ġ= Ġh sl To Rgb ( hue , Ġsat uration , Ġlight ness ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġh sl To Rgb ( h : ĠDouble , Ġs : ĠDouble , Ġl : ĠDouble ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġr Ġ= Ġl ĊĠĠĠĠĠĠĠ Ġvar Ġg Ġ= Ġl ĊĠĠĠĠĠĠĠ Ġvar Ġb Ġ= Ġl ĊĊĠĠĠĠĠĠĠ Ġif Ġ( s Ġ!= Ġ 0 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġq Ġ= Ġif Ġ( l Ġ* Ġ 2 Ġ< Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl Ġ* Ġ( s Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl Ġ+ Ġs Ġ- Ġ( l Ġ* Ġs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp Ġ= Ġl Ġ* Ġ 2 Ġ- Ġq ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtr Ġ= Ġh Ġ+ Ġ( 1 . 0 Ġ/ Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tr Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtr -- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtb Ġ= Ġh Ġ- Ġ( 1 . 0 Ġ/ Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tb Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtb ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġr Ġ= Ġif Ġ( tr Ġ* Ġ 6 Ġ< Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtr Ġ* Ġ( q Ġ- Ġp ) Ġ* Ġ 6 Ġ+ Ġp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( tr Ġ* Ġ 2 Ġ< Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġq ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( tr Ġ* Ġ 3 Ġ< Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( 2 . 0 Ġ/ Ġ 3 Ġ- Ġtr ) Ġ* Ġ( q Ġ- Ġp ) Ġ* Ġ 6 Ġ+ Ġp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġg Ġ= Ġif Ġ( h Ġ* Ġ 6 Ġ< Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh Ġ* Ġ( q Ġ- Ġp ) Ġ* Ġ 6 Ġ+ Ġp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( h Ġ* Ġ 2 Ġ< Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġq ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( h Ġ* Ġ 3 Ġ< Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( 2 . 0 Ġ/ Ġ 3 Ġ- Ġh ) Ġ* Ġ( q Ġ- Ġp ) Ġ* Ġ 6 Ġ+ Ġp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ= Ġif Ġ( tb Ġ* Ġ 6 Ġ< Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtb Ġ* Ġ( q Ġ- Ġp ) Ġ* Ġ 6 Ġ+ Ġp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( tb Ġ* Ġ 2 Ġ< Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġq ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( tb Ġ* Ġ 3 Ġ< Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( 2 . 0 Ġ/ Ġ 3 Ġ- Ġtb ) Ġ* Ġ( q Ġ- Ġp ) Ġ* Ġ 6 Ġ+ Ġp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġred Ġ= Ġ( r . pow ( BR IGHT NESS ) Ġ* Ġ 2 5 6 ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġgreen Ġ= Ġ( g . pow ( BR IGHT NESS ) Ġ* Ġ 2 5 6 ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġblue Ġ= Ġ( b . pow ( BR IGHT NESS ) Ġ* Ġ 2 5 6 ). toInt () ĊĊĠĠĠĠĠĠĠ Ġvar Ġrgb Ġ= Ġ( red Ġshl Ġ 1 6 ) Ġor Ġ( green Ġshl Ġ 8 ) Ġor Ġblue ĊĠĠĠĠĠĠĠ Ġif Ġ( rgb Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrgb Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġrgb ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġh sl To Rgb ( h sl : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠH SL _ TO _ RGB [ h sl ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġmultiply Light ness ( h sl : ĠInt , Ġfactor : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( h sl ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 2 Ġ-> Ġ 1 2 3 4 5 6 7 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 Ġ-> Ġ 1 2 7 Ġ- Ġmin ( max ( factor , Ġ 0 ), Ġ 1 2 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġl Ġ= Ġ(( h sl Ġand Ġ 0 x 7 F ) Ġ* Ġfactor ) Ġshr Ġ 7 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl Ġ= Ġmin ( max ( l , Ġ 2 ), Ġ 1 2 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( h sl Ġand Ġ 0 xFF 8 0 ) Ġor Ġl ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ