use crate::error::Error;
use crate::metadata::Metadata;
use crate::metadata::MetadataRead;
use std::io::Read;
use std::io::Seek;
#[derive(Debug)]
pub struct Cart<T: Read + Seek> {
pub metadata: Metadata,
io: T,
}
impl<T: Read + Seek> Cart<T> {
pub fn try_from(io: T) -> Result<Self, Error> {
let mut io = io;
Ok(Self {
metadata: io.read_nds_header()?,
io,
})
}
pub fn header_checksum(&mut self) -> Result<u16, Error> {
self.metadata.header_checksum(&mut self.io)
}
pub fn extract_rgba_icon(&mut self) -> Result<Vec<u8>, Error> {
self.metadata.extract_rgba_icon(&mut self.io)
}
}