Beispiel #1
0
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);
}
Beispiel #2
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);
}