on master help sign in
Avoid floating point arithmetic in RGB→8-bit ANSI approximation
commit5c95b8803b7c6b831f16df85e5775e33b1e5f7ea authorMichal Nazarewicz <mina86@mina86.com> dateSat 18 Aug 2018, 19:40 (8 years ago) parent5b421b4
1 file changed+2−6
src/terminal.rs+2−6
src/terminal.rs+2−6
@@ -13,14 +13,10 @@ fn rgb2ansi(r: u8, g: u8, b: u8) -> u8 {
1313 } else if r > 248 {
1414 WHITE
1515 } else {
16− let fr = f32::from(r);
17− (((fr - 8.) / 247.) * 24.) as u8 + 232
16+ ((r - 8) as u16 * 24 / 247) as u8 + 232
1817 }
1918 } else {
20− let fr = f32::from(r);
21− let fg = f32::from(g);
22− let fb = f32::from(b);
23− 16 + (36 * (fr / 255. * 5.) as u8) + (6 * (fg / 255. * 5.) as u8) + (fb / 255. * 5.) as u8
19+ 36 * (r / 51) + 6 * (g / 51) + (b / 51) + 16
2420 }
2521}
2622