From df0ee3d26770a6cbde012b68718f89c9ef2217d2 Mon Sep 17 00:00:00 2001 From: JoshuaBrest <36625023+JoshuaBrest@users.noreply.github.com> Date: Thu, 6 Jul 2023 01:32:48 -0700 Subject: [PATCH] First commit --- .github/workflows/rust-publish.yml | 23 +++ .github/workflows/rust-test.yml | 63 +++++++ LICENSE | 157 +++++++++++++++++ README.md | 12 ++ icns-rs/.gitignore | 4 + icns-rs/Cargo.toml | 20 +++ icns-rs/README.md | 74 ++++++++ icns-rs/example.icns | Bin 0 -> 192911 bytes icns-rs/example.png | Bin 0 -> 59948 bytes icns-rs/examples/encode.rs | 36 ++++ icns-rs/rustfmt.toml | 3 + icns-rs/src/icns_format.rs | 129 ++++++++++++++ icns-rs/src/image_encoder.rs | 215 +++++++++++++++++++++++ icns-rs/src/image_types.rs | 226 ++++++++++++++++++++++++ icns-rs/src/lib.rs | 105 +++++++++++ icns-rs/src/packbits.rs | 268 +++++++++++++++++++++++++++++ 16 files changed, 1335 insertions(+) create mode 100644 .github/workflows/rust-publish.yml create mode 100644 .github/workflows/rust-test.yml create mode 100644 LICENSE create mode 100644 README.md create mode 100644 icns-rs/.gitignore create mode 100644 icns-rs/Cargo.toml create mode 100644 icns-rs/README.md create mode 100644 icns-rs/example.icns create mode 100644 icns-rs/example.png create mode 100644 icns-rs/examples/encode.rs create mode 100644 icns-rs/rustfmt.toml create mode 100644 icns-rs/src/icns_format.rs create mode 100644 icns-rs/src/image_encoder.rs create mode 100644 icns-rs/src/image_types.rs create mode 100644 icns-rs/src/lib.rs create mode 100644 icns-rs/src/packbits.rs diff --git a/.github/workflows/rust-publish.yml b/.github/workflows/rust-publish.yml new file mode 100644 index 0000000..861f9b7 --- /dev/null +++ b/.github/workflows/rust-publish.yml @@ -0,0 +1,23 @@ +name: Cargo Publish +on: + push: + tags: + - "rust-*" + workflow_dispatch: +jobs: + publish: + name: Publish + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Setup Rust + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + - name: Change Working Directory + run: cd icns-rs + - name: Publish + run: cargo publish --token ${CRATES_TOKEN} + env: + CRATES_IO_TOKEN: ${{ secrets.CRATES_TOKEN }} diff --git a/.github/workflows/rust-test.yml b/.github/workflows/rust-test.yml new file mode 100644 index 0000000..ea5fc55 --- /dev/null +++ b/.github/workflows/rust-test.yml @@ -0,0 +1,63 @@ +name: Rust CI +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true +on: + pull_request: + paths: + - icns-rs/** + push: null + workflow_dispatch: null +jobs: + tests: + name: Tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Setup Rust + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + - name: Change Working Directory + run: cd icns-rs + - name: Run tests + uses: actions-rs/cargo@v1] + with: + command: test + rustfmt: + name: Rustfmt + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Setup Rust + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + components: rustfmt + - name: Change Working Directory + run: cd icns-rs + - name: Run rustfmt + uses: actions-rs/cargo@v1 + with: + command: fmt + args: "-- --check" + clippy: + name: Clippy + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Setup Rust + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + components: clippy + - name: Change Working Directory + run: cd icns-rs + - name: Run clippy + uses: actions-rs/cargo@v1 + with: + command: clippy + args: "-- -D warnings" diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..144f824 --- /dev/null +++ b/LICENSE @@ -0,0 +1,157 @@ +# GNU LESSER GENERAL PUBLIC LICENSE + +Version 3, 29 June 2007 + +Copyright (C) 2007 Free Software Foundation, Inc. + + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + +This version of the GNU Lesser General Public License incorporates the +terms and conditions of version 3 of the GNU General Public License, +supplemented by the additional permissions listed below. + +## 0. Additional Definitions. + +As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the +GNU General Public License. + +"The Library" refers to a covered work governed by this License, other +than an Application or a Combined Work as defined below. + +An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + +A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + +The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + +The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + +## 1. Exception to Section 3 of the GNU GPL. + +You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + +## 2. Conveying Modified Versions. + +If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + +- a) under this License, provided that you make a good faith effort + to ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or +- b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + +## 3. Object Code Incorporating Material from Library Header Files. + +The object code form of an Application may incorporate material from a +header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + +- a) Give prominent notice with each copy of the object code that + the Library is used in it and that the Library and its use are + covered by this License. +- b) Accompany the object code with a copy of the GNU GPL and this + license document. + +## 4. Combined Works. + +You may convey a Combined Work under terms of your choice that, taken +together, effectively do not restrict modification of the portions of +the Library contained in the Combined Work and reverse engineering for +debugging such modifications, if you also do each of the following: + +- a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. +- b) Accompany the Combined Work with a copy of the GNU GPL and this + license document. +- c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. +- d) Do one of the following: + - 0) Convey the Minimal Corresponding Source under the terms of + this License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + - 1) Use a suitable shared library mechanism for linking with + the Library. A suitable mechanism is one that (a) uses at run + time a copy of the Library already present on the user's + computer system, and (b) will operate properly with a modified + version of the Library that is interface-compatible with the + Linked Version. +- e) Provide Installation Information, but only if you would + otherwise be required to provide such information under section 6 + of the GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the Application + with a modified version of the Linked Version. (If you use option + 4d0, the Installation Information must accompany the Minimal + Corresponding Source and Corresponding Application Code. If you + use option 4d1, you must provide the Installation Information in + the manner specified by section 6 of the GNU GPL for conveying + Corresponding Source.) + +## 5. Combined Libraries. + +You may place library facilities that are a work based on the Library +side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + +- a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities, conveyed under the terms of this License. +- b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + +## 6. Revised Versions of the GNU Lesser General Public License. + +The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +as you received it specifies that a certain numbered version of the +GNU Lesser General Public License "or any later version" applies to +it, you have the option of following the terms and conditions either +of that published version or of any later version published by the +Free Software Foundation. If the Library as you received it does not +specify a version number of the GNU Lesser General Public License, you +may choose any version of the GNU Lesser General Public License ever +published by the Free Software Foundation. + +If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..213606e --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +# ICNS + +This repository contains a multiple libraries for reading and writing ICNS files. + - Rust: [icns-rs](icns-rs/README.md) + +## Contributing + +Contributions are welcome! Feel free to open an issue or submit a pull request. + +## License + +This project is licensed under the LGPLv3 license. See the [LICENSE](/LICENSE) file for more details. \ No newline at end of file diff --git a/icns-rs/.gitignore b/icns-rs/.gitignore new file mode 100644 index 0000000..a73dbda --- /dev/null +++ b/icns-rs/.gitignore @@ -0,0 +1,4 @@ +# Cargo +/target/ +Cargo.lock +# ^^^^^^^^ Lock files aren't allowed in libraries \ No newline at end of file diff --git a/icns-rs/Cargo.toml b/icns-rs/Cargo.toml new file mode 100644 index 0000000..073d294 --- /dev/null +++ b/icns-rs/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "icns-rs" +version = "0.1.0" +edition = "2021" +description = "A library for reading and writing Apple Icon Image (.icns) files." +license = "LGPL-3.0-or-later" +homepage = "https://github.com/JoshuaBrest/icns/tree/master/icns-rs" +documentation = "https://docs.rs/icns-rs" +repository = "https://github.com/JoshuaBrest/icns" +catagories = ["image"] +keywords = ["icns", "image", "apple", "icon"] + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +image = "0.24.6" + +[[example]] +name = "encode" +path = "examples/encode.rs" diff --git a/icns-rs/README.md b/icns-rs/README.md new file mode 100644 index 0000000..99916c5 --- /dev/null +++ b/icns-rs/README.md @@ -0,0 +1,74 @@ +# ICNS-RS + +ICNS is a file format used by Apple to store icons for macOS applications. This crate provides a simple API for reading and (and soon)writing ICNS files. + +## Roadmap + +- [x] Write ICNS files +- [ ] Read ICNS files + +## Usage + +Here's a simple example of how to read an ICNS file: + +> You can find this example in `examples/encode.rs` or run it with: +> ```sh +> cargo run --example encode +> ``` + +```rust +use std::fs::File; +use std::io::prelude::*; +use image::open; +use icns_rs::{IcnsEncoder, IconFormats}; + +fn main() -> std::io::Result<()> { + // Open the image + let image = match open("example.png") { + Ok(image) => image, + Err(e) => { + println!("Error opening file: {}", e); + return Ok(()); + } + }; + + // Create the encoder + let mut encoder = IcnsEncoder::new(); + + encoder.data(image); + encoder.formats(IconFormats::recommended()); + + // Encode the image + let data = match encoder.build() { + Ok(data) => data, + Err(e) => { + println!("Error encoding image: {}", e); + return Ok(()); + } + }; + + // Write data to file + let mut file = File::create("example.icns")?; + file.write_all(&data)?; + + Ok(()) +} +``` + +## License + +This project is licensed under the GPLv3 license. See the [LICENSE](/LICENSE) file for more details. + +## Contributing + +Contributions are welcome! Feel free to open an issue or submit a pull request. + +## Acknowledgements + +This project is heavily inspired by: + - The Python package: [icnsutil](https://github.com/relikd/icnsutil/) + - The JavaScript package: [@fiahfy/icns](https://github.com/fiahfy/icns/) + - The JavaScript PackBits implementation: [@fiahfy/packbits](https://github.com/fiahfy/packbits/) + - The Wikipedia page: [Wikipedia: Apple Icon Image Format](https://en.wikipedia.org/wiki/Apple_Icon_Image_format#Icon_types) + +When I started building this, I didn't know there already was a ICNS lib for rust, but, after looking at it, it was not up to my standards because of the lack of ARGB, RGB, and, Mask support. I wanted to create a modern package that was easy to use and had a simple API. I also wanted to make sure that it was well documented and had a good test suite. I hope you enjoy using this package as much as I enjoyed making it!. \ No newline at end of file diff --git a/icns-rs/example.icns b/icns-rs/example.icns new file mode 100644 index 0000000000000000000000000000000000000000..232f2c6c36956a31248a7e0fda0785bb0f835b36 GIT binary patch literal 192911 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 z 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 std::io::Result<()> { + // Open the image + let image = match open("example.png") { + Ok(image) => image, + Err(e) => { + println!("Error opening file: {}", e); + return Ok(()); + } + }; + + // Create the encoder + let mut encoder = IcnsEncoder::new(); + + encoder.data(image); + encoder.formats(IconFormats::recommended()); + + // Encode the image + let data = match encoder.build() { + Ok(data) => data, + Err(e) => { + println!("Error encoding image: {}", e); + return Ok(()); + } + }; + + // Write data to file + let mut file = File::create("example.icns")?; + file.write_all(&data)?; + + Ok(()) +} diff --git a/icns-rs/rustfmt.toml b/icns-rs/rustfmt.toml new file mode 100644 index 0000000..eaac36c --- /dev/null +++ b/icns-rs/rustfmt.toml @@ -0,0 +1,3 @@ +error_on_line_overflow = true +error_on_unformatted = true +format_code_in_doc_comments=true \ No newline at end of file diff --git a/icns-rs/src/icns_format.rs b/icns-rs/src/icns_format.rs new file mode 100644 index 0000000..7cd01ec --- /dev/null +++ b/icns-rs/src/icns_format.rs @@ -0,0 +1,129 @@ +const MAGIC: [u8; 4] = [0x69, 0x63, 0x6e, 0x73]; // "icns" + +/// ## IcnsDataEntry +/// This file contains both the OSType and the data. +/// The OSType is a 4-byte identifier that tells the OS what the data is. +/// The data is the actual image / whatever data is being stored. +/// Data can be images, masks, metadata, etc. +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct IcnsDataEntry { + pub os_type: [u8; 4], + pub data: Box<[u8]>, +} + +impl IcnsDataEntry { + /// ## New + /// Creates a new IcnsDataEntry. + pub fn new(os_type: [u8; 4], data: Box<[u8]>) -> Self { + Self { os_type, data } + } + + /// ## Length + /// This function gets the length of the data when compiled. + /// The length is 4 bytes (OSType) + 4 bytes (length) + length (data) + pub fn len(&self) -> u32 { + (8 + self.data.len()) as u32 + } + + /// ## Building the data + /// This function compiles the data into a single byte array. + /// This contains the OSType followed by the length of the data + /// followed by the data. + pub fn build(&self) -> Box<[u8]> { + // Total: 4 bytes (OSType) + 4 bytes (length) + length (data) + let mut result = Vec::with_capacity(self.len() as usize); + + result.extend_from_slice(&self.os_type); + result.extend_from_slice(&(8 + self.data.len() as u32).to_be_bytes()); + result.extend_from_slice(&self.data); + + result.into_boxed_slice() + } +} + +/// ## ICNSBuilder +/// This struct holds a list of data that will be compiled into an ICNS file. +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct IconFamily { + pub data: Vec, +} + +impl IconFamily { + /// ## New + /// Creates a new file format + pub fn new() -> Self { + Self { data: vec![] } + } + + /// ## Adding data + /// This adds a new entry to the file. + /// Data can be images, masks, metadata, etc. + pub fn add_data(&mut self, data: IcnsDataEntry) -> &mut Self { + self.data.push(data); + + self + } + + /// ## Creating the table of contents + /// The table of contents is the first entry in the file. + /// It contains the OSType of each entry and the length of each entry. + pub fn create_contents_table(&self) -> IcnsDataEntry { + let mut buffer = Vec::with_capacity(8 * self.data.len()); // Each entry is 8 bytes + + for data in &self.data { + buffer.extend_from_slice(&data.os_type); + buffer.extend_from_slice(&((&data).data.len() as u32).to_be_bytes()); + } + + IcnsDataEntry::new( + [0x54, 0x4F, 0x43, 0x20], // "TOC " + buffer.into_boxed_slice(), + ) + } + + /// ## Building the ICNS file + /// Building the file will create the table of contents + /// and compile all the data into a single file. + pub fn build(&self) -> Box<[u8]> { + // Calculate the total size of the file + let contents_table = self.create_contents_table(); + + // Insert the TOC first + let mut data = Vec::with_capacity(self.data.len() + 1); + data.push(contents_table); + for d in &self.data { + data.push(d.clone()); + } + + let total_size = data.iter().map(|data| data.len()).sum::(); + let mut buffer = Vec::with_capacity(MAGIC.len() + 4 + total_size as usize); + + // Add the magic bytes, the total size and the data + buffer.extend_from_slice(&MAGIC); + buffer.extend_from_slice(&(total_size as u32).to_be_bytes()); + for data in &data { + buffer.extend_from_slice(&data.build()); + } + + buffer.into_boxed_slice() + } +} + +#[cfg(test)] +mod tests { + #[test] + fn encode_icns_data_entry() { + let dummy_data: Vec = vec![0x00, 0x01, 0x02, 0x03]; + let result = vec![ + 0x00, 0x00, 0x00, 0x00, // OSType: NUL NUL NUL NUL + 0x00, 0x00, 0x00, + 0x0C, // Length: 12 (4 bytes OSType + 4 bytes length + 4 bytes data) + 0x00, 0x01, 0x02, 0x03, // Data: 00 01 02 03 + ]; + + let entry = + super::IcnsDataEntry::new([0x00, 0x00, 0x00, 0x00], dummy_data.into_boxed_slice()); + + assert_eq!(entry.build(), result.into_boxed_slice()); + } +} diff --git a/icns-rs/src/image_encoder.rs b/icns-rs/src/image_encoder.rs new file mode 100644 index 0000000..2e78bce --- /dev/null +++ b/icns-rs/src/image_encoder.rs @@ -0,0 +1,215 @@ +use std::io::Write; + +use crate::{icns_format::IcnsDataEntry, image_types::IconFormats, packbits}; + +use image::{codecs::png::PngEncoder, imageops::FilterType, DynamicImage, ImageEncoder}; + +/// The ImageBuilder struct +/// This struct is used to build the image data, specifically, +/// resizing the image and encoding it as a RGB, ARGB, mask, +/// or PNG image +pub struct ImageBuilder { + pub format: IconFormats, + pub data: DynamicImage, + pub filter: FilterType, +} + +impl ImageBuilder { + pub fn new() -> Self { + Self { + format: IconFormats::IS32, + data: DynamicImage::new_rgb8(1, 1), + filter: FilterType::Nearest, + } + } + + /// Sets the image format + /// See the `IconFormats` enum for more information + pub fn format(&mut self, format: IconFormats) -> &mut Self { + self.format = format; + + self + } + + /// Sets the image data. Encode a png and pass it as a DynamicImage. + pub fn data(&mut self, data: DynamicImage) -> &mut Self { + self.data = data; + + self + } + + /// Sets the filter type to be used when resizing the image + /// - `Nearest`: Nearest neighbor interpolation + /// - `Triangle`: Triangle interpolation + /// - `CatmullRom`: Catmull-Rom interpolation + /// - `Gaussian`: Gaussian interpolation + /// + /// The default is `Nearest` because it's the fastest + pub fn filter(&mut self, filter: FilterType) -> &mut Self { + self.filter = filter; + + self + } + + /// Encodes an image as a RGB image + /// You probably want to use `.build()` instead of this method + pub fn rgb_image(&self) -> Result, String> { + let size = self.format.get_size() as u32; + let resized = self.data.resize(size, size, self.filter); + let rgb8 = resized.to_rgb8(); + let data = rgb8.pixels().collect::>(); + + let channels = [ + // Offset if the type is it32 + if self.format == IconFormats::IT32 { + vec![0x00, 0x00, 0x00, 0x00].into_boxed_slice() + } else { + Vec::new().into_boxed_slice() + }, + // Red channel + packbits::compress( + data.iter() + .map(|pixel| pixel[0]) + .collect::>() + .into_boxed_slice(), + ), + // Green channel + packbits::compress( + data.iter() + .map(|pixel| pixel[1]) + .collect::>() + .into_boxed_slice(), + ), + // Blue channel + packbits::compress( + data.iter() + .map(|pixel| pixel[2]) + .collect::>() + .into_boxed_slice(), + ), + ]; + + let mut buffer = Vec::with_capacity(channels.iter().map(|c| c.len()).sum::()); + + for b in channels { + buffer.extend_from_slice(&b); + } + + Ok(buffer.into_boxed_slice()) + } + + /// Encodes an image as a ARGB + /// You probably want to use `.build()` instead of this method + pub fn argb_image(&self) -> Result, String> { + let size = self.format.get_size() as u32; + let resized = self.data.resize(size, size, self.filter); + let rgba8 = resized.to_rgba8(); + let data = rgba8.pixels().collect::>(); + + let channels = [ + // File header + vec![0x41, 0x52, 0x47, 0x42].into_boxed_slice(), // ARGB + // Alpha channel + packbits::compress( + data.iter() + .map(|pixel| pixel[3]) + .collect::>() + .into_boxed_slice(), + ), + // Red channel + packbits::compress( + data.iter() + .map(|pixel| pixel[0]) + .collect::>() + .into_boxed_slice(), + ), + // Green channel + packbits::compress( + data.iter() + .map(|pixel| pixel[1]) + .collect::>() + .into_boxed_slice(), + ), + // Blue channel + packbits::compress( + data.iter() + .map(|pixel| pixel[2]) + .collect::>() + .into_boxed_slice(), + ), + ]; + + let mut buffer = Vec::with_capacity(channels.iter().map(|c| c.len()).sum::()); + + for b in channels { + buffer.extend_from_slice(&b); + } + + Ok(buffer.into_boxed_slice()) + } + + /// Encodes an image as a mask + /// You probably want to use `.build()` instead of this method + pub fn mask_image(&self) -> Result, String> { + let size = self.format.get_size() as u32; + let resized = self.data.resize(size, size, self.filter); + let luma = resized.to_luma_alpha8(); + let data = luma.pixels().collect::>(); + + // No compression + let mask = data + .iter() + .map(|pixel| pixel[1]) + .collect::>() + .into_boxed_slice(); + + Ok(mask) + } + + /// Encodes an image as a PNG + pub fn png_image(&self) -> Result, String> { + let size = self.format.get_size() as u32; + let data = self.data.resize(size, size, self.filter); + + let mut buffer = Vec::new(); + + // Required because the PngEncoder drops the writer + struct WriterProxy<'a> { + buffer: &'a mut Vec, + } + + impl<'a> Write for WriterProxy<'a> { + fn write(&mut self, buf: &[u8]) -> std::io::Result { + self.buffer.write(buf) + } + + fn flush(&mut self) -> std::io::Result<()> { + self.buffer.flush() + } + } + + let encoder = PngEncoder::new(WriterProxy { + buffer: &mut buffer, + }); + + let color = data.color(); + + let result = encoder.write_image(data.into_bytes().as_slice(), size, size, color); + + match result { + Ok(_) => Ok(buffer.into_boxed_slice()), + Err(e) => Err(format!("Failed to encode PNG: {}", e)), + } + } + + pub fn build(&self) -> Result { + let data = match self.format.get_format() { + crate::image_types::FileFormat::RGB => self.rgb_image(), + crate::image_types::FileFormat::ARGB => self.argb_image(), + crate::image_types::FileFormat::MASK => self.mask_image(), + crate::image_types::FileFormat::PNG => self.png_image(), + }?; + + Ok(IcnsDataEntry::new(self.format.get_bytes(), data)) + } +} diff --git a/icns-rs/src/image_types.rs b/icns-rs/src/image_types.rs new file mode 100644 index 0000000..966d1bb --- /dev/null +++ b/icns-rs/src/image_types.rs @@ -0,0 +1,226 @@ +#[doc(hidden)] +#[derive(Debug, PartialEq, Eq, Hash, Clone, Copy)] +pub enum FileFormat { + RGB, + ARGB, + MASK, + PNG, +} + +/// # ICNS Types +/// These are the types of icons that can be stored in an ICNS file. +/// Not all of them are included, but the most common ones are. +/// The full list can be found at Wikipedia +/// https://en.wikipedia.org/wiki/Apple_Icon_Image_format#Icon_types +#[derive(Debug, PartialEq, Eq, Hash, Clone, Copy)] +pub enum IconFormats { + /// - OSName: is32 + /// - Size: 16x16 + /// - Format: 24-bit RGB icon + /// - OS: System 8.5+ + IS32, + /// - OSName: il32 + /// - Size: 32x32 + /// - Format: 24-bit RGB icon + /// - OS: System 8.5+ + IL32, + /// - OSName: ih32 + /// - Size: 48x48 + /// - Format: 24-bit RGB icon + /// - OS: System 8.5+ + IH32, + /// - OSName: it32 + /// - Size: 128x128 + /// - Format: 24-bit RGB icon + /// - OS: Mac OS X 10.0+ + IT32, + /// - OSName: s8mk + /// - Size: 16x12 + /// - Format: 8-bit mask + /// - OS: System 8.5+ + S8MK, + /// - OSName: l8mk + /// - Size: 32x32 + /// - Format: 8-bit mask + /// - OS: System 8.5+ + L8MK, + /// - OSName: h8mk + /// - Size: 48x48 + /// - Format: 8-bit mask + /// - OS: System 8.5+ + H8MK, + /// - OSName: t8mk + /// - Size: 128x128 + /// - Format: 8-bit mask + /// - OS: Mac OS X 10.0+ + T8MK, + /// - OSName: ic04 + /// - Size: 16x16 + /// - Format: ARGB + /// - OS: N/A + IC04, + /// - OSName: ic05 + /// - Size: 32x32 + /// - Format: ARGB + /// - OS: N/A + IC05, + /// - OSName: ic07 + /// - Size: 128x128 + /// - Format: PNG + /// - OS: Mac OS X 10.7+ + IC07, + /// - OSName: ic08 + /// - Size: 256x256 + /// - Format: PNG + /// - OS: Mac OS X 10.5+ + IC08, + /// - OSName: ic09 + /// - Size: 512x512 + /// - Format: PNG + /// - OS: Mac OS X 10.5+ + IC09, + /// - OSName: ic10 + /// - Size: 1024x1024 + /// - Format: PNG + /// - OS: Mac OS X 10.7+ + IC10, + /// - OSName: ic11 + /// - Size: 32x32 + /// - Format: PNG + /// - OS: Mac OS X 10.8+ + IC11, + /// - OSName: ic12 + /// - Size: 64x64 + /// - Format: PNG + /// - OS: Mac OS X 10.8+ + IC12, + /// - OSName: ic13 + /// - Size: 256x256 + /// - Format: PNG + /// - OS: Mac OS X 10.8+ + IC13, + /// - OSName: ic14 + /// - Size: 512x512 + /// - Format: PNG + /// - OS: Mac OS X 10.8+ + IC14, + /// - OSName: icp4 + /// - Size: 16x16 + /// - Format: PNG + /// - OS: Mac OS X 10.7+ + ICP4, + /// - OSName: icp5 + /// - Size: 32x32 + /// - Format: PNG + /// - OS: Mac OS X 10.7+ + ICP5, + /// - OSName: icp6 + /// - Size: 64x64 + /// - Format: PNG + /// - OS: Mac OS X 10.7+ + ICP6, +} + +impl IconFormats { + /// Get the default recommended format for the icon type. + pub fn recommended() -> Vec { + vec![ + IconFormats::IS32, + IconFormats::IL32, + IconFormats::IH32, + IconFormats::IT32, + IconFormats::S8MK, + IconFormats::L8MK, + IconFormats::H8MK, + IconFormats::T8MK, + IconFormats::IC04, + IconFormats::IC05, + IconFormats::IC07, + IconFormats::IC08, + IconFormats::IC09, + IconFormats::IC10, + IconFormats::IC11, + IconFormats::IC12, + IconFormats::IC13, + IconFormats::IC14, + ] + } + + pub fn get_format(&self) -> FileFormat { + match self { + IconFormats::IS32 => FileFormat::RGB, + IconFormats::IL32 => FileFormat::RGB, + IconFormats::IH32 => FileFormat::RGB, + IconFormats::IT32 => FileFormat::RGB, + IconFormats::S8MK => FileFormat::MASK, + IconFormats::L8MK => FileFormat::MASK, + IconFormats::H8MK => FileFormat::MASK, + IconFormats::T8MK => FileFormat::MASK, + IconFormats::IC04 => FileFormat::ARGB, + IconFormats::IC05 => FileFormat::ARGB, + IconFormats::IC07 => FileFormat::PNG, + IconFormats::IC08 => FileFormat::PNG, + IconFormats::IC09 => FileFormat::PNG, + IconFormats::IC10 => FileFormat::PNG, + IconFormats::IC11 => FileFormat::PNG, + IconFormats::IC12 => FileFormat::PNG, + IconFormats::IC13 => FileFormat::PNG, + IconFormats::IC14 => FileFormat::PNG, + IconFormats::ICP4 => FileFormat::PNG, + IconFormats::ICP5 => FileFormat::PNG, + IconFormats::ICP6 => FileFormat::PNG, + } + } + + pub fn get_size(&self) -> usize { + match self { + IconFormats::IS32 => 16, + IconFormats::IL32 => 32, + IconFormats::IH32 => 48, + IconFormats::IT32 => 128, + IconFormats::S8MK => 16, + IconFormats::L8MK => 32, + IconFormats::H8MK => 48, + IconFormats::T8MK => 128, + IconFormats::IC04 => 16, + IconFormats::IC05 => 32, + IconFormats::IC07 => 128, + IconFormats::IC08 => 256, + IconFormats::IC09 => 512, + IconFormats::IC10 => 1024, + IconFormats::IC11 => 32, + IconFormats::IC12 => 64, + IconFormats::IC13 => 256, + IconFormats::IC14 => 512, + IconFormats::ICP4 => 16, + IconFormats::ICP5 => 32, + IconFormats::ICP6 => 64, + } + } + + pub fn get_bytes(&self) -> [u8; 4] { + match self { + IconFormats::IS32 => [0x69, 0x73, 0x33, 0x32], //is32 + IconFormats::IL32 => [0x69, 0x6c, 0x33, 0x32], //il32 + IconFormats::IH32 => [0x69, 0x68, 0x33, 0x32], //ih32 + IconFormats::IT32 => [0x69, 0x74, 0x33, 0x32], //it32 + IconFormats::S8MK => [0x73, 0x38, 0x6d, 0x6b], //s8mk + IconFormats::L8MK => [0x6c, 0x38, 0x6d, 0x6b], //l8mk + IconFormats::H8MK => [0x68, 0x38, 0x6d, 0x6b], //h8mk + IconFormats::T8MK => [0x74, 0x38, 0x6d, 0x6b], //t8mk + IconFormats::IC04 => [0x69, 0x63, 0x30, 0x34], //ic04 + IconFormats::IC05 => [0x69, 0x63, 0x30, 0x35], //ic05 + IconFormats::IC07 => [0x69, 0x63, 0x30, 0x37], //ic07 + IconFormats::IC08 => [0x69, 0x63, 0x30, 0x38], //ic08 + IconFormats::IC09 => [0x69, 0x63, 0x30, 0x39], //ic09 + IconFormats::IC10 => [0x69, 0x63, 0x31, 0x30], //ic10 + IconFormats::IC11 => [0x69, 0x63, 0x31, 0x31], //ic11 + IconFormats::IC12 => [0x69, 0x63, 0x31, 0x32], //ic12 + IconFormats::IC13 => [0x69, 0x63, 0x31, 0x33], //ic13 + IconFormats::IC14 => [0x69, 0x63, 0x31, 0x34], //ic14 + IconFormats::ICP4 => [0x69, 0x63, 0x70, 0x34], //icp4 + IconFormats::ICP5 => [0x69, 0x63, 0x70, 0x35], //icp5 + IconFormats::ICP6 => [0x69, 0x63, 0x70, 0x36], //icp6 + } + } +} diff --git a/icns-rs/src/lib.rs b/icns-rs/src/lib.rs new file mode 100644 index 0000000..b3b55a6 --- /dev/null +++ b/icns-rs/src/lib.rs @@ -0,0 +1,105 @@ +pub mod icns_format; +pub mod image_encoder; +pub mod image_types; +pub mod packbits; + +use icns_format::IconFamily; +use image::DynamicImage; +use image_encoder::ImageBuilder; +pub use image_types::IconFormats; + +/// The main encoder struct +/// Create a new encoder with `IcnsEncoder::new()` +pub struct IcnsEncoder { + data: DynamicImage, + formats: Vec, +} + +impl IcnsEncoder { + /// Creates a new IcnsEncoder + /// + /// Usage: + /// ```no_run + /// use icns_rs::{IcnsEncoder, IconFormats}; + /// use image::open; + /// use std::fs::File; + /// use std::io::prelude::*; + /// + /// // Open the image + /// let image = match open("512x512@2.png") { + /// Ok(image) => image, + /// Err(e) => { + /// println!("Error: {}", e); + /// std::process::exit(1); + /// } + /// }; + /// + /// // Create the encoder + /// let mut encoder = IcnsEncoder::new(); + /// + /// encoder.data(image); + /// encoder.formats(IconFormats::recommended()); + /// + /// // Encode the image + /// let data = match encoder.build() { + /// Ok(data) => data, + /// Err(e) => { + /// println!("Error ould not encode image"); + /// std::process::exit(1); + /// } + /// }; + /// + /// // Write data to file + /// let mut file = match File::create("example.icns") { + /// Ok(file) => file, + /// Err(e) => { + /// println!("Error: {}", e); + /// std::process::exit(1); + /// } + /// }; + /// + /// match file.write_all(&data) { + /// Ok(_) => println!("Successfully wrote to file"), + /// Err(e) => { + /// println!("Error: {}", e); + /// std::process::exit(1); + /// } + /// }; + /// ``` + pub fn new() -> Self { + Self { + data: DynamicImage::new_rgb8(1, 1), + formats: Vec::new(), + } + } + + /// Sets the image data. Encode a png and pass it as a DynamicImage. + pub fn data(&mut self, data: DynamicImage) -> &mut Self { + self.data = data; + + self + } + + /// Sets the image formats to be encoded + pub fn formats(&mut self, formats: Vec) -> &mut Self { + self.formats = formats; + + self + } + + /// Encodes the image as an ICNS file + pub fn build(&self) -> Result, String> { + let mut file = IconFamily::new(); + + let mut image_encoder = ImageBuilder::new(); + image_encoder.data(self.data.clone()); + + for format in &self.formats { + let image = image_encoder.format(format.clone()).build()?; + + file.add_data(image); + } + + Ok(file.build()) + } +} diff --git a/icns-rs/src/packbits.rs b/icns-rs/src/packbits.rs new file mode 100644 index 0000000..aec65da --- /dev/null +++ b/icns-rs/src/packbits.rs @@ -0,0 +1,268 @@ +/// To denote that a byte is repeated, the first byte of a sequence +/// must be greater or equal to 128. A byte is 255 so because of this +/// 255 - 128 = 127 is the maximum amount of bytes that can be repeated. +/// When a byte is repeated, it is repeated at least 3 times. +/// So add 3 to the maximum amount of bytes that can be repeated. +const MAX_REPEAT: usize = 130; +const ENCODE_REPEAT: u8 = 128; + +/// # ICNS PackBits(like) compression +/// Apple uses a format simular to PackBits to compress the image data. +/// PackBits is a lossless compression format that is used in TIFF files +/// since system 6.0.5. +/// This implementation is based on the javascript implementation by +/// @fiahfy/packbits https://github.com/fiahfy/packbits +/// +/// ```rust +/// let data = vec![ +/// 0x01, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05 +/// ]; +/// +/// let compressed = icns_rs::packbits::compress(data.into_boxed_slice()); +/// +/// assert_eq!( +/// compressed, +/// vec![0x02, 0x01, 0x02, 0x02, 0x80, 0x03, 0x81, 0x04, 0x82, 0x05] +/// .into_boxed_slice() +/// ); +pub fn compress(raw: Box<[u8]>) -> Box<[u8]> { + let mut buffers: Vec> = vec![]; + + // I'd be happy to use a iterator here + // FIXME: This is a mess + let mut i = 0; + while i < raw.len() { + let byte = &raw[i]; + // Check if last 1 or 2 bytes + if i + 2 >= raw.len() { + let length = raw.len() - i; + let mut buffer = Vec::with_capacity(1); + buffer.push(length as u8 - 1); + buffers.push(buffer.into_boxed_slice()); + buffers.push(raw[i..].to_vec().into_boxed_slice()); + break; + } + + // Should be repeated if the next 2 bytes are the same + let should_repeat = byte == &raw[i + 1] && byte == &raw[i + 2]; + + if should_repeat { + let mut repeat_to = i + 2; + + while repeat_to + 1 < raw.len() + && byte == &raw[repeat_to + 1] + && repeat_to - i + 1 < MAX_REPEAT + { + repeat_to += 1; + } + + repeat_to += 1; + + let length = repeat_to - i; // + 1 because the first byte is also included + + let mut buffer = Vec::with_capacity(2); + buffer.push(length as u8 - 3 + ENCODE_REPEAT); + buffer.push(byte.clone()); + + buffers.push(buffer.into_boxed_slice()); + + // Skip the repeated bytes + i = repeat_to; + } else { + // Should not be repeated + let mut buffer_to = i + 2; + // ^^ Minimum length is 2 (that's why we check if we're at the last 2 bytes) + let mut repeats = 1; + let mut repeat_index = buffer_to; + + while buffer_to + 1 < raw.len() && buffer_to - i + 1 < ENCODE_REPEAT as usize { + if &raw[buffer_to] == &raw[repeat_index] { + repeats += 1; + // If we have 2 repeats, we can stop + // It would be better to check to compress + if repeats > 2 { + break; + } + } else { + repeats = 1; + repeat_index = buffer_to; + } + + buffer_to += 1; + } + buffer_to += 1; + if repeats > 2 { + buffer_to -= 3; + } + + let length = buffer_to - i; + let mut buffer = Vec::with_capacity(length + 1); + buffer.push(length as u8 - 1); + buffer.extend_from_slice(&raw[i..buffer_to]); + + buffers.push(buffer.into_boxed_slice()); + + i = buffer_to; + } + } + + // Compact the buffers into a single buffer + let mut buffer = Vec::with_capacity(buffers.iter().map(|b| b.len()).sum()); + for b in buffers { + buffer.extend_from_slice(&b); + } + + buffer.into_boxed_slice() +} + +/// # ICNS PackBits(like) decompression +/// Apple uses a format simular to PackBits to compress the image data. +/// PackBits is a lossless compression format that is used in TIFF files +/// since system 6.0.5. +/// This implementation is based on the javascript implementation by +/// @fiahfy/packbits https://github.com/fiahfy/packbits +/// +/// The implementation was slightly modified to work because unlike the +/// PackBits format, the image format does not have an escape byte of +/// 255 / 0xFF. I think the author of the javascript implementation +/// forgot to remove the escape byte in the icns version. +/// +/// ```rust +/// let data = vec![0x02, 0x01, 0x02, 0x02, 0x80, 0x03, 0x81, 0x04, 0x82, 0x05]; +/// +/// let decompressed = icns_rs::packbits::decompress(data.into_boxed_slice()); +/// +/// assert_eq!( +/// decompressed, +/// vec![ +/// 0x01, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, +/// 0x05 +/// ] +/// .into_boxed_slice() +/// ); +/// ``` +pub fn decompress(data: Box<[u8]>) -> Box<[u8]> { + let mut buffers: Vec> = vec![]; + + // FIXME: Don't use a loop + let mut i = 0; + while i < data.len() { + // We know it's compressed if the first byte is greater or equal to 128 + if data[i] >= ENCODE_REPEAT { + // How many times the byte is repeated + let repeats = data[i] - ENCODE_REPEAT + 3; + // ^^ + 3 because the first byte is also included + let byte = data[i + 1]; + + let mut buffer = Vec::with_capacity(repeats as usize); + for _ in 0..repeats { + buffer.push(byte); + } + + buffers.push(buffer.into_boxed_slice()); + + i += 2; // Compressed bytes are always 2 bytes long + } else { + // Not compressed + let length = data[i] as usize + 1; + let mut buffer = Vec::with_capacity(length); + buffer.extend_from_slice(&data[i + 1..i + length + 1]); + + buffers.push(buffer.into_boxed_slice()); + + i += length + 1; + } + } + + // Compact the buffers into a single buffer + let mut buffer = Vec::with_capacity(buffers.iter().map(|b| b.len()).sum()); + for b in buffers { + buffer.extend_from_slice(&b); + } + + buffer.into_boxed_slice() +} + +#[cfg(test)] +mod tests { + use super::*; + + const BASIC_RAW: [u8; 15] = [ + 0x01, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, + ]; + const BASIC_COMPRESSED: [u8; 10] = [0x02, 0x01, 0x02, 0x02, 0x80, 0x03, 0x81, 0x04, 0x82, 0x05]; + + const STRESS_REPEAT_RAW: [u8; 131] = [0x01; 131]; + const STRESS_REPEAT_COMPRESSED: [u8; 4] = [0xFF, 0x01, 0x00, 0x01]; + + const STRESS_NO_REPEAT_RAW: [u8; 131] = [ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, + 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, + 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, + 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, + 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, + 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, + 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, + ]; + const STRESS_NO_REPEAT_COMPRESSED: [u8; 133] = [ + 0x7f, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, + 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, + 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, + 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, + 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, + 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, + 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, + 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, + 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x02, 0x80, 0x81, 0x82, + ]; + + #[test] + fn compress_basic() { + assert_eq!( + compress(BASIC_RAW.to_vec().into_boxed_slice()), + BASIC_COMPRESSED.to_vec().into_boxed_slice() + ); + } + + #[test] + fn compress_stress_repeat() { + assert_eq!( + compress(STRESS_REPEAT_RAW.to_vec().into_boxed_slice()), + STRESS_REPEAT_COMPRESSED.to_vec().into_boxed_slice() + ); + } + + #[test] + fn compress_stress_no_repeat() { + assert_eq!( + compress(STRESS_NO_REPEAT_RAW.to_vec().into_boxed_slice()), + STRESS_NO_REPEAT_COMPRESSED.to_vec().into_boxed_slice() + ); + } + + #[test] + fn decompress_basic() { + assert_eq!( + decompress(BASIC_COMPRESSED.to_vec().into_boxed_slice()), + BASIC_RAW.to_vec().into_boxed_slice() + ); + } + + #[test] + fn decompress_stress_repeat() { + assert_eq!( + decompress(STRESS_REPEAT_COMPRESSED.to_vec().into_boxed_slice()), + STRESS_REPEAT_RAW.to_vec().into_boxed_slice() + ); + } + + #[test] + fn decompress_stress_no_repeat() { + assert_eq!( + decompress(STRESS_NO_REPEAT_COMPRESSED.to_vec().into_boxed_slice()), + STRESS_NO_REPEAT_RAW.to_vec().into_boxed_slice() + ); + } +}