aseprite_loader/binary/
chunk_type.rs

1use nom::combinator::map;
2use strum::FromRepr;
3
4use super::{errors::ParseResult, scalars::word};
5
6#[derive(FromRepr, Debug, Copy, Clone)]
7pub enum ChunkType {
8    Palette0004 = 0x0004,
9    Palette0011 = 0x0011,
10    Layer = 0x2004,
11    Cel = 0x2005,
12    CelExtra = 0x2006,
13    ColorProfile = 0x2007,
14    ExternalFile = 0x2008,
15    Mask = 0x2016,
16    Path = 0x2017,
17    Tags = 0x2018,
18    Palette = 0x2019,
19    UserData = 0x2020,
20    Slice = 0x2022,
21    Tileset = 0x2023,
22}
23
24pub fn parse_chunk_type(input: &[u8]) -> ParseResult<'_, Result<ChunkType, u16>> {
25    map(word, |n| ChunkType::from_repr(n.into()).ok_or(n))(input)
26}