From 12cb357b0b693b9e9ac771f3a4f3b604f289d7a1 Mon Sep 17 00:00:00 2001 From: Willem Haffmans Date: Sun, 15 Dec 2024 17:02:15 +0100 Subject: [PATCH] help menu z_color and auto depends in Makefile --- .gitignore | 1 + Makefile | 11 +++++++---- inc/fdf.h | 7 +++++-- menu.png | Bin 0 -> 18374 bytes src/clean_fdf.c | 4 ++++ src/fdf.c | 2 ++ src/fdf_color.c | 13 +++++++++++++ src/fdf_hooks.c | 37 +++++++++++++++++++++++++++++++++++-- src/parse_map.c | 2 ++ src/project_isometric.c | 3 ++- 10 files changed, 71 insertions(+), 9 deletions(-) create mode 100644 menu.png diff --git a/.gitignore b/.gitignore index ae8d043..e2c80e3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ fdf *.a *.o +*.d diff --git a/Makefile b/Makefile index a0291d9..c6ea504 100644 --- a/Makefile +++ b/Makefile @@ -30,12 +30,13 @@ VPATH = src SOURCES = $(shell basename -a $(shell find $(SRC_PATH) -type f -name "*.c")) OBJECTS = $(addprefix $(OBJ_PATH)/, $(SOURCES:.c=.o)) +DEPENDS = ${OBJECTS:.o=.d} CC = cc RM = rm -rf INCLUDES = -I./$(INC_PATH) -I./$(LIBFT_INC_PATH) -I./$(MLX42_INC_PATH) -CFLAGS = -Wall -Wextra -Werror +CFLAGS = -Wall -Wextra -Werror -MMD UNAME_S := $(shell uname -s) ifeq ($(UNAME_S),Linux) @@ -44,6 +45,11 @@ endif all: $(NAME) +$(NAME): $(MLX42) $(LIBFT) $(OBJECTS) + $(CC) $(CFLAGS) $(OBJECTS) $(LDLIBS) -o $(NAME) + +-include ${DEPENDS} + $(MLX42): $(MLX42_PATH) cmake $(MLX42_PATH) -B $(MLX42_PATH)/build; make -C$(MLX42_PATH)/build -j4; @@ -57,9 +63,6 @@ $(LIBFT): $(LIBFT_PATH) $(LIBFT_PATH): git submodule add git@duinvoetje.nl:willem/libft.git $(LIBFT_PATH) -$(NAME): $(MLX42) $(LIBFT) $(OBJECTS) - $(CC) $(CFLAGS) $(OBJECTS) $(LDLIBS) -o $(NAME) - $(OBJ_PATH): mkdir -p $@ diff --git a/inc/fdf.h b/inc/fdf.h index f6eebf9..7d8f44e 100644 --- a/inc/fdf.h +++ b/inc/fdf.h @@ -37,8 +37,8 @@ # define SQRT2 1.41421356237309514547 # define SQRT6 2.44948974278317788134 -# define WIDTH 2000 -# define HEIGHT 1500 +# define WIDTH 500 +# define HEIGHT 500 typedef struct s_point_3d { @@ -71,6 +71,7 @@ typedef struct s_fdf t_map *map; mlx_t *mlx; mlx_image_t *img; + mlx_image_t *menu; double angle_x; double angle_y; double angle_z; @@ -113,5 +114,7 @@ bool clean_fdf(t_fdf *fdf); void get_z_max(t_fdf *fdf); int init_mlx(t_fdf *fdf); void set_map_point(t_fdf *fdf, int x, int y, char **str); +mlx_image_t *draw_menu(t_fdf *fdf); +int get_z_color(double z, int z_max); #endif diff --git a/menu.png b/menu.png new file mode 100644 index 0000000000000000000000000000000000000000..bac62f45020c2d5d338c73e7954e9b286e8c9834 GIT binary patch literal 18374 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, fdf->img); + mlx_delete_image(fdf->mlx, fdf->menu); + if (fdf->map) { free(fdf->map->orig); free(fdf->map->rot); free(fdf->map->proj); free(fdf->map); + } free(fdf); return (true); diff --git a/src/fdf.c b/src/fdf.c index e6be768..93762f5 100644 --- a/src/fdf.c +++ b/src/fdf.c @@ -22,6 +22,8 @@ int main(int argc, char *argv[]) if (!parse_map(argv[1], fdf)) handle_error(fdf, "Error: failed to parse map"); init_mlx(fdf); + fdf->menu = draw_menu(fdf); + fdf->menu->enabled = false; mlx_loop(fdf->mlx); mlx_terminate(fdf->mlx); clean_fdf(fdf); diff --git a/src/fdf_color.c b/src/fdf_color.c index 5a72e06..31cf3aa 100644 --- a/src/fdf_color.c +++ b/src/fdf_color.c @@ -57,3 +57,16 @@ int interpolate_color(t_point_2d start, t_point_2d end, t_point_2d current) + (double) dcur / dtotal * (end.color >> 8 & 0xFF)); return (red << 24 | green << 16 | blue << 8 | 0xFF); } + +int get_z_color(double z, int z_max) +{ + int red; + int green; + + int temp; + + temp = 255 * z / z_max; + red = temp; + green = 255 - temp; + return (red << 24 | green << 16 | 0x00FF); +} \ No newline at end of file diff --git a/src/fdf_hooks.c b/src/fdf_hooks.c index 7c031f1..bc21927 100644 --- a/src/fdf_hooks.c +++ b/src/fdf_hooks.c @@ -30,7 +30,9 @@ void resize_hook(int width, int height, void *param) fdf = (t_fdf *)param; mlx_delete_image(fdf->mlx, fdf->img); fdf->img = mlx_new_image(fdf->mlx, fdf->mlx->width, fdf->mlx->height); - if (!fdf->img || (mlx_image_to_window(fdf->mlx, fdf->img, 0, 0) < 0)) + if (!fdf->img + || (mlx_image_to_window(fdf->mlx, fdf->img, 0, 0) < 0) + || (mlx_image_to_window(fdf->mlx, fdf->menu, 10, 10) < 0)) exit(1); fdf->offset_x += (fdf->mlx->width - fdf->last_width) / 2 ; fdf->offset_y += (fdf->mlx->height - fdf->last_height) / 2; @@ -66,6 +68,34 @@ void draw_hook(void *param) fdf_draw_line(fdf->img, fdf->map->proj[i], fdf->map->proj[i + fdf->map->width]); i++; } + // draw_menu(fdf); +} +mlx_image_t *draw_menu(t_fdf *fdf) +{ + // const int x = 20; + // const int line_height = 25; + // int y; + mlx_texture_t *texture; + mlx_image_t *img; + + // y = 1; + + texture = mlx_load_png("menu.png"); + img = mlx_texture_to_image(fdf->mlx, texture); + mlx_delete_texture(texture); + mlx_image_to_window(fdf->mlx, img, 10, 10); + // mlx_put_string(fdf->mlx, "[?] Help menu", x, y++ * line_height); + // mlx_put_string(fdf->mlx, "[a] / [d] Rotate around Z-axis", x, y++ * line_height); + // mlx_put_string(fdf->mlx, "[w] / [s] Rotate around X-axis", x, y++ * line_height); + // mlx_put_string(fdf->mlx, "[q] / [e] Rotate around Y-axis", x, y++ * line_height); + // mlx_put_string(fdf->mlx, "[z] / [x] Change Z-scale", x, y++ * line_height); + // mlx_put_string(fdf->mlx, "[=] / [-] Change Zoom", x, y++ * line_height); + // mlx_put_string(fdf->mlx, "[UP] / [DOWN] Change X-offset", x, y++ * line_height); + // mlx_put_string(fdf->mlx, "[LEFT] / [RIGHT] Change Y-offset", x, y++ * line_height); + // mlx_put_string(fdf->mlx, "[[] / []] Change animation speed", x, y++ * line_height); + // mlx_put_string(fdf->mlx, "[ESC] Close window", x, y++ * line_height); + + return (img); } void key_hook(mlx_key_data_t keydata, void *param) @@ -110,4 +140,7 @@ void key_hook(mlx_key_data_t keydata, void *param) fdf->animate_z -= 0.5; if (keydata.key == MLX_KEY_RIGHT_BRACKET && keydata.action == MLX_PRESS) fdf->animate_z += 0.5; -} + if (keydata.key == MLX_KEY_SLASH && keydata.action == MLX_PRESS) + fdf->menu->enabled = !fdf->menu->enabled; + +} \ No newline at end of file diff --git a/src/parse_map.c b/src/parse_map.c index ce2580c..0ae6993 100644 --- a/src/parse_map.c +++ b/src/parse_map.c @@ -26,5 +26,7 @@ int parse_map(char *filename, t_fdf *fdf) handle_error(fdf, MALLOC_ERROR); if (!read_map(filename, fdf)) handle_error(fdf, "Error: failed to read map"); + get_z_max(fdf); + ft_printf("%d\n", fdf->map->z_max); return (SUCCESS); } diff --git a/src/project_isometric.c b/src/project_isometric.c index ad5ed0d..4b00d95 100644 --- a/src/project_isometric.c +++ b/src/project_isometric.c @@ -29,7 +29,8 @@ void project_isometric(t_fdf *fdf) - 2 * fdf->map->rot[i].z) / SQRT6; fdf->map->proj[i].x = x * fdf->zoom + fdf->offset_x; fdf->map->proj[i].y = y * fdf->zoom + fdf->offset_y; - fdf->map->proj[i].color = fdf->map->rot[i].color; + fdf->map->proj[i].color = get_z_color(fdf->map->orig[i].z, fdf->map->z_max); + // fdf->map->proj[i].color = fdf->map->rot[i].color; i++; } }