mirror of
https://github.com/crossterm-rs/crossterm.git
synced 2025-09-28 05:21:29 +00:00
27 lines
709 B
Rust
27 lines
709 B
Rust
use std::io::{stdout, Write};
|
|
|
|
use crate::{csi, utils::Result};
|
|
|
|
use super::AlternateScreen;
|
|
|
|
pub(crate) const ENTER_ALTERNATE_SCREEN_CSI_SEQUENCE: &str = csi!("?1049h");
|
|
pub(crate) const LEAVE_ALTERNATE_SCREEN_CSI_SEQUENCE: &str = csi!("?1049l");
|
|
|
|
pub(crate) struct AnsiAlternateScreen;
|
|
|
|
impl AlternateScreen for AnsiAlternateScreen {
|
|
fn enter(&self) -> Result<()> {
|
|
let mut stdout = stdout();
|
|
write!(stdout, "{}", ENTER_ALTERNATE_SCREEN_CSI_SEQUENCE)?;
|
|
stdout.flush()?;
|
|
Ok(())
|
|
}
|
|
|
|
fn leave(&self) -> Result<()> {
|
|
let mut stdout = stdout();
|
|
write!(stdout, "{}", LEAVE_ALTERNATE_SCREEN_CSI_SEQUENCE)?;
|
|
stdout.flush()?;
|
|
Ok(())
|
|
}
|
|
}
|