/ src / parsing_colours.c
parsing_colours.c
 1  /* ************************************************************************** */
 2  /*                                                                            */
 3  /*                                                        :::      ::::::::   */
 4  /*   parsing_colours.c                                  :+:      :+:    :+:   */
 5  /*                                                    +:+ +:+         +:+     */
 6  /*   By: ll-hotel <ll-hotel@student.42lyon.fr>      +#+  +:+       +#+        */
 7  /*                                                +#+#+#+#+#+   +#+           */
 8  /*   Created: 2024/07/26 16:21:42 by ll-hotel          #+#    #+#             */
 9  /*   Updated: 2024/11/13 01:50:16 by ll-hotel         ###   ########.fr       */
10  /*                                                                            */
11  /* ************************************************************************** */
12  
13  #include "ft_dprintf.h"
14  #include "parsing.h"
15  
16  int	parsing_colours(t_cube *cube, t_line *lines)
17  {
18  	t_line *const	f_colour = find_line_by_key(lines, "F");
19  	t_line *const	c_colour = find_line_by_key(lines, "C");
20  
21  	if (!f_colour || !f_colour->value)
22  		ft_dprintf(2, "Error\nRGB value not found for floor colour!\n");
23  	else if (find_line_by_key(f_colour + 1, "F") != 0)
24  		ft_dprintf(2, "Error\nDuplicate key F\n");
25  	else if (!c_colour || !c_colour->value)
26  		ft_dprintf(2, "Error\nRGB value not found for ceiling colour!\n");
27  	else if (find_line_by_key(c_colour + 1, "C") != 0)
28  		ft_dprintf(2, "Error\nDuplicate key C\n");
29  	else
30  	{
31  		if (!is_rgb(f_colour->value))
32  			ft_dprintf(2, "Error\nWrong floor colour value: expected RGB\n");
33  		else if (!is_rgb(c_colour->value))
34  			ft_dprintf(2, "Error\nWrong ceiling colour value: expected RGB\n");
35  		else if (parse_rgb(f_colour->value, &cube->f_colour) && \
36  				(parse_rgb(c_colour->value, &cube->c_colour)))
37  			return (1);
38  	}
39  	return (0);
40  }