minishell/stdme/src/img/qoi/qoi_encode.c
2024-04-28 19:59:01 +02:00

29 lines
1.5 KiB
C

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* qoi_encode.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/12/25 22:38:42 by maiboyer #+# #+# */
/* Updated: 2023/12/25 22:56:06 by maiboyer ### ########.fr */
/* */
/* ************************************************************************** */
#include "me/img/qoi.h"
#include "me/img/qoi/qoi_encode.h"
#include "me/img/qoi/qoi_utils.h"
void *qoi_encode(const void *data, const t_qoi_desc *desc, t_i32 *out_len)
{
t_encode_vals vals;
if (data == NULL || out_len == NULL || desc == NULL || desc->width == 0
|| desc->height == 0 || desc->channels < 3 || desc->channels > 4
|| desc->colorspace > 1 || desc->height >= QOI_PIXELS_MAX / desc->width)
return (NULL);
vals = (t_encode_vals){0};
vals.max_size = desc->width * desc->height * (desc->channels + 1)
+ QOI_HEADER_SIZE + sizeof(t_u8[8]);
return (qoi_encode_inner(&vals, desc, (const t_u8 *)data, out_len));
}