From 759708d446d691094fbbd01117fc7cba1d42f64a Mon Sep 17 00:00:00 2001 From: Nik Date: Mon, 3 Jul 2023 22:06:48 +0200 Subject: [PATCH] patterns/png: Automatically name PNG chunks --- patterns/png.hexpat | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/patterns/png.hexpat b/patterns/png.hexpat index 980ac33..fe5999c 100644 --- a/patterns/png.hexpat +++ b/patterns/png.hexpat @@ -170,7 +170,7 @@ struct chunk_t { } u32 crc; -} [[format("chunkValueName")]]; +} [[name(chunkValueName(this))]]; fn chunkValueName(ref chunk_t chunk) { return chunk.name; @@ -180,8 +180,12 @@ struct chunk_set { chunk_t chunks[while(builtin::std::mem::read_string($ + 4, 4) != "IEND")] [[inline]]; } [[inline]]; +struct Chunks { + chunk_t ihdr_chunk [[comment("PNG Header chunk")]]; + chunk_set set [[comment("PNG Chunks"), name("Chunks"), inline]]; + chunk_t iend_chunk [[comment("Image End Chunk")]]; +}; + u8 visualizer[std::mem::size()] @ 0x00 [[sealed, hex::visualize("image", this)]]; 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")]]; \ No newline at end of file +Chunks chunks @ 0x08 [[name("Chunks")]]; \ No newline at end of file