2018-01-07 07:31:14 +11:00
|
|
|
use Construct;
|
|
|
|
use super::base_terminal::{ClearType, ITerminal};
|
|
|
|
|
|
|
|
use kernel::windows_kernel::terminal;
|
2018-01-18 09:06:45 +11:00
|
|
|
|
|
|
|
/// This struct is an windows implementation for terminal related actions.
|
2018-01-07 07:31:14 +11:00
|
|
|
pub struct WinApiTerminal;
|
|
|
|
|
|
|
|
impl Construct for WinApiTerminal {
|
|
|
|
fn new() -> Box<WinApiTerminal> {
|
|
|
|
Box::from(WinApiTerminal {})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl ITerminal for WinApiTerminal {
|
|
|
|
fn clear(&self, clear_type: ClearType) {
|
|
|
|
match clear_type
|
|
|
|
{
|
|
|
|
ClearType::All => terminal::clear_entire_screen(),
|
2018-01-18 09:06:45 +11:00
|
|
|
ClearType::FromCursorDown => terminal::clear_after_cursor(),
|
|
|
|
ClearType::FromCursorUp => terminal::clear_before_cursor(),
|
2018-01-08 01:26:20 +11:00
|
|
|
ClearType::CurrentLine => terminal::clear_current_line(),
|
|
|
|
ClearType::UntilNewLine => terminal::clear_until_line(),
|
2018-01-07 07:31:14 +11:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
fn terminal_size(&self) -> Option<(u16, u16)> {
|
|
|
|
terminal::terminal_size()
|
|
|
|
}
|
|
|
|
|
|
|
|
fn scroll_up(&self, count: i16) {
|
|
|
|
// yet to be inplemented
|
|
|
|
}
|
|
|
|
|
2018-01-19 08:47:09 +11:00
|
|
|
fn scroll_down(&self, count: i16) {
|
2018-01-07 07:31:14 +11:00
|
|
|
terminal::scroll_down(count as i16);
|
|
|
|
}
|
2018-01-26 04:26:08 +11:00
|
|
|
|
|
|
|
fn set_size(&self, width: i16, height: i16) { terminal::resize_terminal(width,height); }
|
2018-01-07 07:31:14 +11:00
|
|
|
}
|