static void ft_set_plan_origin(t_data *data, char **line, int fd) { get_next_line(fd, line); if (ft_check_if_nbr(*line) == -1) ft_error("[ERROR SCENE] - Plan's origin x is not a digit"); data->x = ft_atod(line); get_next_line(fd, line); if (ft_check_if_nbr(*line) == -1) ft_error("[ERROR SCENE] - Plan's origin y is not a digit"); data->y = ft_atod(line); get_next_line(fd, line); if (ft_check_if_nbr(*line) == -1) ft_error("[ERROR SCENE] - Plan's origin z is not a digit"); data->z = ft_atod(line); }
int ambient(t_env *e, char *str) { char **tmp; tmp = ft_strsplit(str, BREAK); if (tmp[1] == NULL || check_arg(tmp[1], 1) == -1) return (free_ret(-1, tmp)); e->ambient = ft_atod(tmp[1]); return (free_ret(0, tmp)); }
int pov(t_env *e, char *str) { char **tmp; char **tmp1; tmp1 = ft_strsplit(str, BREAK); if (tmp1[1] == NULL) return (free_ret(-1, tmp1)); tmp = ft_strsplit(tmp1[1], BREAK2); free_ret(0, tmp1); if (check_arg(tmp[0], 0) == -1) return (free_ret(-1, tmp)); if (check_arg(tmp[1], 0) == -1) return (free_ret(-1, tmp)); if (check_arg(tmp[2], 0) == -1) return (free_ret(-1, tmp)); e->cam.pos = init_vec(ft_atod(tmp[0]), ft_atod(tmp[1]), ft_atod(tmp[2])); return (free_ret(0, tmp)); }
void add_r_dir(t_dir *dir, char *full_path, char **tab) { t_dir *r_dir; r_dir = set_dir_name(full_path, dir->ls); r_dir->is_rr = 1; r_dir->modif_date = ft_atod(tab[6]); if ((dir->ls)->t) ft_btree_insert(&dir->rr_dir, r_dir, dir_date_comp); else ft_btree_insert(&dir->rr_dir, r_dir, dir_name_comp); }
void obj_read_mtllib_read_tr(t_obj *obj, char *line) { char **datas; if (!(datas = ft_strsplit(line, ' '))) ERROR("ft_strsplit failed"); if (!datas[0] || !datas[1] || datas[2]) ERROR("invalid mtl tr line"); if (!parse_valid_number(datas[1])) ERROR("invalid mtl tr value"); if (!obj->current_mtl) ERROR("no current mtl for tr"); obj->current_mtl->mtl.tr = 1 - ft_atod(datas[1]); free_array(datas); }
t_list *ft_lststrdsplit_double(char const *str) { t_list *splits; double value; if (isnumeric(*str)) { value = ft_atod(str); splits = ft_lstnew(&value, sizeof(value)); } else splits = NULL; while (*str) { if (!isnumeric(*str) && isnumeric(str[1])) { str++; value = ft_atod(str); ft_lstadd_back(&splits, ft_lstnew(&value, sizeof(value))); } str++; } return (splits); }
static void set_material_values(t_env *e, char *pt1, char *pt2) { t_split_string values; values = ft_nstrsplit(pt2, ' '); if (!ft_strcmp(pt1, "NAME")) { ft_strdel(&e->material[e->materials]->name); e->material[e->materials]->name = ft_strdup(values.strings[0]); } else if (!ft_strcmp(pt1, "DIFFUSE")) e->material[e->materials]->diff = get_colour(e, values); else if (!ft_strcmp(pt1, "SPECULAR")) e->material[e->materials]->spec = get_colour(e, values); else if (!ft_strcmp(pt1, "REFLECT")) e->material[e->materials]->reflect = to_range(ft_atod(values.strings[0]), 0.0, 1.0); else if (!ft_strcmp(pt1, "REFRACT")) e->material[e->materials]->refract = to_range(ft_atod(values.strings[0]), 0.0, 1.0); else if (!ft_strcmp(pt1, "IOR")) e->material[e->materials]->ior = ft_atod(values.strings[0]); ft_free_split(&values); }