From 2a7896d40b13022fff084c551a52bd3f32a90935 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 26 Apr 2016 05:31:36 -0400 Subject: set_window_size and set_scrollback_length --- src/ffi.rs | 10 ++++++++++ src/screen.rs | 10 ++++++++++ tests/basic.rs | 11 +++++++++++ 3 files changed, 31 insertions(+) diff --git a/src/ffi.rs b/src/ffi.rs index 47281ba..1b984b5 100644 --- a/src/ffi.rs +++ b/src/ffi.rs @@ -22,6 +22,16 @@ extern "C" { outlen: *mut libc::size_t, ); + pub fn vt100_screen_set_window_size( + screen: *mut types::ScreenImpl, + rows: libc::c_int, + cols: libc::c_int, + ); + pub fn vt100_screen_set_scrollback_length( + screen: *mut types::ScreenImpl, + rows: libc::c_int, + ); + pub fn vt100_wrapper_rows(screen: *mut types::ScreenImpl) -> libc::c_int; pub fn vt100_wrapper_cols(screen: *mut types::ScreenImpl) -> libc::c_int; } diff --git a/src/screen.rs b/src/screen.rs index 296f2dc..69eb6f1 100644 --- a/src/screen.rs +++ b/src/screen.rs @@ -24,6 +24,16 @@ impl Screen { unsafe { ffi::vt100_wrapper_cols(screen_impl) } } + pub fn set_window_size(&self, rows: i32, cols: i32) { + let Screen(screen_impl) = *self; + unsafe { ffi::vt100_screen_set_window_size(screen_impl, rows, cols) }; + } + + pub fn set_scrollback_length(&self, rows: i32) { + let Screen(screen_impl) = *self; + unsafe { ffi::vt100_screen_set_scrollback_length(screen_impl, rows) }; + } + pub fn process(&mut self, s: &str) -> u64 { let Screen(screen_impl) = *self; unsafe { diff --git a/tests/basic.rs b/tests/basic.rs index 739b75c..ec3a8d7 100644 --- a/tests/basic.rs +++ b/tests/basic.rs @@ -14,4 +14,15 @@ mod tests { screen.process(input); assert_eq!(screen.window_contents(0, 0, 0, 50), "foobar\n"); } + + #[test] + fn set_window_size() { + let screen = vt100::Screen::new(24, 80); + assert_eq!(screen.rows(), 24); + assert_eq!(screen.cols(), 80); + + screen.set_window_size(34, 8); + assert_eq!(screen.rows(), 34); + assert_eq!(screen.cols(), 8); + } } -- cgit v1.2.3