package Ġio . github . it ss un ny monster . lwjgl lib . utils Ċ Ċ import Ġorg . j om l . Vector 3 f Ċ import Ġorg . j om l . Vector 3 i Ċ import Ġorg . j om l . Vector 4 f Ċ import Ġorg . j om l . Vector 4 i Ċ Ċ /** Ċ Ġ* ĠCreated Ġon Ġ 1 3 / 0 1 / 2 0 2 2 Ċ Ġ* Ġ@ author ĠSun ny Monster Ċ Ġ*/ Ċ class ĠColor Ġ{ ĊĠĠĠ Ġprivate Ġval Ġred Ġ: ĠInt ĊĠĠĠ Ġprivate Ġval Ġgreen Ġ: ĠInt ĊĠĠĠ Ġprivate Ġval Ġblue Ġ: ĠInt ĊĠĠĠ Ġprivate Ġval Ġalpha Ġ: ĠInt ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnew Ġcolor Ġwith Ġits Ġhexadecimal Ġvalue . ĊĠĠĠĠ Ġ* Ġ@ param Ġhex ĠThe Ġhexadecimal Ġvalue Ġof Ġthe Ġcolor . ĠIt Ġshould Ġstart Ġwith Ġ# Ġand Ġit Ġshould Ġbe Ġ 7 Ġor Ġ 9 Ġcharacters Ġlong . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( hex Ġ: ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrgb Ġ= Ġhex To RGB ( hex ) ĊĠĠĠĠĠĠĠ Ġred Ġ= Ġrgb . x ĊĠĠĠĠĠĠĠ Ġgreen Ġ= Ġrgb . y ĊĠĠĠĠĠĠĠ Ġblue Ġ= Ġrgb . z ĊĠĠĠĠĠĠĠ Ġalpha Ġ= Ġrgb . w ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnew Ġcolor Ġwith Ġits ĠRGB Ġvalues . ĠAlpha Ġis Ġset Ġto Ġ 2 5 5 Ġby Ġdefault . ĊĠĠĠĠ Ġ* Ġ@ param Ġred ĠThe Ġred Ġvalue Ġof Ġthe Ġcolor . ĠShould Ġbe Ġbetween Ġ 0 Ġand Ġ 2 5 5 . ĊĠĠĠĠ Ġ* Ġ@ param Ġgreen ĠThe Ġgreen Ġvalue Ġof Ġthe Ġcolor . ĠShould Ġbe Ġbetween Ġ 0 Ġand Ġ 2 5 5 . ĊĠĠĠĠ Ġ* Ġ@ param Ġblue ĠThe Ġblue Ġvalue Ġof Ġthe Ġcolor . Ġ ĠShould Ġbe Ġbetween Ġ 0 Ġand Ġ 2 5 5 . ĊĠĠĠĠ Ġ* Ġ@ param Ġalpha ĠThe Ġalpha Ġvalue Ġof Ġthe Ġcolor . ĠShould Ġbe Ġbetween Ġ 0 Ġand Ġ 2 5 5 . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( red Ġ: ĠInt , Ġgreen Ġ: ĠInt , Ġblue Ġ: ĠInt , Ġalpha Ġ: ĠInt Ġ= Ġ 2 5 5 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . red Ġ= Ġred ĊĠĠĠĠĠĠĠ Ġthis . green Ġ= Ġgreen ĊĠĠĠĠĠĠĠ Ġthis . blue Ġ= Ġblue ĊĠĠĠĠĠĠĠ Ġthis . alpha Ġ= Ġalpha ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnew Ġcolor Ġwith Ġits Ġnormalized ĠRGB Ġvalues . ĠAlpha Ġis Ġset Ġto Ġ 1 . 0 Ġby Ġdefault . ĊĠĠĠĠ Ġ* Ġ@ param Ġred ĠThe Ġred Ġvalue Ġof Ġthe Ġcolor . ĠShould Ġbe Ġbetween Ġ 0 . 0 Ġand Ġ 1 . 0 . ĊĠĠĠĠ Ġ* Ġ@ param Ġgreen ĠThe Ġgreen Ġvalue Ġof Ġthe Ġcolor . ĠShould Ġbe Ġbetween Ġ 0 . 0 Ġand Ġ 1 . 0 . ĊĠĠĠĠ Ġ* Ġ@ param Ġblue ĠThe Ġblue Ġvalue Ġof Ġthe Ġcolor . Ġ ĠShould Ġbe Ġbetween Ġ 0 . 0 Ġand Ġ 1 . 0 . ĊĠĠĠĠ Ġ* Ġ@ param Ġalpha ĠThe Ġalpha Ġvalue Ġof Ġthe Ġcolor . ĠShould Ġbe Ġbetween Ġ 0 . 0 Ġand Ġ 1 . 0 . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( red Ġ: ĠFloat , Ġgreen Ġ: ĠFloat , Ġblue Ġ: ĠFloat , Ġalpha Ġ: ĠFloat Ġ= Ġ 1 . 0 f ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . red Ġ= Ġ( red Ġ* Ġ 2 5 5 ). toInt () ĊĠĠĠĠĠĠĠ Ġthis . green Ġ= Ġ( green Ġ* Ġ 2 5 5 ). toInt () ĊĠĠĠĠĠĠĠ Ġthis . blue Ġ= Ġ( blue Ġ* Ġ 2 5 5 ). toInt () ĊĠĠĠĠĠĠĠ Ġthis . alpha Ġ= Ġ( alpha Ġ* Ġ 2 5 5 ). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnew Ġcolor Ġwith Ġits ĠRGB Ġvalues . ĊĠĠĠĠ Ġ* Ġ@ param Ġrgb ĠThe Ġcolor . ĠThe Ġcomponents Ġshould Ġbe Ġbetween Ġ 0 Ġand Ġ 2 5 5 . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( rgb Ġ: ĠVector 4 i ) Ġ{ ĊĠĠĠĠĠĠĠ Ġred Ġ= Ġrgb . x ĊĠĠĠĠĠĠĠ Ġgreen Ġ= Ġrgb . y ĊĠĠĠĠĠĠĠ Ġblue Ġ= Ġrgb . z ĊĠĠĠĠĠĠĠ Ġalpha Ġ= Ġrgb . w ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnew Ġcolor Ġwith Ġits ĠRGB Ġvalues . ĠAlpha Ġis Ġset Ġto Ġ 2 5 5 Ġby Ġdefault . ĊĠĠĠĠ Ġ* Ġ@ param Ġrgb ĠThe Ġcolor . ĠThe Ġcomponents Ġshould Ġbe Ġbetween Ġ 0 Ġand Ġ 2 5 5 . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( rgb Ġ: ĠVector 3 i ) Ġ{ ĊĠĠĠĠĠĠĠ Ġred Ġ= Ġrgb . x ĊĠĠĠĠĠĠĠ Ġgreen Ġ= Ġrgb . y ĊĠĠĠĠĠĠĠ Ġblue Ġ= Ġrgb . z ĊĠĠĠĠĠĠĠ Ġalpha Ġ= Ġ 2 5 5 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnew Ġcolor Ġwith Ġits Ġnormalized ĠRGB Ġvalues . ĠAlpha Ġis Ġset Ġto Ġ 1 . 0 Ġby Ġdefault . ĊĠĠĠĠ Ġ* Ġ@ param Ġrgb ĠThe Ġcolor . ĠThe Ġcomponents Ġshould Ġbe Ġbetween Ġ 0 . 0 Ġand Ġ 1 . 0 . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( rgb Ġ: ĠVector 3 f ) Ġ{ ĊĠĠĠĠĠĠĠ Ġred Ġ= Ġ( rgb . x Ġ* Ġ 2 5 5 ). toInt () ĊĠĠĠĠĠĠĠ Ġgreen Ġ= Ġ( rgb . y Ġ* Ġ 2 5 5 ). toInt () ĊĠĠĠĠĠĠĠ Ġblue Ġ= Ġ( rgb . z Ġ* Ġ 2 5 5 ). toInt () ĊĠĠĠĠĠĠĠ Ġalpha Ġ= Ġ 2 5 5 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnew Ġcolor Ġwith Ġits Ġnormalized ĠRGB Ġvalues . ĊĠĠĠĠ Ġ* Ġ@ param Ġrgb ĠThe Ġcolor . ĠThe Ġcomponents Ġshould Ġbe Ġbetween Ġ 0 . 0 Ġand Ġ 1 . 0 . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( rgb Ġ: ĠVector 4 f ) Ġ{ ĊĠĠĠĠĠĠĠ Ġred Ġ= Ġ( rgb . x Ġ* Ġ 2 5 5 ). toInt () ĊĠĠĠĠĠĠĠ Ġgreen Ġ= Ġ( rgb . y Ġ* Ġ 2 5 5 ). toInt () ĊĠĠĠĠĠĠĠ Ġblue Ġ= Ġ( rgb . z Ġ* Ġ 2 5 5 ). toInt () ĊĠĠĠĠĠĠĠ Ġalpha Ġ= Ġ( rgb . w Ġ* Ġ 2 5 5 ). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGetter Ġfor Ġthe Ġred Ġcomponent Ġof Ġthe Ġcolor . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġred Ġcomponent Ġof Ġthe Ġcolor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġr () Ġ: ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġred ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGetter Ġfor Ġthe Ġgreen Ġcomponent Ġof Ġthe Ġcolor . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġgreen Ġcomponent Ġof Ġthe Ġcolor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġg () Ġ: ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġgreen ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGetter Ġfor Ġthe Ġblue Ġcomponent Ġof Ġthe Ġcolor . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġblue Ġcomponent Ġof Ġthe Ġcolor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġb () Ġ: ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġblue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGetter Ġfor Ġthe Ġalpha Ġcomponent Ġof Ġthe Ġcolor . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġalpha Ġcomponent Ġof Ġthe Ġcolor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġa () Ġ: ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġalpha ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠNormal izes Ġthe Ġcolor Ġto Ġa ĠVector 4 f . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġnormalized Ġcolor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġnormalize () Ġ: ĠVector 4 f Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠVector 4 f ( red Ġ/ Ġ 2 5 5 f , Ġgreen Ġ/ Ġ 2 5 5 f , Ġblue Ġ/ Ġ 2 5 5 f , Ġalpha Ġ/ Ġ 2 5 5 f ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠConverts Ġa Ġhexadecimal Ġstring Ġto Ġan ĠRGB Ġcolor . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġhex ĠThe Ġhexadecimal Ġstring . ĠIt Ġshould Ġstart Ġwith Ġ# Ġand Ġbe Ġ 7 Ġor Ġ 9 Ġcharacters Ġlong . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠThe ĠRGB Ġcolor . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġhex To RGB ( hex Ġ: ĠString ) Ġ: ĠVector 4 i Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hex . length Ġ!= Ġ 7 Ġ&& Ġhex . length Ġ!= Ġ 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Hex Ġcolor Ġmust Ġbe Ġ 7 Ġor Ġ 9 Ġcharacters Ġlong Ġincluding Ġthe Ġ# ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! hex . startsWith ("# ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Hex Ġcolor Ġmust Ġstart Ġwith Ġ# ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġhex . substring ( 1 , Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġg Ġ= Ġhex . substring ( 3 , Ġ 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġhex . substring ( 5 , Ġ 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġa Ġ= Ġ" FF " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hex . length Ġ== Ġ 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa Ġ= Ġhex . substring ( 7 , Ġ 9 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠVector 4 i ( Integer . parseInt ( r , Ġ 1 6 ), ĠInteger . parseInt ( g , Ġ 1 6 ), ĠInteger . parseInt ( b , Ġ 1 6 ), ĠInteger . parseInt ( a , Ġ 1 6 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġval ĠBLACK Ġ: ĠColor Ġ= ĠColor ("# 0 0 0 0 0 0 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġval ĠRED Ġ: ĠColor Ġ= ĠColor ("# FF 0 0 0 0 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġval ĠGREEN Ġ: ĠColor Ġ= ĠColor ("# 0 0 FF 0 0 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġval ĠBL UE Ġ: ĠColor Ġ= ĠColor ("# 0 0 0 0 FF ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġval ĠY ELLOW Ġ: ĠColor Ġ= ĠColor ("# FFFF 0 0 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġval ĠCY AN Ġ: ĠColor Ġ= ĠColor ("# 0 0 FFFF ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġval ĠM AGENT A Ġ: ĠColor Ġ= ĠColor ("# FF 0 0 FF ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġval ĠWH ITE Ġ: ĠColor Ġ= ĠColor ("# FFFFFF ") ĊĠĠĠ Ġ} Ċ }