minicrossterm/src/crossterm_terminal/winapi_terminal.rs

41 lines
1.2 KiB
Rust
Raw Normal View History

use Construct;
use super::base_terminal::{ClearType, ITerminal};
use kernel::windows_kernel::terminal;
/// This struct is an windows implementation for terminal related actions.
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(),
ClearType::FromCursorDown => terminal::clear_after_cursor(),
ClearType::FromCursorUp => terminal::clear_before_cursor(),
ClearType::CurrentLine => terminal::clear_current_line(),
ClearType::UntilNewLine => terminal::clear_until_line(),
};
}
fn terminal_size(&self) -> Option<(u16, u16)> {
terminal::terminal_size()
}
fn scroll_up(&self, count: i16) {
// yet to be inplemented
}
fn scroll_down(&self, count: i16) {
terminal::scroll_down(count as i16);
}
fn set_size(&self, width: i16, height: i16) { terminal::resize_terminal(width,height); }
}