summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Nazarewicz <mina86@mina86.com>2018-08-18 19:40:16 +0100
committerDavid Peter <sharkdp@users.noreply.github.com>2018-08-18 20:58:03 +0200
commit5c95b8803b7c6b831f16df85e5775e33b1e5f7ea (patch)
treeb8f1e961ba88cf899b51418b46121b735540e532
parent5b421b455d2df28e21f3b49b86ede3a738d12b4a (diff)
Avoid floating point arithmetic in RGB→8-bit ANSI approximation
-rw-r--r--src/terminal.rs8
1 files changed, 2 insertions, 6 deletions
diff --git a/src/terminal.rs b/src/terminal.rs
index 4ebf9478..3b0f82ae 100644
--- a/src/terminal.rs
+++ b/src/terminal.rs
@@ -13,14 +13,10 @@ fn rgb2ansi(r: u8, g: u8, b: u8) -> u8 {
} else if r > 248 {
WHITE
} else {
- let fr = f32::from(r);
- (((fr - 8.) / 247.) * 24.) as u8 + 232
+ ((r - 8) as u16 * 24 / 247) as u8 + 232
}
} else {
- let fr = f32::from(r);
- let fg = f32::from(g);
- let fb = f32::from(b);
- 16 + (36 * (fr / 255. * 5.) as u8) + (6 * (fg / 255. * 5.) as u8) + (fb / 255. * 5.) as u8
+ 36 * (r / 51) + 6 * (g / 51) + (b / 51) + 16
}
}