#[derive(Debug, Clone, PartialEq, Eq)]
pub struct WindowIcon {
pub rgba: Vec<u8>,
pub width: u32,
pub height: u32,
}
impl WindowIcon {
pub fn from_rgba(rgba: Vec<u8>, width: u32, height: u32) -> Self {
Self {
rgba,
width,
height,
}
}
pub fn expected_len(&self) -> usize {
(self.width as usize) * (self.height as usize) * 4
}
pub fn is_valid(&self) -> bool {
self.rgba.len() == self.expected_len()
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn valid_icon_passes_check() {
let icon = WindowIcon::from_rgba(vec![0; 16 * 16 * 4], 16, 16);
assert!(icon.is_valid());
}
#[test]
fn mismatched_len_is_invalid() {
let icon = WindowIcon::from_rgba(vec![0; 100], 16, 16);
assert!(!icon.is_valid());
}
}