summaryrefslogtreecommitdiff
path: root/src/format/image/bmp.c
diff options
context:
space:
mode:
authorTazyFoundSoup <gardendistrict0x0@outlook.com>2026-03-30 16:23:36 +1100
committerTazyFoundSoup <gardendistrict0x0@outlook.com>2026-03-30 16:23:36 +1100
commit6cc87516ad51720e1f49973c6bec5d13f396a451 (patch)
tree1b60f3b4f303471664018bce1333772c3b4332d2 /src/format/image/bmp.c
parent92bea06509b97d951ba9a8c7a9eee9dfcc79e2d6 (diff)
feat(png, bmp): Pass context to debug messaging
Diffstat (limited to 'src/format/image/bmp.c')
-rw-r--r--src/format/image/bmp.c57
1 files changed, 28 insertions, 29 deletions
diff --git a/src/format/image/bmp.c b/src/format/image/bmp.c
index 11afa2d..4bc945b 100644
--- a/src/format/image/bmp.c
+++ b/src/format/image/bmp.c
@@ -2,82 +2,81 @@
#include <tinyff/dbg.h>
#include <tinyff/result.h>
-ff_result ff_bmp_isvalid(ff_stream* stream)
+ff_result ff_bmp_isvalid(ff_ctx* ctx, ff_stream* stream)
{
- ff_dprintf("png: validating signature\n");
+ ff_dprintf(ctx, "png: validating signature\n");
char raw_sig[2];
if (stream->read(raw_sig, 2, stream->user) != 2) {
- ff_dprintf("bmp: failed to read signature bytes\n");
+ ff_dprintf(ctx, "bmp: failed to read signature bytes\n");
return FF_RESULT_ERROR_INVALID_FILE;
}
- ff_dprintf(
- "bmp: signature read: %02X %02X \n",
- raw_sig[0], raw_sig[1]
+ ff_dprintf(ctx, // TODO: fix formatting
+ "bmp: signature read \n"
);
if (memcmp(raw_sig, BMP_SIGNATURE, 2) != 0) {
- ff_dprintf("bmp: signature mismatch\n");
+ ff_dprintf(ctx, "bmp: signature mismatch\n");
return FF_RESULT_ERROR_INVALID_PNG_SIGNATURE;
}
- ff_dprintf("bmp: signature valid\n");
+ ff_dprintf(ctx, "bmp: signature valid\n");
return FF_RESULT_OK;
}
-ff_result ff_open_bmp(ff_stream *stream, ff_bmp_ctx **out_ctx, ff_flag require_valid)
+ff_result ff_open_bmp(ff_ctx* ctx, ff_stream *stream, ff_bmp_ctx **out_ctx, ff_flag require_valid)
{
- ff_bmp_ctx *ctx = malloc(sizeof(ff_bmp_ctx));
+ ff_bmp_ctx *bmp_ctx = ctx->allocator.ff_alloc(sizeof(ff_bmp_ctx));
if (!ctx) return FF_RESULT_ERROR_MEMORY_ALLOCATION;
// Init
memset(ctx, 0, sizeof(*ctx));
- ctx->raw = stream;
- ctx->last_error = FF_RESULT_OK;
+ bmp_ctx->raw = stream;
+ bmp_ctx->last_error = FF_RESULT_OK;
- if (ctx->raw->read == NULL) {
- ff_dprintf("bmp: stream failed to read\n");
- free(ctx);
+ if (bmp_ctx->raw->read == NULL) {
+ ff_dprintf(ctx, "bmp: stream failed to read\n");
+ ctx->allocator.ff_free(bmp_ctx);
return FF_RESULT_ERROR_READ_FILE_FAILURE;
}
- ff_dprintf("bmp: stream read successfully\n");
+ ff_dprintf(ctx, "bmp: stream read successfully\n");
if (require_valid) {
- ff_result res = ff_bmp_isvalid(ctx->raw);
+ ff_result res = ff_bmp_isvalid(ctx, bmp_ctx->raw);
if (res != FF_RESULT_OK) {
- ff_dprintf("bmp: validation failed (%d)\n", res);
- free(ctx);
+ ff_dprintf(ctx, "bmp: validation failed\n"); // TODO: Formatting
+ ctx->allocator.ff_free(bmp_ctx);
return res;
}
}
- ff_dprintf("bmp: validation passed\n");
- ctx->valid = true;
+ ff_dprintf(ctx, "bmp: validation passed\n");
+ bmp_ctx->valid = true;
- *out_ctx = ctx;
- ff_dprintf("bmp: open_bmp reached WIP end\n");
+ *out_ctx = bmp_ctx;
+ ff_dprintf(ctx, "bmp: open_bmp reached WIP end\n");
return FF_RESULT_WARN_NO_IMPL;
}
-ff_result ff_bmp_header_handler(uint8_t *buf, size_t len, ff_bmp_ctx *ctx) {
+ff_result ff_bmp_header_handler(ff_ctx* ctx, uint8_t *buf, size_t len, ff_bmp_ctx *bmp_ctx) {
(void) buf;
- (void) ctx;
-
+ (void) bmp_ctx;
+
if (len != FF_BMP_HEADER_SIZE) {
- ff_dprintf("bmp: bitmap header is not correct size (expected 14, got %d)\n", len);
- ctx->last_error = FF_RESULT_ERROR_INVALID_BMP_HEADER;
+ ff_dprintf(ctx, "bmp: bitmap header is not correct size (expected 14, got [n length])\n"); // TODO: formatting
+ bmp_ctx->last_error = FF_RESULT_ERROR_INVALID_BMP_HEADER;
return FF_RESULT_ERROR_INVALID_BMP_HEADER;
}
// We've already read the signiture so we just jump straight to
// the fileSize part
- ctx->file_size = buf[4];
+ bmp_ctx->file_size = buf[4];
return FF_RESULT_WARN_NO_IMPL;
} \ No newline at end of file