wayvr/wlx-overlay-s/src/overlays/edit/stereo.rs

53 lines
1.5 KiB
Rust

use crate::{
overlays::edit::{
sprite_tab::{SpriteTabHandler, SpriteTabKey},
EditModeWrapPanel,
},
windowing::backend::{BackendAttribValue, StereoMode},
};
static STEREO_NAMES: [&str; 5] = ["none", "leftright", "rightleft", "topbottom", "bottomtop"];
pub fn new_stereo_tab_handler(
panel: &mut EditModeWrapPanel,
) -> anyhow::Result<SpriteTabHandler<StereoMode>> {
SpriteTabHandler::new(
panel,
"stereo",
&STEREO_NAMES,
Box::new(|_common, state| {
let stereo = state.clone();
Box::new(move |app, owc| {
owc.backend
.set_attrib(app, BackendAttribValue::Stereo(stereo));
})
}),
None,
)
}
impl SpriteTabKey for StereoMode {
fn to_tab_key(&self) -> &'static str {
match self {
StereoMode::None => "none",
StereoMode::LeftRight => "leftright",
StereoMode::RightLeft => "rightleft",
StereoMode::TopBottom => "topbottom",
StereoMode::BottomTop => "bottomtop",
}
}
fn from_tab_key(key: &str) -> Self {
match key {
"none" => StereoMode::None,
"leftright" => StereoMode::LeftRight,
"rightleft" => StereoMode::RightLeft,
"topbottom" => StereoMode::TopBottom,
"bottomtop" => StereoMode::BottomTop,
_ => {
panic!("cannot translate to positioning: {key}")
}
}
}
}