mirror of
https://github.com/WerWolv/ImHex-Patterns.git
synced 2026-03-28 07:47:02 -05:00
patterns: Added APNG support to PNG pattern (#53)
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
#pragma MIME image/png
|
||||
#pragma endian big
|
||||
#pragma pattern_limit 0
|
||||
|
||||
struct header_t {
|
||||
u8 highBitByte;
|
||||
@@ -88,6 +87,33 @@ fn text_len() {
|
||||
return len;
|
||||
};
|
||||
|
||||
enum BlendOp: u8 {
|
||||
Source = 0x0,
|
||||
Over
|
||||
};
|
||||
|
||||
enum DisposeOp: u8 {
|
||||
None = 0x0,
|
||||
Background,
|
||||
Previous
|
||||
};
|
||||
|
||||
struct fctl_t {
|
||||
u32 sequence_no [[comment("Sequence №")]];
|
||||
u32 width [[comment("Frame width")]];
|
||||
u32 height [[comment("Frame height")]];
|
||||
u32 xoff;
|
||||
u32 yoff;
|
||||
u16 delay_num [[comment("Frame delay fraction numerator")]];
|
||||
u16 delay_den [[comment("Frame delay fraction denominator")]];
|
||||
DisposeOp dispose_op;
|
||||
BlendOp blend_op;
|
||||
};
|
||||
|
||||
struct fdat_t {
|
||||
u32 sequence_no;
|
||||
};
|
||||
|
||||
struct itxt_t {
|
||||
char keyword[];
|
||||
u8 compression_flag;
|
||||
@@ -145,18 +171,20 @@ struct chunk_t {
|
||||
sRGB srgb;
|
||||
} else if (name == pHYs_k) {
|
||||
phys_t phys;
|
||||
} else if (name == acTL_k) {
|
||||
actl_t actl;
|
||||
} else if (name == fcTL_k) {
|
||||
} else if (type == acTL_k) {
|
||||
actl_t actl [[comment("Animation control chunk")]];
|
||||
} else if (type == fcTL_k) {
|
||||
fctl_t fctl [[comment("Frame control chunk")]];
|
||||
} else if (name == iTXt_k) {
|
||||
} else if (type == iTXt_k) {
|
||||
itxt_t text;
|
||||
} else if (type == gAMA_k) {
|
||||
u32 gamma [[name("image gamma"), comment("4 byte unsigned integer representing gamma times 100000")]];
|
||||
} else if (type == iCCP_k) {
|
||||
iccp_t iccp;
|
||||
} else if (name == tEXt_k) {
|
||||
text_t text;
|
||||
} else if (name == zTXt_k) {
|
||||
ztxt_t text;
|
||||
} else if (name == gAMA_k) {
|
||||
u32 gamma [[name("image gamma"), comment("4 byte unsigned integer representing gamma times 100000")]];
|
||||
} else if (name == iCCP_k) {
|
||||
iccp_t iccp;
|
||||
} else if (name == fdAT_k) {
|
||||
@@ -180,6 +208,4 @@ struct chunk_set {
|
||||
header_t header @ 0x00 [[comment("PNG file signature"), name("Signature")]];
|
||||
chunk_t ihdr_chunk @ 0x08 [[comment("PNG Header chunk"), name("IHDR")]];
|
||||
chunk_set set @ $ [[comment("PNG Chunks"), name("Chunks"), inline]];
|
||||
chunk_t iend_chunk @ $ [[comment("Image End Chunk"), name("IEND")]];
|
||||
|
||||
// vim: syntax=rust
|
||||
chunk_t iend_chunk @ $ [[comment("Image End Chunk"), name("IEND")]];
|
||||
Reference in New Issue
Block a user