From df7606101ae9a04c72b1b7172f2250e1be7ff271 Mon Sep 17 00:00:00 2001 From: Christian C Date: Sat, 22 Mar 2025 22:40:26 -0700 Subject: New Types --- lib/data/image_types.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'lib/data') diff --git a/lib/data/image_types.c b/lib/data/image_types.c index 2af5a79..f96b631 100644 --- a/lib/data/image_types.c +++ b/lib/data/image_types.c @@ -1 +1,42 @@ #include +#include + +struct Image* create_image(size_t width, size_t height) +{ + struct Image* ip = (struct Image*)malloc(sizeof(struct Image)); + ip->width = width; + ip->height = height; + ip->image = (ImageData_t**)malloc(sizeof(ImageData_t*) * ip->height); + ImageData_t* image_data = calloc(width*height, sizeof(ImageData_t)); + for (size_t y = 0; y < height; y++) { + ip->image[y] = &image_data[y*width]; + } + return ip; +} + +struct ImageMask* create_image_mask(size_t width, size_t height) +{ + struct ImageMask* ip = (struct ImageMask*)malloc(sizeof(struct ImageMask)); + ip->width = width; + ip->height = height; + ip->mask = (ImageMaskData_t**)malloc(sizeof(ImageMaskData_t*) * ip->height); + ImageMaskData_t* image_data = calloc(width*height, sizeof(ImageMaskData_t)); + for (size_t y = 0; y < height; y++) { + ip->mask[y] = &image_data[y*width]; + } + return ip; +} + +void free_image(struct Image* image) +{ + free(image->image[0]); + free(image->image); + free(image); +} + +void free_image_mask(struct ImageMask* image_mask) +{ + free(image_mask->mask[0]); + free(image_mask->mask); + free(image_mask); +} -- cgit v1.2.1