@@ -7,64 +7,65 @@ module Chroma
77 # Add hsluv versions of the color functions to chroma
88 class Color
99 def darkenp ( amount = 10 )
10- h , s , l = Hsluv . rgb_to_hsluv ( rgb . r / 255.0 , rgb . g / 255.0 , rgb . b / 255.0 )
11- new_l = [ l - amount , 0 ] . max
12- rgb_values = Hsluv . rgb_prepare ( Hsluv . hsluv_to_rgb ( h , s , new_l ) )
13- Chroma . paint ( "rgb(#{ rgb_values [ 0 ] } , #{ rgb_values [ 1 ] } , #{ rgb_values [ 2 ] } )" )
10+ h , s , l = to_hsluv
11+ l = [ l - amount , 0 ] . max
12+ from_hsluv ( h , s , l )
1413 end
1514
1615 def lightenp ( amount = 10 )
17- h , s , l = Hsluv . rgb_to_hsluv ( rgb . r / 255.0 , rgb . g / 255.0 , rgb . b / 255.0 )
18- new_l = [ l + amount , 100 ] . min
19- rgb_values = Hsluv . rgb_prepare ( Hsluv . hsluv_to_rgb ( h , s , new_l ) )
20- Chroma . paint ( "rgb(#{ rgb_values [ 0 ] } , #{ rgb_values [ 1 ] } , #{ rgb_values [ 2 ] } )" )
16+ h , s , l = to_hsluv
17+ l = [ l + amount , 100 ] . min
18+ from_hsluv ( h , s , l )
2119 end
2220
2321 def saturatep ( amount = 10 )
24- h , s , l = Hsluv . rgb_to_hsluv ( rgb . r / 255.0 , rgb . g / 255.0 , rgb . b / 255.0 )
25- new_s = [ s + amount , 100 ] . min
26- rgb_values = Hsluv . rgb_prepare ( Hsluv . hsluv_to_rgb ( h , new_s , l ) )
27- Chroma . paint ( "rgb(#{ rgb_values [ 0 ] } , #{ rgb_values [ 1 ] } , #{ rgb_values [ 2 ] } )" )
22+ h , s , l = to_hsluv
23+ s = [ s + amount , 100 ] . min
24+ from_hsluv ( h , s , l )
2825 end
2926
3027 def desaturatep ( amount = 10 )
31- h , s , l = Hsluv . rgb_to_hsluv ( rgb . r / 255.0 , rgb . g / 255.0 , rgb . b / 255.0 )
32- new_s = [ s - amount , 0 ] . max
33- rgb_values = Hsluv . rgb_prepare ( Hsluv . hsluv_to_rgb ( h , new_s , l ) )
34- Chroma . paint ( "rgb(#{ rgb_values [ 0 ] } , #{ rgb_values [ 1 ] } , #{ rgb_values [ 2 ] } )" )
28+ h , s , l = to_hsluv
29+ s = [ s - amount , 0 ] . max
30+ from_hsluv ( h , s , l )
3531 end
3632
3733 def greyscalep
38- h , _s , l = Hsluv . rgb_to_hsluv ( rgb . r / 255.0 , rgb . g / 255.0 , rgb . b / 255.0 )
39- rgb_values = Hsluv . rgb_prepare ( Hsluv . hsluv_to_rgb ( h , 0 , l ) )
40- Chroma . paint ( "rgb(#{ rgb_values [ 0 ] } , #{ rgb_values [ 1 ] } , #{ rgb_values [ 2 ] } )" )
34+ h , _s , l = to_hsluv
35+ from_hsluv ( h , 0 , l )
4136 end
4237 alias grayscalep greyscalep
4338
4439 def spinp ( amount = 0 )
45- h , s , l = Hsluv . rgb_to_hsluv ( rgb . r / 255.0 , rgb . g / 255.0 , rgb . b / 255.0 )
46- new_h = ( h + amount ) % 360
47- rgb_values = Hsluv . rgb_prepare ( Hsluv . hsluv_to_rgb ( new_h , s , l ) )
48- Chroma . paint ( "rgb(#{ rgb_values [ 0 ] } , #{ rgb_values [ 1 ] } , #{ rgb_values [ 2 ] } )" )
40+ h , s , l = to_hsluv
41+ h = ( h + amount ) % 360
42+ from_hsluv ( h , s , l )
4943 end
5044
5145 def mixp ( other , weight = 50 )
5246 other = other . paint if other . is_a? ( String )
5347 p = weight / 100.0
5448
55- h1 , s1 , l1 = Hsluv . rgb_to_hsluv ( rgb . r / 255.0 , rgb . g / 255.0 , rgb . b / 255.0 )
56- h2 , s2 , l2 = Hsluv . rgb_to_hsluv ( other . rgb . r / 255.0 , other . rgb . g / 255.0 , other . rgb . b / 255.0 )
49+ h1 , s1 , l1 = to_hsluv
50+ h2 , s2 , l2 = other . to_hsluv
5751
5852 # Interpolate hue on the shortest path around the color wheel
5953 h_diff = h2 - h1
6054 h_diff -= 360 if h_diff > 180
6155 h_diff += 360 if h_diff < -180
62- new_h = ( h1 + h_diff * ( 1 - p ) ) % 360
56+ h = ( h1 + h_diff * ( 1 - p ) ) % 360
57+ s = s1 * p + s2 * ( 1 - p )
58+ l = l1 * p + l2 * ( 1 - p )
59+
60+ from_hsluv ( h , s , l )
61+ end
6362
64- new_s = s1 * p + s2 * ( 1 - p )
65- new_l = l1 * p + l2 * ( 1 - p )
63+ def to_hsluv
64+ Hsluv . rgb_to_hsluv ( rgb . r / 255.0 , rgb . g / 255.0 , rgb . b / 255.0 )
65+ end
6666
67- rgb_values = Hsluv . rgb_prepare ( Hsluv . hsluv_to_rgb ( new_h , new_s , new_l ) )
67+ def from_hsluv ( h , s , l ) # rubocop:disable Naming/MethodParameterName
68+ rgb_values = Hsluv . rgb_prepare ( Hsluv . hsluv_to_rgb ( h , s , l ) )
6869 Chroma . paint ( "rgb(#{ rgb_values [ 0 ] } , #{ rgb_values [ 1 ] } , #{ rgb_values [ 2 ] } )" )
6970 end
7071 end
0 commit comments