use std::io::{self, Write};
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
pub enum PointerShape {
#[default]
Default,
Pointer,
}
pub fn encode(shape: PointerShape) -> &'static str {
match shape {
PointerShape::Default => "\x1b]22;default\x1b\\",
PointerShape::Pointer => "\x1b]22;pointer\x1b\\",
}
}
pub fn write(out: &mut impl Write, shape: PointerShape) -> io::Result<()> {
out.write_all(encode(shape).as_bytes())?;
out.flush()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn osc_pointer_shape_encoding() {
assert_eq!(encode(PointerShape::Default), "\x1b]22;default\x1b\\");
assert_eq!(encode(PointerShape::Pointer), "\x1b]22;pointer\x1b\\");
}
}