mirror of
https://github.com/echo-devim/huextract.git
synced 2024-10-18 01:24:17 +00:00
Implement Display for ImgHeader
This commit is contained in:
parent
9d93690f2c
commit
36dde9f332
2 changed files with 24 additions and 18 deletions
|
@ -20,7 +20,7 @@
|
|||
use crate::local_error::Error;
|
||||
use crate::utils::remove_null_bytes;
|
||||
|
||||
mod display;
|
||||
pub mod display;
|
||||
|
||||
#[derive(Default, Clone)]
|
||||
pub struct ImgHeader {
|
||||
|
|
|
@ -6,7 +6,7 @@ use tabled::{Table, Tabled};
|
|||
use crate::tabled_types::{ArrayValue, HexValue};
|
||||
|
||||
#[derive(Tabled)]
|
||||
struct TableEntry {
|
||||
pub struct TableEntry {
|
||||
#[tabled(rename = "Header size (bytes)")]
|
||||
header_len: u32,
|
||||
#[tabled(rename = "Unknown field")]
|
||||
|
@ -37,24 +37,30 @@ struct TableEntry {
|
|||
file_checksum_size: u32,
|
||||
}
|
||||
|
||||
impl From<&ImgHeader> for TableEntry {
|
||||
fn from(header: &ImgHeader) -> Self {
|
||||
TableEntry {
|
||||
header_len: u32::from_le_bytes(header.header_len),
|
||||
unknown_field: ArrayValue::from(header.unknown_field.as_slice()),
|
||||
hardware_id: ArrayValue::from(header.hardware_id.as_slice()),
|
||||
file_sequence: ArrayValue::from(header.file_sequence.as_slice()),
|
||||
file_size: u32::from_le_bytes(header.file_size),
|
||||
file_date: ArrayValue::from(header.file_date.as_slice()),
|
||||
file_time: ArrayValue::from(header.file_time.as_slice()),
|
||||
file_type: header.filename_lossy(),
|
||||
blank_field1: ArrayValue::from(header.blank_field1.as_slice()),
|
||||
header_checksum: HexValue::from(header.header_checksum.as_slice()),
|
||||
blocksize_raw: ArrayValue::from(header.blocksize.as_slice()),
|
||||
blocksize: header.blocksize(),
|
||||
blank_field2: ArrayValue::from(header.blank_field2.as_slice()),
|
||||
file_checksum_size: header.file_checksum_size,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl std::fmt::Display for ImgHeader {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
let entries = TableEntry {
|
||||
header_len: u32::from_le_bytes(self.header_len),
|
||||
unknown_field: ArrayValue::from(self.unknown_field.as_slice()),
|
||||
hardware_id: ArrayValue::from(self.hardware_id.as_slice()),
|
||||
file_sequence: ArrayValue::from(self.file_sequence.as_slice()),
|
||||
file_size: u32::from_le_bytes(self.file_size),
|
||||
file_date: ArrayValue::from(self.file_date.as_slice()),
|
||||
file_time: ArrayValue::from(self.file_time.as_slice()),
|
||||
file_type: self.filename_lossy(),
|
||||
blank_field1: ArrayValue::from(self.blank_field1.as_slice()),
|
||||
header_checksum: HexValue::from(self.header_checksum.as_slice()),
|
||||
blocksize_raw: ArrayValue::from(self.blocksize.as_slice()),
|
||||
blocksize: self.blocksize(),
|
||||
blank_field2: ArrayValue::from(self.blank_field2.as_slice()),
|
||||
file_checksum_size: self.file_checksum_size,
|
||||
};
|
||||
let entries = TableEntry::from(self);
|
||||
let table = Table::new(vec![entries]);
|
||||
|
||||
write!(f, "{}", table)
|
||||
|
|
Loading…
Reference in a new issue