int ft_get_cone(t_rtv1 *rtv1, t_lstline **list, int *line_nb) { int i; char **tab; char **tri; tab = NULL; tri = NULL; if ((i = -1) && ((rtv1->obj.cone != NULL || (rtv1->nb_cone = ft_atoi(&(*list)->line[9]))) == 0)) return (1); rtv1->obj.cone = (t_cone *)ft_memalloc(sizeof(t_cone) * rtv1->nb_cone); while (++i < rtv1->nb_cone) { *list = (*list)->next; if ((*line_nb += 1) && ((tab = ft_strsplitstr((*list)->line, " / ")) == NULL || ft_memlen((void **)tab) != 5 || (tri = ft_get_3d_val(tab[0])) == NULL || !ft_isdouble(tab[1]) || !ft_isdouble(tab[2]) || !ft_strishexa(tab[3]))) return (1); ft_fill_cone(rtv1, tab, tri, i); ft_memdel2((void ***)&tri); if ((tri = ft_get_3d_val(tab[4])) == NULL) return (1); ft_fill_rot_cone(rtv1, tri, i); ft_memdel2((void ***)&tab); ft_memdel2((void ***)&tri); } return (0); }
int analyse_cone(t_cone **cone, t_lstline **list, int *line) { int nb_obj; char **str; int i; if (*cone != NULL || !ft_strisdigit(&(*list)->line[9])) return (1); nb_obj = ft_atoi(&(*list)->line[9]); i = -1; *cone = (t_cone *)ft_memalloc(sizeof(t_cone) * (nb_obj + 1)); while (++i < nb_obj) { next_line(list, line); if (ft_strncmp((*list)->line, "\t\t\t", 3) != 0) return (1); str = ft_strsplit(&(*list)->line[3], '/'); if (!analyse_cone_help((*list)->line, str, &(*cone)[i])) return (1); (*cone)[i].ray_size = ft_absd(ft_atoid(str[1])); (*cone)[i].height = ft_absd(ft_atoid(str[2])); ft_memdel2((void ***)&str); } (*cone)[nb_obj].end = -1; next_line(list, line); return (0); }
int analyse_spot(t_spot **spot, t_lstline **list, int *line) { int nb_obj; char **str; int i; if (*spot != NULL || !ft_strisdigit(&(*list)->line[9])) return (1); nb_obj = ft_atoi(&(*list)->line[9]); i = -1; *spot = (t_spot *)ft_memalloc(sizeof(t_spot) * (nb_obj + 1)); while (++i < nb_obj) { next_line(list, line); if (ft_strncmp((*list)->line, "\t\t\t", 3) != 0) return (1); str = ft_strsplit(&(*list)->line[3], '/'); if (!analyse_slash((*list)->line, 2) || ft_memlen((void **)str) != 2 || !analyse_3d_value_d(str[0], &(*spot)[i].x, &(*spot)[i].y, &(*spot)[i].z) || !ft_strisdouble(str[1])) return (1); (*spot)[i].lux = ft_absd(ft_atoid(str[1])); ft_memdel2((void ***)&str); } (*spot)[nb_obj].end = -1; next_line(list, line); return (0); }