package Ġcom . god addy . android . color picker Ċ Ċ /** Ċ Ġ* ĠA Ġrepresentation Ġof ĠColor Ġin ĠH ue , ĠSat uration Ġand ĠValue Ġform . Ċ Ġ*/ Ċ import Ġandroidx . compose . runtime . save able . Saver Ċ import Ġandroidx . compose . runtime . save able . list Saver Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġcom . github . aj alt . col orm ath . model . H SV Ċ import Ġcom . github . aj alt . col orm ath . model . RGB Ċ import Ġcom . god addy . android . color picker . har mony . Color Har mony Mode Ċ Ċ /** Ċ Ġ* ĠA Ġrepresentation Ġof ĠColor Ġin ĠH ue , ĠSat uration Ġand ĠValue Ġform . Ċ Ġ*/ Ċ data Ġclass ĠH sv Color ( ĊĊĠĠĠ Ġ// Ġfrom Ġ= Ġ 0 . 0 , Ġto Ġ= Ġ 3 6 0 . 0 ĊĠĠĠ Ġval Ġhue : ĠFloat , ĊĊĠĠĠ Ġ// Ġfrom Ġ= Ġ 0 . 0 , Ġto Ġ= Ġ 1 . 0 ĊĠĠĠ Ġval Ġsat uration : ĠFloat , ĊĊĠĠĠ Ġ// Ġfrom Ġ= Ġ 0 . 0 , Ġto Ġ= Ġ 1 . 0 ĊĠĠĠ Ġval Ġvalue : ĠFloat , ĊĊĠĠĠ Ġ// Ġfrom Ġ= Ġ 0 . 0 , Ġto Ġ= Ġ 1 . 0 ĊĠĠĠ Ġval Ġalpha : ĠFloat Ċ ) Ġ{ ĊĊĠĠĠ Ġfun Ġto Color (): ĠColor Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġh sv Ġ= ĠH SV ( hue , Ġsat uration , Ġvalue , Ġalpha ) ĊĠĠĠĠĠĠĠ Ġval Ġrgb Ġ= Ġh sv . to SR GB () ĊĠĠĠĠĠĠĠ Ġreturn ĠColor ( rgb . red Int , Ġrgb . green Int , Ġrgb . blue Int , Ġrgb . alpha Int ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Comp lement ary Color (): ĠList < H sv Color > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( sat uration Ġ= Ġ( sat uration Ġ+ Ġ 0 . 1 f ). coerce At Most ( 1 f ), Ġvalue Ġ= Ġ( value Ġ+ Ġ 0 . 3 f ). coerce In ( 0 . 0 f , Ġ 1 f )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( sat uration Ġ= Ġ( sat uration Ġ- Ġ 0 . 1 f ). coerce At Most ( 1 f ), Ġvalue Ġ= Ġ( value Ġ- Ġ 0 . 3 f ). coerce In ( 0 . 0 f , Ġ 1 f )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( hue Ġ= Ġ( hue Ġ+ Ġ 1 8 0 ) Ġ% Ġ 3 6 0 ), Ġ// Ġactual Ġcomplement ary ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( hue Ġ= Ġ( hue Ġ+ Ġ 1 8 0 ) Ġ% Ġ 3 6 0 , Ġsat uration Ġ= Ġ( sat uration Ġ+ Ġ 0 . 2 f ). coerce At Most ( 1 f ), Ġvalue Ġ= Ġ( value Ġ- Ġ 0 . 3 f ). coerce In ( 0 . 0 f , Ġ 1 f )) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Split Comp lement ary Colors (): ĠList < H sv Color > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( hue Ġ= Ġ( hue Ġ+ Ġ 1 5 0 ) Ġ% Ġ 3 6 0 , Ġsat uration Ġ= Ġ( sat uration Ġ- Ġ 0 . 0 5 f ). coerce In ( 0 . 0 f , Ġ 1 f ), Ġvalue Ġ= Ġ( value Ġ- Ġ 0 . 3 f ). coerce In ( 0 . 0 f , Ġ 1 f )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( hue Ġ= Ġ( hue Ġ+ Ġ 2 1 0 ) Ġ% Ġ 3 6 0 , Ġsat uration Ġ= Ġ( sat uration Ġ- Ġ 0 . 0 5 f ). coerce In ( 0 . 0 f , Ġ 1 f ), Ġvalue Ġ= Ġ( value Ġ- Ġ 0 . 3 f ). coerce In ( 0 . 0 f , Ġ 1 f )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( hue Ġ= Ġ( hue Ġ+ Ġ 1 5 0 ) Ġ% Ġ 3 6 0 ), Ġ// Ġactual ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( hue Ġ= Ġ( hue Ġ+ Ġ 2 1 0 ) Ġ% Ġ 3 6 0 ), Ġ// Ġactual ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Tri adic Colors (): ĠList < H sv Color > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( hue Ġ= Ġ( hue Ġ+ Ġ 1 2 0 ) Ġ% Ġ 3 6 0 , Ġsat uration Ġ= Ġ( sat uration Ġ- Ġ 0 . 0 5 f ). coerce In ( 0 . 0 f , Ġ 1 f ), Ġvalue Ġ= Ġ( value Ġ- Ġ 0 . 3 f ). coerce In ( 0 . 0 f , Ġ 1 f )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( hue Ġ= Ġ( hue Ġ+ Ġ 1 2 0 ) Ġ% Ġ 3 6 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( hue Ġ= Ġ( hue Ġ+ Ġ 2 4 0 ) Ġ% Ġ 3 6 0 , Ġsat uration Ġ= Ġ( sat uration Ġ- Ġ 0 . 0 5 f ). coerce In ( 0 . 0 f , Ġ 1 f ), Ġvalue Ġ= Ġ( value Ġ- Ġ 0 . 3 f ). coerce In ( 0 . 0 f , Ġ 1 f )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( hue Ġ= Ġ( hue Ġ+ Ġ 2 4 0 ) Ġ% Ġ 3 6 0 ), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Te tr adic Colors (): ĠList < H sv Color > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( sat uration Ġ= Ġ( sat uration Ġ+ Ġ 0 . 2 f ). coerce In ( 0 . 0 f , Ġ 1 f )), Ġ// Ġbonus Ġone ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( hue Ġ= Ġ( hue Ġ+ Ġ 9 0 ) Ġ% Ġ 3 6 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( hue Ġ= Ġ( hue Ġ+ Ġ 1 8 0 ) Ġ% Ġ 3 6 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( hue Ġ= Ġ( hue Ġ+ Ġ 2 7 0 ) Ġ% Ġ 3 6 0 ), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget An al ag ous Colors (): ĠList < H sv Color > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( hue Ġ= Ġ( hue Ġ+ Ġ 3 0 ) Ġ% Ġ 3 6 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( hue Ġ= Ġ( hue Ġ+ Ġ 6 0 ) Ġ% Ġ 3 6 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( hue Ġ= Ġ( hue Ġ+ Ġ 9 0 ) Ġ% Ġ 3 6 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( hue Ġ= Ġ( hue Ġ+ Ġ 1 2 0 ) Ġ% Ġ 3 6 0 ), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Mono chrom atic Colors (): ĠList < H sv Color > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( sat uration Ġ= Ġ( sat uration Ġ+ Ġ 0 . 2 f ). mod ( 1 f )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( sat uration Ġ= Ġ( sat uration Ġ+ Ġ 0 . 4 f ). mod ( 1 f )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( sat uration Ġ= Ġ( sat uration Ġ+ Ġ 0 . 6 f ). mod ( 1 f )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( sat uration Ġ= Ġ( sat uration Ġ+ Ġ 0 . 8 f ). mod ( 1 f )), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Shade Colors (): ĠList < H sv Color > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( value Ġ= Ġ( value Ġ- Ġ 0 . 1 0 f ). mod ( 1 . 0 f ). coerce At Least ( 0 . 2 f )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( value Ġ= Ġ( value Ġ+ Ġ 0 . 5 5 f ). mod ( 1 . 0 f ). coerce At Least ( 0 . 5 5 f )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( value Ġ= Ġ( value Ġ+ Ġ 0 . 3 0 f ). mod ( 1 . 0 f ). coerce At Least ( 0 . 3 f )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . copy ( value Ġ= Ġ( value Ġ+ Ġ 0 . 0 5 f ). mod ( 1 . 0 f ). coerce At Least ( 0 . 2 f )), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Colors ( color Har mony Mode : ĠColor Har mony Mode ): ĠList < H sv Color > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( color Har mony Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor Har mony Mode . NONE Ġ-> Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor Har mony Mode . COMP LEMENT ARY Ġ-> Ġget Comp lement ary Color () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor Har mony Mode . ANAL O GO US Ġ-> Ġget An al ag ous Colors () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor Har mony Mode . SPLIT _ COMP LEMENT ARY Ġ-> Ġget Split Comp lement ary Colors () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor Har mony Mode . TRI AD IC Ġ-> Ġget Tri adic Colors () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor Har mony Mode . TET RAD IC Ġ-> Ġget Te tr adic Colors () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor Har mony Mode . MON O CH ROM AT IC Ġ-> Ġget Mono chrom atic Colors () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor Har mony Mode . SHA DES Ġ-> Ġget Shade Colors () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval ĠDEFAULT Ġ= ĠH sv Color ( 3 6 0 f , Ġ 1 . 0 f , Ġ 1 . 0 f , Ġ 1 . 0 f ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġthe Ġcolor Ġmath Ġh sv Ġto Ġlocal Ġh sv Ġcolor ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠH SV . to Color (): ĠH sv Color Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠH sv Color ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhue Ġ= Ġif Ġ( this . h . isNaN ()) Ġ 0 f Ġelse Ġthis . h , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsat uration Ġ= Ġthis . s , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġthis . v , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Ġ= Ġthis . alpha ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( color : ĠColor ): ĠH sv Color Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRGB ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor . red , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor . green , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor . blue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor . alpha , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). to H SV (). to Color () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval ĠS aver : ĠS aver < H sv Color , Ġ*> Ġ= Ġlist Saver ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . hue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . sat uration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . alpha ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrestore Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH sv Color ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 1 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 2 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ 3 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ