diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ae8d043 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +fdf +*.a +*.o diff --git a/Makefile b/Makefile index e69de29..916768d 100644 --- a/Makefile +++ b/Makefile @@ -0,0 +1,79 @@ +# **************************************************************************** # +# # +# ::: o_ :::::: ::: # +# Makefile :+: / :+::+: :+: # +# +:+ > +:++:+ +:+ # +# By: whaffman +#+ +:+ +#++#++:++#++ # +# +#+ +#+#+ +#++#+ +#+ \o/ # +# Created: 2024/10/15 11:48:46 by whaffman #+#+# #+#+# #+# #+# | # +# Updated: 2024/11/07 15:28:08 by whaffman ### ### ### ### / \ # +# # +# **************************************************************************** # + +NAME = fdf + +SRC_PATH = src +INC_PATH = inc +LIB_PATH = lib + +LIBFT_PATH = $(LIB_PATH)/libft +LIBFT_INC_PATH = $(LIBFT_PATH)/inc +LIBFT = $(LIBFT_PATH)/libft.a + +MLX42_PATH = $(LIB_PATH)/MLX42 +MLX42_INC_PATH = $(MLX42_PATH)/include/MLX42 +MLX42 = $(MLX42_PATH)/build/libmlx42.a + +OBJ_PATH = obj + +VPATH = src +SOURCES = fdf.c + +OBJECTS = $(addprefix $(OBJ_PATH)/, $(SOURCES:.c=.o)) + +CC = cc +RM = rm -rf + +INCLUDES = -I./$(INC_PATH) -I./$(LIBFT_INC_PATH) -I./$(MLX42_INC_PATH) +CFLAGS = -Wall -Wextra -Werror + +UNAME_S := $(shell uname -s) +ifeq ($(UNAME_S),Linux) + LDLIBS := -L$(LIBFT_PATH) -lft -L$(MLX42_PATH)/build -lmlx42 -ldl -lglfw -pthread -lm +endif + +all: $(NAME) + +$(MLX42): $(MLX42_PATH) + cmake $(MLX42_PATH) -B $(MLX42_PATH)/build; + make -C$(MLX42_PATH)/build -j4; + +$(MLX42_DIR): + git submodule add https://github.com/codam-coding-college/MLX42.git $(MLX42_PATH); + +$(LIBFT): $(LIBFT_PATH) + $(MAKE) -sC $(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 $@ + +$(OBJ_PATH)/%.o: %.c $(LIBFT) $(MLX42) | $(OBJ_PATH) + $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@ + +clean: + $(RM) $(OBJECTS) $(OBJ_PATH) + $(MAKE) -C libft clean + +fclean: clean + $(RM) $(NAME) + $(MAKE) -C libft fclean + +re: fclean all + +.PHONY: all clean fclean re diff --git a/fdf.c b/fdf.c new file mode 100644 index 0000000..08b95a4 --- /dev/null +++ b/fdf.c @@ -0,0 +1,89 @@ + +// ----------------------------------------------------------------------------- +// Codam Coding College, Amsterdam @ 2022-2023 by W2Wizard. +// See README in the root project for more information. +// ----------------------------------------------------------------------------- + +#include +#include +#include +#include "MLX42.h" + +#define WIDTH 512 +#define HEIGHT 512 + +static mlx_image_t* image; + +// ----------------------------------------------------------------------------- + +int32_t ft_pixel(int32_t r, int32_t g, int32_t b, int32_t a) +{ + return (r << 24 | g << 16 | b << 8 | a); +} + +void ft_randomize(void* param) +{ + (void)param; + for (uint32_t i = 0; i < image->width; ++i) + { + for (uint32_t y = 0; y < image->height; ++y) + { + uint32_t color = ft_pixel( + rand() % 0xFF, // R + rand() % 0xFF, // G + rand() % 0xFF, // B + rand() % 0xFF // A + ); + mlx_put_pixel(image, i, y, color); + } + } +} + +void ft_hook(void* param) +{ + mlx_t* mlx = param; + + if (mlx_is_key_down(mlx, MLX_KEY_ESCAPE)) + mlx_close_window(mlx); + if (mlx_is_key_down(mlx, MLX_KEY_UP)) + image->instances[0].y -= 5; + if (mlx_is_key_down(mlx, MLX_KEY_DOWN)) + image->instances[0].y += 5; + if (mlx_is_key_down(mlx, MLX_KEY_LEFT)) + image->instances[0].x -= 5; + if (mlx_is_key_down(mlx, MLX_KEY_RIGHT)) + image->instances[0].x += 5; +} + +// ----------------------------------------------------------------------------- + +int32_t main(void) +{ + mlx_t* mlx; + + // Gotta error check this stuff + if (!(mlx = mlx_init(WIDTH, HEIGHT, "MLX42", true))) + { + puts(mlx_strerror(mlx_errno)); + return(EXIT_FAILURE); + } + if (!(image = mlx_new_image(mlx, 128, 128))) + { + mlx_close_window(mlx); + puts(mlx_strerror(mlx_errno)); + return(EXIT_FAILURE); + } + if (mlx_image_to_window(mlx, image, 0, 0) == -1) + { + mlx_close_window(mlx); + puts(mlx_strerror(mlx_errno)); + return(EXIT_FAILURE); + } + + mlx_loop_hook(mlx, ft_randomize, mlx); + mlx_loop_hook(mlx, ft_hook, mlx); + + mlx_loop(mlx); + mlx_terminate(mlx); + return (EXIT_SUCCESS); +} diff --git a/inc/fdf.h b/inc/fdf.h new file mode 100644 index 0000000..e69de29