Skip to main content

ak_vis/viewer/headless/
config.rs

1use std::path::PathBuf;
2
3const DEFAULT_PREROLL_FRAMES: u32 = 4;
4const DEFAULT_STABLE_FRAMES: u32 = 2;
5
6#[derive(Clone, Debug, PartialEq, Eq)]
7pub struct HeadlessRenderConfig {
8    pub path: PathBuf,
9    pub width: u32,
10    pub height: u32,
11    pub preroll_frames: u32,
12    pub stable_frames: u32,
13}
14
15impl HeadlessRenderConfig {
16    pub fn new(path: impl Into<PathBuf>, width: u32, height: u32) -> Self {
17        Self {
18            path: path.into(),
19            width,
20            height,
21            preroll_frames: DEFAULT_PREROLL_FRAMES,
22            stable_frames: DEFAULT_STABLE_FRAMES,
23        }
24    }
25}
26
27#[derive(Debug, Clone, PartialEq, Eq)]
28pub struct HeadlessRenderError {
29    message: String,
30}
31
32impl HeadlessRenderError {
33    pub(super) fn new(message: impl Into<String>) -> Self {
34        Self {
35            message: message.into(),
36        }
37    }
38}
39
40impl std::fmt::Display for HeadlessRenderError {
41    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
42        f.write_str(&self.message)
43    }
44}
45
46impl std::error::Error for HeadlessRenderError {}
47
48impl From<std::io::Error> for HeadlessRenderError {
49    fn from(value: std::io::Error) -> Self {
50        Self::new(value.to_string())
51    }
52}