This commit is contained in:
2025-06-11 21:39:13 +08:00
parent b4f806f5d5
commit d6b6ea32a7
2 changed files with 9 additions and 9 deletions

View File

@@ -4,7 +4,7 @@ use anyhow::Result;
use std::io::Write; use std::io::Write;
pub struct LZWDecoder<'a> { pub struct LZWDecoder<'a> {
m_input: BitStream<'a>, m_input: MsbBitStream<'a>,
m_output_size: u32, m_output_size: u32,
} }
@@ -12,7 +12,7 @@ impl<'a> LZWDecoder<'a> {
pub fn new(input: &'a [u8]) -> Result<Self> { pub fn new(input: &'a [u8]) -> Result<Self> {
let mut input_reader = MemReaderRef::new(input); let mut input_reader = MemReaderRef::new(input);
let size = input_reader.peek_u32_be_at(0x4)?; let size = input_reader.peek_u32_be_at(0x4)?;
let m_input = BitStream::new(MemReaderRef::new(&input[0x8..])); let m_input = MsbBitStream::new(MemReaderRef::new(&input[0x8..]));
Ok(LZWDecoder { Ok(LZWDecoder {
m_input, m_input,
m_output_size: size, m_output_size: size,
@@ -85,7 +85,7 @@ impl LZWEncoder {
pub fn encode(mut self, input: &[u8], fake: bool) -> Result<Vec<u8>> { pub fn encode(mut self, input: &[u8], fake: bool) -> Result<Vec<u8>> {
self.buf.write_all(b"acp\0")?; self.buf.write_all(b"acp\0")?;
self.buf.write_u32_be(input.len() as u32)?; self.buf.write_u32_be(input.len() as u32)?;
let mut writer = BitWriter::new(&mut self.buf); let mut writer = MsbBitWriter::new(&mut self.buf);
if fake { if fake {
for i in 0..input.len() { for i in 0..input.len() {
if i > 0 && i % 0x4000 == 0 { if i > 0 && i % 0x4000 == 0 {

View File

@@ -2,15 +2,15 @@ use crate::ext::io::*;
use anyhow::Result; use anyhow::Result;
use std::io::Write; use std::io::Write;
pub struct BitStream<'a> { pub struct MsbBitStream<'a> {
m_input: MemReaderRef<'a>, m_input: MemReaderRef<'a>,
m_bits: u32, m_bits: u32,
m_cached_bits: u32, m_cached_bits: u32,
} }
impl<'a> BitStream<'a> { impl<'a> MsbBitStream<'a> {
pub fn new(input: MemReaderRef<'a>) -> Self { pub fn new(input: MemReaderRef<'a>) -> Self {
BitStream { MsbBitStream {
m_input: input, m_input: input,
m_bits: 0, m_bits: 0,
m_cached_bits: 0, m_cached_bits: 0,
@@ -30,15 +30,15 @@ impl<'a> BitStream<'a> {
} }
} }
pub struct BitWriter<'a, T: Write> { pub struct MsbBitWriter<'a, T: Write> {
writer: &'a mut T, writer: &'a mut T,
buffer: u32, buffer: u32,
buffer_size: u32, buffer_size: u32,
} }
impl<'a, T: Write> BitWriter<'a, T> { impl<'a, T: Write> MsbBitWriter<'a, T> {
pub fn new(writer: &'a mut T) -> Self { pub fn new(writer: &'a mut T) -> Self {
BitWriter { MsbBitWriter {
writer, writer,
buffer: 0, buffer: 0,
buffer_size: 0, buffer_size: 0,