diff options
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | inc/cub3d.h | 3 | ||||
-rw-r--r-- | inc/cub3d_defines.h | 6 | ||||
-rw-r--r-- | src/ft_draw_scene.c | 3 | ||||
-rw-r--r-- | src/ft_error.c (renamed from src/ft_map_error.c) | 14 | ||||
-rw-r--r-- | src/ft_save_to_bmp.c | 23 |
6 files changed, 42 insertions, 9 deletions
@@ -45,7 +45,7 @@ SRCS_NAME += ft_check_not_found.c SRCS_NAME += ft_check_map_line.c SRCS_NAME += ft_check_map_surrounds.c SRCS_NAME += ft_free_words.c -SRCS_NAME += ft_map_error.c +SRCS_NAME += ft_error.c SRCS_NAME += ft_init_winlx.c SRCS_NAME += ft_draw_square.c SRCS_NAME += ft_draw_circle.c diff --git a/inc/cub3d.h b/inc/cub3d.h index e640a14..b1712c1 100644 --- a/inc/cub3d.h +++ b/inc/cub3d.h @@ -120,7 +120,8 @@ void ft_set_minimap_scale(t_cub *clist); void *ft_music_thread(void *vargp); void ft_detect(t_cub *cl); void ft_castray(t_cub *cl); -void ft_save_to_bmp(void); +int8_t ft_save_to_bmp(void *img, t_cub *cl); +int ft_error(const char *errmsg, t_cub *clist); uint8_t ft_free_words(char **words); int8_t ft_warp_level(t_cub *cl); int ft_exit(uint8_t exit_code, t_cub *clist); diff --git a/inc/cub3d_defines.h b/inc/cub3d_defines.h index 66303ab..ed57f3e 100644 --- a/inc/cub3d_defines.h +++ b/inc/cub3d_defines.h @@ -22,9 +22,10 @@ enum FT_RET_BAD_ARGV, FT_RET_FAILED_STRUCTS, FT_RET_FAILED_MLX, - FT_RET_MAP_ERROR, + FT_RET_MAP_ERR, FT_RET_NO_MAP, - FT_RET_READ_ERROR + FT_RET_READ_ERR, + FT_RET_BMP_ERR } retvals; /* @@ -140,6 +141,7 @@ enum # define FT_ERR_RD_NL_TEX "could not find next level texture file" # define FT_ERR_RD_NL_MAP "could not find next level map file" # define FT_ERR_RD_MUSIC "could not find music file" +# define FT_ERR_WR_BMP "could not export to bmp" /* ** ====== MISSING ERROR MSG ====== diff --git a/src/ft_draw_scene.c b/src/ft_draw_scene.c index 1e16ba5..78a56b4 100644 --- a/src/ft_draw_scene.c +++ b/src/ft_draw_scene.c @@ -38,6 +38,7 @@ void clist->img.ptr = mlx_get_data_addr(clist->img.img, &clist->img.bpp, &clist->img.sizeline, &clist->img.endian); ft_castray(clist); - ft_save_to_bmp(); + if (ft_save_to_bmp(clist->img.img, clist) < 0) + ft_error(FT_ERR_WR_BMP, clist); mlx_destroy_image(clist->wlist.wlx, clist->img.img); } diff --git a/src/ft_map_error.c b/src/ft_error.c index b777415..b793b96 100644 --- a/src/ft_map_error.c +++ b/src/ft_error.c @@ -1,7 +1,7 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* ft_map_error.c :+: :+: :+: */ +/* ft_error.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: rbousset <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ @@ -15,6 +15,16 @@ #include <unistd.h> int + ft_error(const char *errmsg, t_cub *clist) +{ + ft_dprintf(STDERR_FILENO, "Error\n"); + ft_dprintf(STDERR_FILENO, + "\033[1;31m%s\033[0m\n", + errmsg); + return (ft_exit(FT_RET_BMP_ERR, clist)); +} + +int ft_map_error(const char *errmsg, t_cub *clist) { ft_dprintf(STDERR_FILENO, "Error\n"); @@ -22,5 +32,5 @@ int "\033[1;31mMap error: line %lu: %s\033[0m\n", clist->mlist.line_chk, errmsg); - return (ft_exit(4, clist)); + return (ft_exit(FT_RET_MAP_ERR, clist)); } diff --git a/src/ft_save_to_bmp.c b/src/ft_save_to_bmp.c index a510d6b..1118384 100644 --- a/src/ft_save_to_bmp.c +++ b/src/ft_save_to_bmp.c @@ -12,8 +12,27 @@ #include <libft.h> #include <cub3d.h> +#include <stdlib.h> +#include <stdint.h> -void - ft_save_to_bmp(void) +static int8_t + ft_convert_image_to_bmp(void *img, t_cub *cl) { + int32_t filelen; + uint8_t *bmp; + + (void)img; + filelen = 54 + 3 * cl->wlist.x_size * cl->wlist.y_size; + if (!(bmp = (uint8_t*)malloc((filelen - 54) * sizeof(uint8_t)))) + return (-1); + ft_memdel((void**)&bmp) + return (0); +} + +int8_t + ft_save_to_bmp(void *img, t_cub *cl) +{ + if (ft_convert_image_to_bmp(img, cl) < 0) + return (-1); + return (0); } |