From 0a02e0a7c3a5e4b5b2a945f4dfa5e30924140a36 Mon Sep 17 00:00:00 2001
From: ZeWaka <zewakagamer@gmail.com>
Date: Sat, 23 Dec 2023 18:24:18 -0800
Subject: [PATCH 1/2] Add a public list of all dirs in DMI order

---
 src/icon.rs | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

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<IconState>,
 }
 
+/// 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<R: Read>(reader: R) -> Result<Icon, error::DmiError> {
 		let raw_dmi = RawDmi::load(reader)?;

From 17c9c3eeb440044237132581068e89deeb7bcd8b Mon Sep 17 00:00:00 2001
From: ZeWaka <zewakagamer@gmail.com>
Date: Sat, 23 Dec 2023 18:26:31 -0800
Subject: [PATCH 2/2] Derive for the dirs bitflags

---
 src/dirs.rs | 1 +
 1 file changed, 1 insertion(+)

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;