fast image operations
Diffstat (limited to 'src/term/size/windows.rs')
| -rw-r--r-- | src/term/size/windows.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/term/size/windows.rs b/src/term/size/windows.rs new file mode 100644 index 0000000..b7499cc --- /dev/null +++ b/src/term/size/windows.rs @@ -0,0 +1,25 @@ +use std::mem::MaybeUninit as MU; +use windows::Win32::System::Console::{ + GetConsoleScreenBufferInfo, GetStdHandle, CONSOLE_SCREEN_BUFFER_INFO as winsize, + SMALL_RECT as rect, STD_OUTPUT_HANDLE, +}; + +pub fn size() -> Option<(u16, u16)> { + // SAFETY: SYS + unsafe { + let mut info = MU::uninit(); + GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE).ok()?, info.as_mut_ptr()) + .ok()?; + let winsize { + srWindow: + rect { + Top, + Left, + Right, + Bottom, + }, + .. + } = info.assume_init(); + Some(((Bottom - Top - 1) as u16, (Right - Left - 1) as u16)) + } +} |