use crate::{Dimension, Orientation};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub struct Monitor {
pub picture_orientation: Orientation,
pub pictures_per_monitor: u8,
pub resolution: Dimension,
}
impl Default for Monitor {
fn default() -> Self {
Monitor {
picture_orientation: Orientation::Horizontal,
pictures_per_monitor: 1,
resolution: Dimension::default(),
}
}
}
impl Monitor {
pub fn flip(mut self) -> Self {
match self.picture_orientation {
Orientation::Horizontal => {
self.picture_orientation = Orientation::Vertical;
}
Orientation::Vertical => {
self.picture_orientation = Orientation::Horizontal;
}
};
self
}
}
pub fn get_monitors(number: usize) -> Vec<Monitor> {
let monitors: Vec<Monitor> = vec![Monitor::default(); number];
monitors
.into_iter()
.enumerate()
.map(|(index, monitor)| {
if index % 2 == 0 {
monitor.flip()
} else {
monitor
}
})
.collect()
}