From 516f663106774a4b3b2a37c6b867107384bbd7c0 Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Sat, 23 Dec 2023 18:28:21 -0800 Subject: [PATCH] Bits and bobs for #18 (#19) --- src/dirs.rs | 1 + src/icon.rs | 14 ++++++++++++++ 2 files changed, 15 insertions(+) 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)?;