@@ -1145,8 +1145,11 @@ pub fn get_list_3d(
11451145 let t2: Float = i. sin ( ) ;
11461146 ( t1 * t2) . abs ( ) . pow ( 0.125 )
11471147 } ;
1148- real. write_all ( & hsv2rgb ( 3 * hue, sat, val) . to_le_bytes ( ) )
1149- . unwrap ( ) ;
1148+ let hue: Float = hue * 3 ;
1149+ real. write_all (
1150+ & hsv2rgb ( hue. to_f64 ( ) , sat. to_f64 ( ) , val. to_f64 ( ) ) . to_le_bytes ( ) ,
1151+ )
1152+ . unwrap ( ) ;
11501153 }
11511154 else
11521155 {
@@ -1171,7 +1174,7 @@ pub fn get_list_3d(
11711174 let n2: Float = t2. clone ( ) / ( t2 + 1 ) ;
11721175 let n3: Float = ( n1 * n2) . abs ( ) . pow ( 0.0625 ) ;
11731176 let n4 = abs. atan ( ) * 2 / & pi;
1174- 0.8 * ( n3. clone ( ) * n4 + 0.5 - 0.5 * n3 )
1177+ 0.8 * ( n3 * ( n4 - 0.5 ) + 0.5 )
11751178 } ;
11761179 let v: Float = if lig < 0.5
11771180 {
@@ -1181,18 +1184,20 @@ pub fn get_list_3d(
11811184 {
11821185 lig. clone ( ) * ( 1 - sat. clone ( ) ) + sat
11831186 } ;
1187+ let hue: Float = hue * 3 ;
11841188 real. write_all (
11851189 & hsv2rgb (
1186- 3 * hue,
1190+ hue. to_f64 ( ) ,
11871191 if v. is_zero ( )
11881192 {
1189- Float :: new ( func . 2 . prec )
1193+ 0.0
11901194 }
11911195 else
11921196 {
1193- 2 - 2 * lig / v. clone ( )
1197+ let sat: Float = 2 - 2 * lig / & v;
1198+ sat. to_f64 ( )
11941199 } ,
1195- v,
1200+ v. to_f64 ( ) ,
11961201 )
11971202 . to_le_bytes ( ) ,
11981203 )
@@ -1952,24 +1957,18 @@ fn get_data(
19521957 ( d2_or_d3, re_or_im, lines, false , rec_re, rec_im)
19531958 } )
19541959}
1955- fn hsv2rgb ( hue : Float , sat : Float , val : Float ) -> u32
1960+ fn hsv2rgb ( hue : f64 , sat : f64 , val : f64 ) -> u32
19561961{
1957- if sat. is_zero ( )
1962+ if sat == 0.0
19581963 {
1959- return rgb2val ( val. clone ( ) , val. clone ( ) , val) ;
1964+ return rgb2val ( val, val, val) ;
19601965 }
1961- let i = hue
1962- . clone ( )
1963- . floor ( )
1964- . to_integer ( )
1965- . unwrap_or_default ( )
1966- . to_usize ( )
1967- . unwrap_or_default ( ) ;
1966+ let i = hue. floor ( ) ;
19681967 let f = hue - i;
1969- let p = val. clone ( ) * ( 1 - sat. clone ( ) ) ;
1970- let q = val. clone ( ) * ( 1 - sat. clone ( ) * f. clone ( ) ) ;
1971- let t = val. clone ( ) * ( 1 - sat * ( 1 - f) ) ;
1972- match i % 6
1968+ let p = val * ( 1.0 - sat) ;
1969+ let q = val * ( 1.0 - sat * f) ;
1970+ let t = val * ( 1.0 - sat * ( 1.0 - f) ) ;
1971+ match i as usize % 6
19731972 {
19741973 0 => rgb2val ( val, t, p) ,
19751974 1 => rgb2val ( q, val, p) ,
@@ -1979,26 +1978,9 @@ fn hsv2rgb(hue: Float, sat: Float, val: Float) -> u32
19791978 _ => rgb2val ( val, p, q) ,
19801979 }
19811980}
1982- fn rgb2val ( r : Float , g : Float , b : Float ) -> u32
1981+ fn rgb2val ( r : f64 , g : f64 , b : f64 ) -> u32
19831982{
1984- let r: Float = 255 * r;
1985- let g: Float = 255 * g;
1986- let b: Float = 255 * b;
1987- let v: u32 = ( r
1988- . to_integer ( )
1989- . unwrap_or_default ( )
1990- . to_u32 ( )
1991- . unwrap_or_default ( )
1992- << 16 )
1993- + ( g. to_integer ( )
1994- . unwrap_or_default ( )
1995- . to_u32 ( )
1996- . unwrap_or_default ( )
1997- << 8 )
1998- + b. to_integer ( )
1999- . unwrap_or_default ( )
2000- . to_u32 ( )
2001- . unwrap_or_default ( ) ;
1983+ let v: u32 = ( ( ( 255.0 * r) as u32 ) << 16 ) + ( ( ( 255.0 * g) as u32 ) << 8 ) + ( 255.0 * b) as u32 ;
20021984 v
20031985}
20041986fn spawn ( cli : bool ) -> Child
0 commit comments