@@ -893,8 +893,8 @@ impl<T: ArrayValue> Array<T> {
893893 for i in 0 ..chunk_row_count / 2 {
894894 let left = i * chunk_row_len;
895895 let right = ( chunk_row_count - i - 1 ) * chunk_row_len;
896- let left = & mut data[ left] as * mut T ;
897- let right = & mut data[ right] as * mut T ;
896+ let left = & raw mut data[ left] ;
897+ let right = & raw mut data[ right] ;
898898 unsafe {
899899 ptr:: swap_nonoverlapping ( left, right, chunk_row_len) ;
900900 }
@@ -2060,7 +2060,7 @@ impl Array<f64> {
20602060 let max = r. max ( g) . max ( b) ;
20612061 let min = r. min ( g) . min ( b) ;
20622062 let delta = max - min;
2063- let h = if delta == 0.0 {
2063+ let hue = if delta == 0.0 {
20642064 0.0
20652065 } else {
20662066 ( TAU * if max == r {
@@ -2071,11 +2071,11 @@ impl Array<f64> {
20712071 ( r - g) / delta + 4.0
20722072 } ) / 6.0
20732073 } ;
2074- let s = if max == 0.0 { 0.0 } else { 1.0 - min / max } ;
2075- let v = max;
2076- rgb[ 0 ] = h ;
2077- rgb[ 1 ] = s ;
2078- rgb[ 2 ] = v ;
2074+ let sat = if max == 0.0 { 0.0 } else { 1.0 - min / max } ;
2075+ let val = max;
2076+ rgb[ 0 ] = hue ;
2077+ rgb[ 1 ] = sat ;
2078+ rgb[ 2 ] = val ;
20792079 }
20802080 self . meta . take_sorted_flags ( ) ;
20812081 self . validate ( ) ;
@@ -2092,10 +2092,10 @@ impl Array<f64> {
20922092 }
20932093 let channels = * self . shape . last ( ) . unwrap ( ) ;
20942094 for hsv in self . data . as_mut_slice ( ) . chunks_exact_mut ( channels) {
2095- let [ h , s , v , ..] = * hsv else {
2095+ let [ hue , sat , val , ..] = * hsv else {
20962096 unreachable ! ( ) ;
20972097 } ;
2098- let [ r, g, b] = hsv_to_rgb ( h , s , v ) ;
2098+ let [ r, g, b] = hsv_to_rgb ( hue , sat , val ) ;
20992099 hsv[ 0 ] = r;
21002100 hsv[ 1 ] = g;
21012101 hsv[ 2 ] = b;
@@ -2106,20 +2106,22 @@ impl Array<f64> {
21062106 }
21072107}
21082108
2109- pub ( crate ) fn hsv_to_rgb ( h : f64 , s : f64 , v : f64 ) -> [ f64 ; 3 ] {
2110- let h = h / TAU * 6.0 ;
2111- let i = h. floor ( ) as isize ;
2112- let f = h - i as f64 ;
2113- let p = v * ( 1.0 - s) ;
2114- let q = v * ( 1.0 - f * s) ;
2115- let t = v * ( 1.0 - ( 1.0 - f) * s) ;
2116- match i. rem_euclid ( 6 ) {
2117- 0 => [ v, t, p] ,
2118- 1 => [ q, v, p] ,
2119- 2 => [ p, v, t] ,
2120- 3 => [ p, q, v] ,
2121- 4 => [ t, p, v] ,
2122- _ => [ v, p, q] ,
2109+ pub ( crate ) fn hsv_to_rgb ( hue : f64 , sat : f64 , val : f64 ) -> [ f64 ; 3 ] {
2110+ let hue = hue / TAU * 6.0 ;
2111+ let sect = hue. floor ( ) as isize ;
2112+ let f = hue - sect as f64 ;
2113+ let chroma = val * sat;
2114+ let min = val - chroma;
2115+ let mid1 = val - f * chroma;
2116+ let mid0 = val - ( 1.0 - f) * chroma;
2117+ match sect. rem_euclid ( 6 ) {
2118+ 0 => [ val, mid0, min] ,
2119+ 1 => [ mid1, val, min] ,
2120+ 2 => [ min, val, mid0] ,
2121+ 3 => [ min, mid1, val] ,
2122+ 4 => [ mid0, min, val] ,
2123+ 5 => [ val, min, mid1] ,
2124+ _ => unreachable ! ( ) ,
21232125 }
21242126}
21252127
0 commit comments