package Ġme . anno . ui . editor . color . spaces Ċ Ċ import Ġme . anno . language . translation . Name Desc Ċ import Ġme . anno . ui . editor . color . Color Space Ċ import Ġme . anno . utils . math s . Math s Ċ import Ġorg . j om l . Vector 3 f Ċ import Ġkotlin . math . PI Ċ import Ġkotlin . math . cos Ċ Ċ object ĠLinear H SI Ġ: ĠColor Space ( ĊĠĠĠ ĠName Desc (" H SI "), Ġ" H SI - Linear ", Ġ"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" vec 3 Ġhue To RGB ( float Ġh ){ " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġvec 3 Ġh sv Ġ= Ġvec 3 ( h , Ġ 1 . 0 , Ġ 1 . 0 );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġfloat Ġx Ġ= Ġ( 1 . 0 Ġ- Ġabs ( mod ( h * 6 . 0 , Ġ 2 . 0 ) Ġ- Ġ 1 . 0 )); \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġvec 3 Ġrgb Ġ= Ġh Ġ< Ġ 0 . 5 Ġ? Ġ(\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠ Ġh Ġ< Ġ${ 1 . 0 Ġ/ Ġ 6 . 0 } Ġ? Ġvec 3 ( 1 . 0 , x , 0 . 0 ) Ġ: Ġh Ġ< Ġ${ 2 . 0 Ġ/ Ġ 6 . 0 } Ġ? Ġvec 3 ( x , 1 . 0 , 0 . 0 ) Ġ: Ġvec 3 ( 0 . 0 , 1 . 0 , x ) Ġ\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġ) Ġ: Ġ(\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠ Ġh Ġ< Ġ${ 4 . 0 Ġ/ Ġ 6 . 0 } Ġ? Ġvec 3 ( 0 . 0 , x , 1 . 0 ) Ġ: Ġh Ġ< Ġ${ 5 . 0 Ġ/ Ġ 6 . 0 } Ġ? Ġvec 3 ( x , 0 . 0 , 1 . 0 ) Ġ: Ġvec 3 ( 1 . 0 , 0 . 0 , x )\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġ); \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġreturn Ġrgb ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" }" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" vec 3 Ġspace To RGB ( vec 3 Ġh sv ){ " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġfloat Ġh Ġ= Ġh sv . x , Ġs Ġ= Ġh sv . y , Ġv Ġ= Ġh sv . z ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġjust Ġinterpolate Ġbetween Ġblack , Ġwhite , Ġand Ġthe Ġmost Ġvi br ant Ġcolor Ġat Ġthat Ġhue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġvec 3 Ġcolor Ġ= Ġhue To RGB ( h );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġvec 3 Ġcenter Ġ= Ġmix ( vec 3 ( 0 . 5 ), Ġcolor , Ġs );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġif ( v Ġ> Ġ 0 . 5 ){ \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠ Ġreturn Ġmix ( center , Ġvec 3 ( 1 . 0 ), Ġ 2 * v - 1 );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġ} Ġelse Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠ Ġreturn Ġcenter *( 2 * v );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġ}\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" }", ĠVector 3 f ( 0 f , Ġ 0 . 6 9 f , Ġ 0 . 6 3 f ) Ċ ) Ġ{ ĊĊĠĠĠ Ġ// Ġhttps :// www . v ocal . com / video / rgb - and - h sv h si h sl - color - space - conversion / ĊĊĠĠĠ Ġoverride Ġfun Ġfrom RGB ( rgb : ĠVector 3 f ): ĠVector 3 f Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġrgb . x ĊĠĠĠĠĠĠĠ Ġval Ġg Ġ= Ġrgb . y ĊĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġrgb . z ĊĠĠĠĠĠĠĠ Ġval Ġmax Ġ= ĠMath s . max ( r , Ġg , Ġb ) ĊĠĠĠĠĠĠĠ Ġval Ġmin Ġ= ĠMath s . min ( r , Ġg , Ġb ) ĊĠĠĠĠĠĠĠ Ġval Ġdelta Ġ= Ġmax Ġ- Ġmin ĊĠĠĠĠĠĠĠ Ġvar Ġh Ġ= Ġwhen Ġ( max ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr Ġ-> Ġ( g Ġ- Ġb ) Ġ/ Ġdelta ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg Ġ-> Ġ( b Ġ- Ġr ) Ġ/ Ġdelta Ġ+ Ġ 2 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ( r Ġ- Ġg ) Ġ/ Ġdelta Ġ+ Ġ 4 f ĊĠĠĠĠĠĠĠ Ġ} Ġ/ Ġ 6 f ĊĠĠĠĠĠĠĠ Ġif Ġ( h Ġ< Ġ 0 f ) Ġh Ġ+= Ġ 1 f ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġ( r Ġ+ Ġg Ġ+ Ġb ) Ġ/ Ġ 3 ĊĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġif Ġ( i Ġ== Ġ 0 f ) Ġ 0 f Ġelse Ġ 1 Ġ- Ġmin Ġ/ Ġi ĊĠĠĠĠĠĠĠ Ġreturn ĠVector 3 f ( h , Ġs , Ġmax ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto RGB ( input : ĠVector 3 f ): ĠVector 3 f Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġh Ġ= Ġinput . x ĊĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġinput . y ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġinput . z ĊĠĠĠĠĠĠĠ Ġval Ġh 6 Ġ= Ġh Ġ* Ġ 6 ĊĠĠĠĠĠĠĠ Ġval Ġr : ĠFloat ĊĠĠĠĠĠĠĠ Ġval Ġg : ĠFloat ĊĠĠĠĠĠĠĠ Ġval Ġb : ĠFloat ĊĠĠĠĠĠĠĠ Ġval Ġh Angle Ġ= Ġh Ġ* ĠPI . toFloat () Ġ* Ġ 2 f ĊĠĠĠĠĠĠĠ Ġval Ġdeg 6 0 Ġ= ĠPI . toFloat () Ġ/ Ġ 3 f ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġh 6 Ġ<= Ġ 2 f Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ= Ġi Ġ* Ġ( 1 Ġ- Ġs ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr Ġ= Ġi Ġ* Ġ( 1 Ġ+ Ġs Ġ* Ġcos ( h Angle ) Ġ/ Ġ( cos ( deg 6 0 Ġ- Ġh ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg Ġ= Ġ 3 Ġ* Ġi Ġ- Ġb Ġ- Ġr ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLOGGER . info (" 1 Ġ$ b Ġ$ r Ġ$ g ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġh 6 Ġ<= Ġ 4 f Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr Ġ= Ġi Ġ* Ġ( 1 Ġ- Ġs ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg Ġ= Ġi Ġ* Ġ( 1 Ġ+ Ġs Ġ* Ġcos ( 2 f Ġ* Ġdeg 6 0 Ġ- Ġh Angle ) Ġ/ Ġcos ( 3 f Ġ* Ġdeg 6 0 Ġ- Ġh Angle )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ= Ġ 3 Ġ* Ġi Ġ- Ġr Ġ- Ġg ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLOGGER . info (" 2 Ġ$ r Ġ$ g Ġ$ b ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg Ġ= Ġi Ġ* Ġ( 1 Ġ- Ġs ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ= Ġi Ġ* Ġ( 1 Ġ+ Ġs Ġ* Ġcos ( 4 f Ġ* Ġdeg 6 0 Ġ- Ġh Angle ) Ġ/ Ġcos ( 5 f Ġ* Ġdeg 6 0 Ġ- Ġh Angle )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr Ġ= Ġ 3 Ġ* Ġi Ġ- Ġb Ġ- Ġg ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLOGGER . info (" 3 Ġ$ g Ġ$ b Ġ$ r ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠVector 3 f ( r , Ġg , Ġb ) ĊĠĠĠ Ġ} Ċ Ċ }