From dae2785adc70ddb625780952dbbc085fc1114ca1 Mon Sep 17 00:00:00 2001 From: Watson Wheeler Date: Sun, 28 Jun 2026 20:08:06 +1000 Subject: wip! palette chunk writing --- include/tinyff/image/png.h | 5 ++--- src/format/image/png.c | 8 ++++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/include/tinyff/image/png.h b/include/tinyff/image/png.h index 91ec477..5488d37 100644 --- a/include/tinyff/image/png.h +++ b/include/tinyff/image/png.h @@ -65,9 +65,6 @@ typedef struct { } ff_png_chunk_handler; // Handler declarations -// Massive W.I.P - -// Required by definition ff_result ff_png_header_handler(ff_ctx* ctx, uint8_t *buf, size_t len, ff_png_ctx* png_ctx); // IHDR ff_result ff_png_palette_handler(ff_ctx* ctx, uint8_t *buf, size_t len, ff_png_ctx* png_ctx); // PLTE ff_result ff_png_data_handler(ff_ctx* ctx, uint8_t *buf, size_t len, ff_png_ctx* png_ctx); // IDAT @@ -83,6 +80,8 @@ extern const ff_png_chunk_handler ff_png_chunk_handlers[]; // Encoding helpers ff_result ff_write_chunk(ff_stream *stream, const char *type, uint8_t *buf, size_t len); +// Ancillary chunks encoding helpers +ff_result ff_write_plte_chunk(ff_ctx *ctx, ff_stream *stream, ff_png_ctx *png_ctx); ff_result ff_png_isvalid(ff_ctx* ctx, ff_stream *stream); ff_result ff_open_png(ff_ctx* ctx, ff_stream *stream, ff_png_ctx **out_ctx, ff_flag require_valid); diff --git a/src/format/image/png.c b/src/format/image/png.c index 535c539..94454d6 100644 --- a/src/format/image/png.c +++ b/src/format/image/png.c @@ -528,6 +528,14 @@ ff_result ff_encode_png(ff_ctx *ctx, ff_png_ctx *png_ctx, ff_stream *stream) return FF_RESULT_WARN_NO_IMPL; } +ff_result ff_write_plte_chunk(ff_ctx *ctx, ff_stream *stream, ff_png_ctx *png_ctx) +{ + uint8_t* pltebuf = ctx->allocator.ff_alloc(png_ctx->palette_size * 3) + for (uint8_t entry = 0; entry < png_ctx->palette_size; entry += 4) { + + } +} + ff_result ff_png_normalize(ff_ctx *ctx, ff_png_ctx *png_ctx, ff_image_ctx **out_data, ff_flag consume) { if (png_ctx->bit_depth != 8) return FF_RESULT_WARN_NO_IMPL; -- cgit v1.2.3