This commit is contained in:
Timon_Post 2019-05-04 12:40:59 +02:00
parent 51c0ab6012
commit e1a46d5fb5
4 changed files with 29 additions and 29 deletions

View File

@ -44,24 +44,25 @@ pub fn pos_raw() -> io::Result<(u16, u16)> {
} }
// Read rows and cols through a ad-hoc integer parsing function // Read rows and cols through a ad-hoc integer parsing function
let read_num: fn() -> Result<(i32, char), Error> = || -> Result<(i32, char), Error> { let read_num: fn() -> Result<(i32, char) -> Result<(i32, char), Error> =
let mut num = 0; || -> Result<(i32, char), Error> {
let mut c: char; let mut num = 0;
let mut c: char;
loop { loop {
let mut buf = [0u8; 1]; let mut buf = [0u8; 1];
io::stdin().read_exact(&mut buf)?; io::stdin().read_exact(&mut buf)?;
c = buf[0] as char; c = buf[0] as char;
if let Some(d) = c.to_digit(10) { if let Some(d) = c.to_digit(10) {
num = if num == 0 { 0 } else { num * 10 }; num = if num == 0 { 0 } else { num * 10 };
num += d as i32; num += d as i32;
} else { } else {
break; break;
}
} }
}
Ok((num, c)) Ok((num, c))
}; };
// Read rows and expect `;` // Read rows and expect `;`
let (rows, c) = read_num()?; let (rows, c) = read_num()?;

View File

@ -48,7 +48,7 @@ impl ITerminalColor for AnsiColor {
if new_color == Color::Reset { if new_color == Color::Reset {
ansi_value.push_str("39"); ansi_value.push_str("39");
return ansi_value; return ansi_value;
}else { } else {
ansi_value.push_str("38;"); ansi_value.push_str("38;");
color = new_color; color = new_color;
} }
@ -57,7 +57,7 @@ impl ITerminalColor for AnsiColor {
if new_color == Color::Reset { if new_color == Color::Reset {
ansi_value.push_str("49"); ansi_value.push_str("49");
return ansi_value; return ansi_value;
}else { } else {
ansi_value.push_str("48;"); ansi_value.push_str("48;");
color = new_color; color = new_color;
} }
@ -91,7 +91,7 @@ impl ITerminalColor for AnsiColor {
rgb_val = format!("5;{}", val); rgb_val = format!("5;{}", val);
rgb_val.as_str() rgb_val.as_str()
} }
_ => "" _ => "",
}; };
ansi_value.push_str(color_val); ansi_value.push_str(color_val);

View File

@ -31,17 +31,16 @@ pub struct TerminalColor {
impl TerminalColor { impl TerminalColor {
/// Create new instance whereon color related actions can be performed. /// Create new instance whereon color related actions can be performed.
pub fn new() -> TerminalColor { pub fn new() -> TerminalColor {
// #[cfg(windows)] #[cfg(windows)]
// let color = if supports_ansi() { let color = if supports_ansi() {
// Box::from(AnsiColor::new()) as Box<(dyn ITerminalColor + Sync + Send)> Box::from(AnsiColor::new()) as Box<(dyn ITerminalColor + Sync + Send)>
// } else { } else {
// WinApiColor::new() as Box<(dyn ITerminalColor + Sync + Send)> WinApiColor::new() as Box<(dyn ITerminalColor + Sync + Send)>
// }; };
//
// #[cfg(unix)] #[cfg(unix)]
// let color = AnsiColor::new(); let color = AnsiColor::new();
let color = WinApiColor::new() as Box<(dyn ITerminalColor + Sync + Send)>;
TerminalColor { color } TerminalColor { color }
} }

View File

@ -156,7 +156,7 @@ impl ITerminalColor for WinApiColor {
const mask: u16 = FG_INTENSITY | FG_RED | FG_GREEN | FG_BLUE; const mask: u16 = FG_INTENSITY | FG_RED | FG_GREEN | FG_BLUE;
original_color &= !(mask); original_color &= !(mask);
original_color original_color
}, }
/* WinApi will be used for systems that do not support ANSI, those are windows version less then 10. RGB and 255 (AnsiBValue) colors are not supported in that case.*/ /* WinApi will be used for systems that do not support ANSI, those are windows version less then 10. RGB and 255 (AnsiBValue) colors are not supported in that case.*/
Color::Rgb { r: _, g: _, b: _ } => 0, Color::Rgb { r: _, g: _, b: _ } => 0,
Color::AnsiValue(_val) => 0, Color::AnsiValue(_val) => 0,