/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* fdf.h :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2021/11/04 08:19:48 by narnaud #+# #+# */ /* Updated: 2022/05/21 17:32:20 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef FDF_H # define FDF_H # define SPLIT_SIZE 512 # define BUFFER_SIZE 4096 # define WIN_X_SZ 900 # define WIN_Y_SZ 600 # define DEF_YAW 0 # define DEF_PITCH -45 # define SCALE 0.9 # define LINES_LEN 20 # ifdef __linux__ # include "./mlx/mlx.h" # elif __APPLE__ # include # endif # include "mlx_keycode.h" # include # include # include # include # include # include "./libft/libft.h" typedef struct s_2d_float { float x; float y; } t_2df; typedef struct s_2d_int { int x; int y; int len; } t_2di; typedef struct s_trigo { float raw; float cos; float sin; } t_trigo; typedef struct s_3d_pos { int x; int y; float z; t_trigo yaw; t_trigo pitch; } t_3d; typedef struct s_axis { t_trigo yaw; t_trigo pitch; } t_axis; typedef struct s_map { int **altitude; float z_mult; int hightest; int width; int depth; } t_map; typedef struct s_camera { t_2di **render; t_2di center; t_axis ang; float zoom; int color; } t_camera; typedef struct s_datas { t_camera *cam; t_map *map; void *mlx; void *win; void *img; int pixel_bits; int line_bytes; int endian; } t_datas; typedef struct s_buffer { char *content; size_t pos; size_t read_length; } t_buffer; typedef struct s_line_split { char *content; size_t i; size_t count; struct s_line_split *next; } t_split; //fdf.c void init_map(t_datas *datas, int fd); void init_window(t_datas *datas); //fdf_parsing.c void parse_line(t_map *map, t_2di p, char ***splited); t_map *parse_file(int fd, t_map *map); const char *get_file_ext(const char *filename); //fdf_drawing.c int get_color(t_datas *datas, t_2di coord, float coef); void draw_horiz_line(t_datas *datas, t_2di coord, int *buffer); void draw_vert_line(t_datas *datas, t_2di coord, int *buffer); void get_coords(t_2di coord, t_datas *datas); void draw_map(t_datas *datas); //fdf_commands.c void key_hook_third(int keycode, t_datas *datas); void key_hook_second(int keycode, t_datas *datas); int key_hook_primary(int keycode, void *param); //fdf_utils.c int error_msg(char *msg, int sys); t_trigo trigo_calc(float rad); void clean_exit(t_datas *datas); void draw_infos(t_datas *datas); //gnl char *get_next_line(int fd); t_split *ft_new_split(char *content); t_split *ft_splitlast(t_split *lst); void ft_splitadd_back(t_split **alst, t_split *new); #endif