/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* mlx.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: gbrochar +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/02/06 10:11:17 by gbrochar #+# #+# */ /* Updated: 2019/02/22 17:29:19 by gbrochar ### ########.fr */ /* */ /* ************************************************************************** */ #include "rtv1.h" void put_pixel(t_env *e, int x, int y, t_color c) { e->mlx.data[y * (int)WINX + x] = c.b + (c.g << 8) + (c.r << 16); } void mlx_free(char flags, t_mlx *mlx) { if (flags & MLX_IMG) mlx_destroy_image(mlx->ptr, mlx->img); if (flags & MLX_WIN) mlx_destroy_window(mlx->ptr, mlx->win); if (flags & MLX_PTR) free(mlx->ptr); exit(0); } int mlx_exit(char flags, t_mlx *mlx) { mlx_free(flags, mlx); ft_putendl("Error : mlx initialization failed"); return (FAILURE); } int init_mlx(t_env *e) { if (!(e->mlx.ptr = mlx_init())) return (mlx_exit(MLX_NOFLAG, &e->mlx)); if (!(e->mlx.win = mlx_new_window( e->mlx.ptr, (int)WINX, (int)WINY, "RTv1"))) return (mlx_exit(MLX_PTR, &e->mlx)); if (!(e->mlx.img = mlx_new_image(e->mlx.ptr, (int)WINX, (int)WINY))) return (mlx_exit(MLX_PTR | MLX_WIN, &e->mlx)); if (!(e->mlx.data = (int *)mlx_get_data_addr(e->mlx.img, &e->mlx.bpp, &e->mlx.size_l, &e->mlx.endian))) return (mlx_exit(MLX_PTR | MLX_WIN | MLX_IMG, &e->mlx)); mlx_hook(e->mlx.win, 2, 1L << 1, key_hook, e); mlx_hook(e->mlx.win, 17, 0, red_cross_hook, e); return (SUCCESS); }