blob: 0375a24d36ba9fea643623cdfb1bdcf2f3f3e991 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
#include <lib/data/image_types.h>
#include <stdlib.h>
Image* create_image(size_t width, size_t height)
{
Image* ip = (Image*)malloc(sizeof(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;
}
ImageMask* create_image_mask(size_t width, size_t height)
{
ImageMask* ip = (ImageMask*)malloc(sizeof(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(Image* image)
{
if (image->image[0] != NULL) {
free(image->image[0]);
image->image[0] = NULL;
}
if (image->image != NULL) {
free(image->image);
image->image = NULL;
}
if (image != NULL) {
free(image);
}
}
void free_image_mask(ImageMask* image_mask)
{
if (image_mask->mask[0] != NULL) {
free(image_mask->mask[0]);
image_mask->mask[0] = NULL;
}
if (image_mask->mask != NULL) {
free(image_mask->mask);
image_mask->mask = NULL;
}
if (image_mask != NULL) {
free(image_mask);
}
}
|