/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* parsing_color.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: yantoine +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/14 20:05:49 by yantoine #+# #+# */ /* Updated: 2025/02/17 21:25:34 by yantoine ### ########.fr */ /* */ /* ************************************************************************** */ #include "miniRT.h" static inline int range_is_ok(char **token_color) { int i; i = 0; while (i < 3) { if (ft_atof(token_color[i]) < 0 || ft_atof(token_color[i]) > 255) return (0); i++; } return (1); } t_vec3 parse_color(const char *token, t_scene scene) { char **token_color; t_vec3 color; token_color = ft_split(token, ','); if (!check_tokens(token_color, 3) || !range_is_ok(token_color)) { ft_free_array(token_color); ft_free_array(scene.token_if_exit); ft_putendl_fd("error", 2); free(scene.line_if_exit); close(scene.fd_if_exit); exit(1); } color.x = ft_atof(token_color[0]) / 255; color.y = ft_atof(token_color[1]) / 255; color.z = ft_atof(token_color[2]) / 255; ft_free_array(token_color); return (color); }