diff --git a/src/dirs.rs b/src/dirs.rs index 9146b9d..e8c241e 100644 --- a/src/dirs.rs +++ b/src/dirs.rs @@ -2,6 +2,7 @@ use bitflags::bitflags; bitflags! { /// The possible values for a direction in DM. + #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub struct Dirs: u8 { const NORTH = 1 << 0; const SOUTH = 1 << 1; diff --git a/src/icon.rs b/src/icon.rs index 644bf02..4b7ce8a 100644 --- a/src/icon.rs +++ b/src/icon.rs @@ -1,3 +1,4 @@ +use crate::dirs::Dirs; use crate::{error, ztxt, RawDmi}; use image::codecs::png; use image::imageops; @@ -8,6 +9,7 @@ use std::io::Cursor; use std::num::NonZeroU32; #[derive(Clone, Default, PartialEq, Debug)] +/// A DMI Icon, which is a collection of [IconState]s. pub struct Icon { pub version: DmiVersion, pub width: u32, @@ -15,6 +17,18 @@ pub struct Icon { pub states: Vec, } +/// The ordering of directions within a DMI file. +pub const DIR_ORDERING: [Dirs; 8] = [ + Dirs::SOUTH, + Dirs::NORTH, + Dirs::EAST, + Dirs::WEST, + Dirs::SOUTHEAST, + Dirs::SOUTHWEST, + Dirs::NORTHEAST, + Dirs::NORTHWEST, +]; + impl Icon { pub fn load(reader: R) -> Result { let raw_dmi = RawDmi::load(reader)?;