From a9e352c2d4ce20e8cbd728cbe6498ecd47e33570 Mon Sep 17 00:00:00 2001 From: David Chavez Date: Tue, 18 Jul 2023 02:04:59 +0200 Subject: [PATCH] Small fixes --- Cargo.lock | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 1 + src/lib.rs | 17 +++++++---- 3 files changed, 98 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index dc7533a..fc55185 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -144,6 +144,12 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + [[package]] name = "errno" version = "0.3.1" @@ -184,6 +190,12 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "hashbrown" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" + [[package]] name = "heck" version = "0.4.1" @@ -196,6 +208,16 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +[[package]] +name = "indexmap" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +dependencies = [ + "equivalent", + "hashbrown", +] + [[package]] name = "io-lifetimes" version = "1.0.11" @@ -231,6 +253,12 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + [[package]] name = "miniz_oxide" version = "0.7.1" @@ -241,6 +269,27 @@ dependencies = [ "simd-adler32", ] +[[package]] +name = "num_enum" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "once_cell" version = "1.18.0" @@ -254,6 +303,7 @@ dependencies = [ "anyhow", "byteorder", "clap", + "num_enum", "png", ] @@ -270,6 +320,16 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit", +] + [[package]] name = "proc-macro2" version = "1.0.63" @@ -325,6 +385,23 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" + +[[package]] +name = "toml_edit" +version = "0.19.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + [[package]] name = "unicode-ident" version = "1.0.9" @@ -402,3 +479,12 @@ name = "windows_x86_64_msvc" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] +name = "winnow" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fac9742fd1ad1bd9643b991319f72dd031016d44b77039a26977eb667141e7" +dependencies = [ + "memchr", +] diff --git a/Cargo.toml b/Cargo.toml index 89a57fa..174f978 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,3 +10,4 @@ png = "0.17.9" clap = { version = "4.1.12", features = ["derive"] } anyhow = "1.0.72" byteorder = "1.4.3" +num_enum = "0.6.1" diff --git a/src/lib.rs b/src/lib.rs index 424c672..c79d290 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,3 +1,5 @@ +use num_enum::TryFromPrimitive; + pub mod color; pub mod image; @@ -7,9 +9,10 @@ pub use image::png_image::PNGImage; mod utils; -#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)] +#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, TryFromPrimitive)] +#[repr(u8)] pub enum ImageSize { - Bits4, + Bits4 = 0, Bits8 = 1, Bits16 = 2, Bits32 = 3, @@ -17,7 +20,7 @@ pub enum ImageSize { } impl ImageSize { - fn get_tlut_size(&self) -> usize { + pub fn get_tlut_size(&self) -> usize { match self { ImageSize::Bits4 => 0x10, ImageSize::Bits8 => 0x100, @@ -28,7 +31,8 @@ impl ImageSize { } } -#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)] +#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, TryFromPrimitive)] +#[repr(u8)] pub enum ImageFormat { Rgba = 0, Yuv = 1, @@ -37,7 +41,8 @@ pub enum ImageFormat { I = 4, } -#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)] +#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, TryFromPrimitive)] +#[repr(u8)] pub enum ImageType { I4, I8, @@ -80,7 +85,7 @@ impl ImageType { } } -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TryFromPrimitive)] #[repr(u8)] pub enum TextureLUT { None = 0,