use super::parse_prelude::*;
use super::var::item::{DeltaSetIndexMap, ItemVariationStore};
pub const HVAR: Tag = Tag::new(b"HVAR");
#[derive(Copy, Clone)]
pub struct Hvar<'a>(Buffer<'a>);
impl<'a> Hvar<'a> {
pub fn new(data: &'a [u8]) -> Self {
Self(Buffer::new(data))
}
pub fn major_version(&self) -> u16 {
self.0.read(0).unwrap_or(0)
}
pub fn minor_version(&self) -> u16 {
self.0.read(2).unwrap_or(0)
}
pub fn ivs(&self) -> Option<ItemVariationStore<'a>> {
let offset = self.0.read_offset32(4, 0)?;
ItemVariationStore::new(self.0, offset)
}
pub fn advance_mapping(&self) -> Option<DeltaSetIndexMap<'a>> {
let offset = self.0.read_offset32(8, 0)?;
DeltaSetIndexMap::new(self.0, offset)
}
pub fn lsb_mapping(&self) -> Option<DeltaSetIndexMap<'a>> {
let offset = self.0.read_offset32(12, 0)?;
DeltaSetIndexMap::new(self.0, offset)
}
pub fn rsb_mapping(&self) -> Option<DeltaSetIndexMap<'a>> {
let offset = self.0.read_offset32(16, 0)?;
DeltaSetIndexMap::new(self.0, offset)
}
}