tiffread/src/image/image.c

46 lines
937 B
C

#include "image.h"
#include "mem_allocator.h"
#include "mem_libc.h"
#include <stddef.h>
#include <string.h>
Image *create_image(u64 width, u64 height, Pixel *data,
const Allocator *allocator) {
Allocator alloc;
if (!allocator) {
alloc = wapp_mem_libc_allocator();
} else {
alloc = *allocator;
}
u64 buf_length = width * height;
u64 total_size = sizeof(Image) + sizeof(Pixel) * buf_length;
Image *img = wapp_mem_allocator_alloc(&alloc, total_size);
if (!img) {
return NULL;
}
img->width = width;
img->height = height;
img->buf_length = buf_length;
memcpy(img->data, data, buf_length);
return img;
}
void destroy_image(Image **img, const Allocator *allocator) {
if (!img || !(*img)) {
return;
}
Allocator alloc;
if (!allocator) {
alloc = wapp_mem_libc_allocator();
} else {
alloc = *allocator;
}
wapp_mem_allocator_free(&alloc, (void **)img);
}