From 5d8804fdebedf90ac0c5f4c8f301bb48dfd16e69 Mon Sep 17 00:00:00 2001 From: Andrew Haynes Date: Sun, 22 Mar 2026 18:27:51 -0400 Subject: [PATCH] API: created helper functions to inherit image formats --- include/image/imgio.h | 10 ++++++++-- src/imgio.c | 35 +++++++++++++++++++++++++++++------ 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/include/image/imgio.h b/include/image/imgio.h index c3db9bd..f4950a4 100644 --- a/include/image/imgio.h +++ b/include/image/imgio.h @@ -16,9 +16,15 @@ int jpeg_save(const unsigned int* src_buf, const JPEG* attr, const char* name); void -ppm_to_jpeg(PPM* in, JPEG* out); +transcode_to_jpeg(PPM* in, JPEG* out); void -jpeg_to_ppm(JPEG* input, PPM* out); +transcode_to_ppm(JPEG* input, PPM* out); + +PPM +inherit_from_jpeg(const JPEG* in, const char fmt); + +JPEG +inherit_from_ppm(const PPM* in); #endif diff --git a/src/imgio.c b/src/imgio.c index ecc6b19..c9e0c2a 100644 --- a/src/imgio.c +++ b/src/imgio.c @@ -189,20 +189,43 @@ jpeg_save(const unsigned int* src_buf, const JPEG* attr, const char* name) } void -ppm_to_jpeg(PPM* in, JPEG* out) +transcode_to_jpeg(PPM* in, JPEG* out) { - unsigned int* src_buf = ppm_load(in->name, in); + unsigned int* dst = ppm_load(in->name, in); out->width = in->width; out->height = in->height; - jpeg_save(src_buf, out, out->name); + jpeg_save(dst, out, out->name); + free(dst); } void -jpeg_to_ppm(JPEG* input, PPM* out) +transcode_to_ppm(JPEG* input, PPM* out) { - unsigned int* src_buf = jpeg_load(input); + unsigned int* dst = jpeg_load(input); out->width = input->width; out->height = input->height; out->len = out->width * out->height; - ppm_save(src_buf, *out); + ppm_save(dst, *out); + free(dst); +} + +PPM +inherit_from_jpeg(const JPEG* in, const char fmt) { + PPM image = { + .width = in->width, + .height = in->height, + .len = in->width * in->height, + .fmt = fmt + }; + return image; +} + +JPEG +inherit_from_ppm(const PPM* in) { + JPEG image = { + .width = in->width, + .height = in->height, + .len = in->width * in->height, + }; + return image; }