From 0d34c6cc4ec8d710550c2a8bcf491be4face7280 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 27 Apr 2016 23:36:23 -0400 Subject: a few more accessors --- src/ffi.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/ffi.rs | 10 ++++++++++ src/screen.rs | 45 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 105 insertions(+) diff --git a/src/ffi.c b/src/ffi.c index 455d84f..61a4a20 100644 --- a/src/ffi.c +++ b/src/ffi.c @@ -41,6 +41,56 @@ int vt100_wrapper_screen_bracketed_paste(struct vt100_screen *screen) return screen->bracketed_paste; } +int vt100_wrapper_screen_visual_bell(struct vt100_screen *screen) +{ + return screen->visual_bell; +} + +int vt100_wrapper_screen_audible_bell(struct vt100_screen *screen) +{ + return screen->audible_bell; +} + +int vt100_wrapper_screen_update_title(struct vt100_screen *screen) +{ + return screen->update_title; +} + +int vt100_wrapper_screen_update_icon_name(struct vt100_screen *screen) +{ + return screen->update_icon_name; +} + +int vt100_wrapper_screen_dirty(struct vt100_screen *screen) +{ + return screen->dirty; +} + +void vt100_wrapper_screen_clear_visual_bell(struct vt100_screen *screen) +{ + screen->visual_bell = 0; +} + +void vt100_wrapper_screen_clear_audible_bell(struct vt100_screen *screen) +{ + screen->audible_bell = 0; +} + +void vt100_wrapper_screen_clear_update_title(struct vt100_screen *screen) +{ + screen->update_title = 0; +} + +void vt100_wrapper_screen_clear_update_icon_name(struct vt100_screen *screen) +{ + screen->update_icon_name = 0; +} + +void vt100_wrapper_screen_clear_dirty(struct vt100_screen *screen) +{ + screen->dirty = 0; +} + int vt100_wrapper_cell_is_wide(struct vt100_cell *cell) { return cell->is_wide; diff --git a/src/ffi.rs b/src/ffi.rs index a939c0d..80a2d08 100644 --- a/src/ffi.rs +++ b/src/ffi.rs @@ -46,6 +46,16 @@ extern "C" { pub fn vt100_wrapper_screen_mouse_reporting_button_motion(screen: *mut types::ScreenImpl) -> libc::c_int; pub fn vt100_wrapper_screen_mouse_reporting_sgr_mode(screen: *mut types::ScreenImpl) -> libc::c_int; pub fn vt100_wrapper_screen_bracketed_paste(screen: *mut types::ScreenImpl) -> libc::c_int; + pub fn vt100_wrapper_screen_visual_bell(screen: *mut types::ScreenImpl) -> libc::c_int; + pub fn vt100_wrapper_screen_audible_bell(screen: *mut types::ScreenImpl) -> libc::c_int; + pub fn vt100_wrapper_screen_update_title(screen: *mut types::ScreenImpl) -> libc::c_int; + pub fn vt100_wrapper_screen_update_icon_name(screen: *mut types::ScreenImpl) -> libc::c_int; + pub fn vt100_wrapper_screen_dirty(screen: *mut types::ScreenImpl) -> libc::c_int; + pub fn vt100_wrapper_screen_clear_visual_bell(screen: *mut types::ScreenImpl) -> libc::c_int; + pub fn vt100_wrapper_screen_clear_audible_bell(screen: *mut types::ScreenImpl) -> libc::c_int; + pub fn vt100_wrapper_screen_clear_update_title(screen: *mut types::ScreenImpl) -> libc::c_int; + pub fn vt100_wrapper_screen_clear_update_icon_name(screen: *mut types::ScreenImpl) -> libc::c_int; + pub fn vt100_wrapper_screen_clear_dirty(screen: *mut types::ScreenImpl) -> libc::c_int; pub fn vt100_wrapper_cell_is_wide(cell: *mut types::CellImpl) -> libc::c_int; pub fn vt100_wrapper_cell_attrs_bold(cell: *mut types::CellAttrs) -> libc::c_int; pub fn vt100_wrapper_cell_attrs_italic(cell: *mut types::CellAttrs) -> libc::c_int; diff --git a/src/screen.rs b/src/screen.rs index 2251506..0a41a2d 100644 --- a/src/screen.rs +++ b/src/screen.rs @@ -291,6 +291,51 @@ impl Screen { ffi::vt100_wrapper_screen_bracketed_paste(screen_impl) != 0 } } + + pub fn check_visual_bell(&self) -> bool { + let Screen(screen_impl) = *self; + unsafe { + let state = ffi::vt100_wrapper_screen_visual_bell(screen_impl) != 0; + ffi::vt100_wrapper_screen_clear_visual_bell(screen_impl); + state + } + } + + pub fn check_audible_bell(&self) -> bool { + let Screen(screen_impl) = *self; + unsafe { + let state = ffi::vt100_wrapper_screen_audible_bell(screen_impl) != 0; + ffi::vt100_wrapper_screen_clear_audible_bell(screen_impl); + state + } + } + + pub fn check_update_title(&self) -> bool { + let Screen(screen_impl) = *self; + unsafe { + let state = ffi::vt100_wrapper_screen_update_title(screen_impl) != 0; + ffi::vt100_wrapper_screen_clear_update_title(screen_impl); + state + } + } + + pub fn check_update_icon_name(&self) -> bool { + let Screen(screen_impl) = *self; + unsafe { + let state = ffi::vt100_wrapper_screen_update_icon_name(screen_impl) != 0; + ffi::vt100_wrapper_screen_clear_update_icon_name(screen_impl); + state + } + } + + pub fn check_dirty(&self) -> bool { + let Screen(screen_impl) = *self; + unsafe { + let state = ffi::vt100_wrapper_screen_dirty(screen_impl) != 0; + ffi::vt100_wrapper_screen_clear_dirty(screen_impl); + state + } + } } impl Drop for Screen { -- cgit v1.2.3