Ran cargo fmt

This commit is contained in:
G2-Games 2024-07-25 03:34:30 -05:00
parent b0e4037f2a
commit 85cc2dea22
7 changed files with 25 additions and 26 deletions

View file

@ -99,14 +99,15 @@ impl<'a, O: Write + WriteBytesExt> BitWriter<'a, O> {
panic!("Must write 1 or more bytes.") panic!("Must write 1 or more bytes.")
} }
self.output.write_all(&data.to_le_bytes()[..byte_len]).unwrap(); self.output
.write_all(&data.to_le_bytes()[..byte_len])
.unwrap();
self.byte_offset += byte_len; self.byte_offset += byte_len;
self.byte_size = self.byte_offset + (self.bit_offset + 7) / 8; self.byte_size = self.byte_offset + (self.bit_offset + 7) / 8;
} }
} }
/// A simple way to read individual bits from an input implementing [Read]. /// A simple way to read individual bits from an input implementing [Read].
pub struct BitReader<'a, I: Read + ReadBytesExt> { pub struct BitReader<'a, I: Read + ReadBytesExt> {
input: &'a mut I, input: &'a mut I,

1
src/compression/dct.rs Normal file
View file

@ -0,0 +1 @@

View file

@ -1,4 +1,7 @@
use std::{collections::HashMap, io::{Cursor, Read, Write}}; use std::{
collections::HashMap,
io::{Cursor, Read, Write},
};
use byteorder::{ReadBytesExt, WriteBytesExt, LE}; use byteorder::{ReadBytesExt, WriteBytesExt, LE};
@ -118,7 +121,7 @@ fn compress_lzw(data: &[u8], last: Vec<u8>) -> (usize, Vec<u8>, Vec<u8>) {
if dictionary_count >= 0x3FFFE { if dictionary_count >= 0x3FFFE {
count -= 1; count -= 1;
break break;
} }
} }
@ -145,10 +148,7 @@ fn compress_lzw(data: &[u8], last: Vec<u8>) -> (usize, Vec<u8>, Vec<u8>) {
(count, output_buf, last_element) (count, output_buf, last_element)
} }
pub fn decompress<T: ReadBytesExt + Read>( pub fn decompress<T: ReadBytesExt + Read>(input: &mut T, chunk_info: &CompressionInfo) -> Vec<u8> {
input: &mut T,
chunk_info: &CompressionInfo,
) -> Vec<u8> {
let mut output_buf: Vec<u8> = vec![]; let mut output_buf: Vec<u8> = vec![];
for block in &chunk_info.chunks { for block in &chunk_info.chunks {
@ -173,7 +173,6 @@ fn decompress_lzw(input_data: &[u8], size: usize) -> Vec<u8> {
} }
let mut dictionary_count = dictionary.len() as u64; let mut dictionary_count = dictionary.len() as u64;
let mut result = Vec::with_capacity(size); let mut result = Vec::with_capacity(size);
let data_size = input_data.len(); let data_size = input_data.len();

View file

@ -1 +0,0 @@
mod lossless;

View file

@ -1,5 +1,5 @@
use std::io::{Cursor, Write};
use byteorder::{WriteBytesExt, LE}; use byteorder::{WriteBytesExt, LE};
use std::io::{Cursor, Write};
pub struct Header { pub struct Header {
pub magic: [u8; 8], pub magic: [u8; 8],

View file

@ -1,23 +1,24 @@
mod compression { mod compression {
pub mod dct;
pub mod lossless; pub mod lossless;
} }
mod binio;
mod header; mod header;
mod operations; mod operations;
mod binio;
mod picture; mod picture;
use std::{fs::File, io::{BufReader, BufWriter}, time::Instant};
use picture::DangoPicture; use picture::DangoPicture;
use std::{
fs::File,
io::{BufReader, BufWriter},
time::Instant,
};
use image::RgbaImage; use image::RgbaImage;
fn main() { fn main() {
let image_data = image::open("littlespace.png").unwrap().to_rgba8(); let image_data = image::open("littlespace.png").unwrap().to_rgba8();
let encoded_dpf = DangoPicture::from_raw( let encoded_dpf = DangoPicture::from_raw(image_data.width(), image_data.height(), &image_data);
image_data.width(),
image_data.height(),
&image_data
);
let timer = Instant::now(); let timer = Instant::now();
let mut outfile = BufWriter::new(File::create("test.dpf").unwrap()); let mut outfile = BufWriter::new(File::create("test.dpf").unwrap());
@ -32,7 +33,8 @@ fn main() {
let out_image = RgbaImage::from_raw( let out_image = RgbaImage::from_raw(
decoded_dpf.header.width, decoded_dpf.header.width,
decoded_dpf.header.height, decoded_dpf.header.height,
decoded_dpf.bitmap.into() decoded_dpf.bitmap.into(),
).unwrap(); )
.unwrap();
out_image.save("test.png").unwrap(); out_image.save("test.png").unwrap();
} }

View file

@ -6,7 +6,7 @@ use thiserror::Error;
use crate::{ use crate::{
compression::lossless::{compress, decompress, ChunkInfo, CompressionInfo}, compression::lossless::{compress, decompress, ChunkInfo, CompressionInfo},
header::Header, header::Header,
operations::{diff_line, line_diff} operations::{diff_line, line_diff},
}; };
pub struct DangoPicture { pub struct DangoPicture {
@ -45,7 +45,7 @@ impl DangoPicture {
input.read_exact(&mut magic).unwrap(); input.read_exact(&mut magic).unwrap();
if magic != *b"dangoimg" { if magic != *b"dangoimg" {
return Err(Error::InvalidIdentifier(magic)) return Err(Error::InvalidIdentifier(magic));
} }
let header = Header { let header = Header {
@ -70,10 +70,7 @@ impl DangoPicture {
let bitmap = line_diff(header.width, header.height, &preprocessed_bitmap); let bitmap = line_diff(header.width, header.height, &preprocessed_bitmap);
Ok(DangoPicture { Ok(DangoPicture { header, bitmap })
header,
bitmap
})
} }
pub fn from_raw(width: u32, height: u32, bitmap: &[u8]) -> Self { pub fn from_raw(width: u32, height: u32, bitmap: &[u8]) -> Self {