pub struct PsdReader<'a> {
pub buffer: &'a [u8],
pub offset: usize,
pub strict: bool,
pub debug: bool,
pub large: bool,
pub global_alpha: bool,
pub options: ReadOptions,
}Expand description
Состояние низкоуровневого ридера (зеркало TS interface PsdReader extends ReadOptions).
§Borrow vs owned
Буфер хранится как заимствованный срез &'a [u8]. Upstream держит
DataView поверх существующего ArrayBuffer и читает строго вперёд по
offset; данные он не модифицирует и владения ими не требует. Заимствованный
срез даёт ту же zero-copy семантику (readBytes возвращает под-срез исходного
буфера, как new Uint8Array(buffer, start, length) в upstream), без аллокаций
и без лишнего клонирования. Поэтому &'a [u8] предпочтительнее Vec<u8>.
TS DataView(buffer, offset, length) сдвигает базу представления; здесь это
учтено тем, что вызывающий передаёт уже подрезанный срез (как
createReader(buffer, offset, length) создаёт view на под-диапазон). Поле
offset — позиция курсора внутри buffer, ровно как reader.offset.
Fields§
§buffer: &'a [u8]§offset: usize§strict: bool§debug: bool§large: bool§global_alpha: bool§options: ReadOptionsImplementations§
Source§impl<'a> PsdReader<'a>
impl<'a> PsdReader<'a>
Sourcepub fn new(
buffer: &'a [u8],
offset: Option<usize>,
length: Option<usize>,
) -> PsdReader<'a>
pub fn new( buffer: &'a [u8], offset: Option<usize>, length: Option<usize>, ) -> PsdReader<'a>
Зеркало createReader(buffer, offset?, length?).
В upstream offset/length задают окно DataView; здесь это выражается
под-срезом buffer[offset..offset+length]. Если length не задан — до
конца буфера. Курсор (offset-поле) всегда начинается с 0 относительно
окна, как в upstream (offset: 0).