From fdc037973c5f87ce35f3ed133a029170c957762a Mon Sep 17 00:00:00 2001 From: nicolas-arnaud Date: Mon, 14 Nov 2022 12:21:41 +0100 Subject: [PATCH] save 22-11-14-1 --- includes/cub3d.h | 4 +- {libft => includes}/libft.h | 0 lib/libft.a | Bin 56760 -> 0 bytes lib/libmlx_Mac.a | Bin 183032 -> 0 bytes libft/Makefile | 64 -- libft/conv/ft_atoi.c | 40 - libft/conv/ft_itoa.c | 42 - libft/conv/ft_itox.c | 35 - libft/conv/ft_tolower.c | 19 - libft/conv/ft_toupper.c | 19 - libft/conv/ft_utoa.c | 33 - libft/dlist/ft_add.c | 27 - libft/dlist/ft_n.c | 20 - libft/dlist/ft_to_arr.c | 41 - libft/i_slist/ft_first.c | 32 - libft/i_slist/ft_free.c | 25 - libft/i_slist/ft_is_in.c | 27 - libft/is/ft_isalnum.c | 21 - libft/is/ft_isalpha.c | 21 - libft/is/ft_isascii.c | 21 - libft/is/ft_isdigit.c | 21 - libft/is/ft_islower.c | 20 - libft/is/ft_isnumber.c | 26 - libft/is/ft_isprint.c | 21 - libft/is/ft_isspace.c | 22 - libft/is/ft_isupper.c | 20 - libft/mem/ft_bzero.c | 22 - libft/mem/ft_calloc.c | 24 - libft/mem/ft_free_split.c | 26 - libft/mem/ft_memchr.c | 27 - libft/mem/ft_memcmp.c | 29 - libft/mem/ft_memcpy.c | 28 - libft/mem/ft_memmove.c | 33 - libft/mem/ft_memset.c | 23 - libft/nbr/ft_croissant.c | 18 - libft/nbr/ft_decroissant.c | 18 - libft/nbr/ft_max.c | 21 - libft/nbr/ft_min.c | 21 - libft/nbr/ft_nbrlen.c | 50 -- libft/put/ft_putchar_fd.c | 18 - libft/put/ft_putendl_fd.c | 21 - libft/put/ft_putnbr_fd.c | 61 -- libft/put/ft_putstr_fd.c | 21 - libft/slist/ft_add_back.c | 28 - libft/slist/ft_add_front.c | 22 - libft/slist/ft_clear.c | 27 - libft/slist/ft_delone.c | 22 - libft/slist/ft_iter.c | 22 - libft/slist/ft_last.c | 22 - libft/slist/ft_map.c | 29 - libft/slist/ft_new.c | 25 - libft/slist/ft_size.c | 23 - libft/str/ft_chr.c | 27 - libft/str/ft_dup.c | 31 - libft/str/ft_iteri.c | 27 - libft/str/ft_join.c | 41 - libft/str/ft_join_with.c | 27 - libft/str/ft_lcat.c | 37 - libft/str/ft_lcpy.c | 30 - libft/str/ft_len.c | 33 - libft/str/ft_mapi.c | 32 - libft/str/ft_ncmp.c | 34 - libft/str/ft_nstr.c | 42 - libft/str/ft_rchr.c | 33 - libft/str/ft_rev.c | 32 - libft/str/ft_split.c | 42 - libft/str/ft_sub.c | 42 - libft/str/ft_trim.c | 53 -- maps/.DS_Store | Bin 6148 -> 0 bytes maps/tester.cub | 4 +- mlx/.github/workflows/ci.yml | 88 -- mlx/.gitignore | 67 -- mlx/LICENSE | 25 - mlx/Makefile | 22 - mlx/Makefile.mk | 66 -- mlx/README.md | 55 -- mlx/configure | 126 --- mlx/man/man1/mlx.1 | 93 -- mlx/man/man1/mlx_loop.1 | 141 --- mlx/man/man1/mlx_new_image.1 | 192 ---- mlx/man/man1/mlx_new_window.1 | 79 -- mlx/man/man1/mlx_pixel_put.1 | 84 -- mlx/man/man3/mlx.3 | 93 -- mlx/man/man3/mlx_loop.3 | 141 --- mlx/man/man3/mlx_new_image.3 | 192 ---- mlx/man/man3/mlx_new_window.3 | 79 -- mlx/man/man3/mlx_pixel_put.3 | 81 -- mlx/mlx.h | 139 --- mlx/mlx_clear_window.c | 21 - mlx/mlx_destroy_display.c | 18 - mlx/mlx_destroy_image.c | 31 - mlx/mlx_destroy_window.c | 38 - mlx/mlx_expose_hook.c | 22 - mlx/mlx_ext_randr.c | 104 --- mlx/mlx_flush_event.c | 25 - mlx/mlx_get_color_value.c | 33 - mlx/mlx_get_data_addr.c | 23 - mlx/mlx_hook.c | 40 - mlx/mlx_init.c | 99 -- mlx/mlx_int.h | 140 --- mlx/mlx_int_anti_resize_win.c | 28 - mlx/mlx_int_do_nothing.c | 16 - mlx/mlx_int_get_visual.c | 39 - mlx/mlx_int_param_event.c | 100 --- mlx/mlx_int_set_win_event_mask.c | 34 - mlx/mlx_int_str_to_wordtab.c | 113 --- mlx/mlx_int_wait_first_expose.c | 23 - mlx/mlx_key_hook.c | 22 - mlx/mlx_lib_xpm.c | 96 -- mlx/mlx_loop.c | 63 -- mlx/mlx_loop_hook.c | 21 - mlx/mlx_mouse.c | 48 - mlx/mlx_mouse_hook.c | 22 - mlx/mlx_new_image.c | 159 ---- mlx/mlx_new_window.c | 62 -- mlx/mlx_pixel_put.c | 26 - mlx/mlx_put_image_to_window.c | 37 - mlx/mlx_rgb.c | 764 ---------------- mlx/mlx_screen_size.c | 13 - mlx/mlx_set_font.c | 30 - mlx/mlx_string_put.c | 26 - mlx/mlx_xpm.c | 345 ------- mlx/mlx_xpm.c.ok | 310 ------- mlx/rgb2c.pl | 38 - mlx/test/Makefile.mk | 45 - mlx/test/main.c | 287 ------ mlx/test/new_win.c | 31 - mlx/test/open.xpm | 1439 ------------------------------ mlx/test/open24.xpm | 230 ----- mlx/test/open30.xpm | 1439 ------------------------------ mlx/test/run_tests.sh | 94 -- src/main.c | 4 +- src/parsing/map.c | 4 +- src/parsing/parsing.c | 42 +- src/parsing/utils.c | 28 +- 135 files changed, 46 insertions(+), 10258 deletions(-) rename {libft => includes}/libft.h (100%) delete mode 100644 lib/libft.a delete mode 100644 lib/libmlx_Mac.a delete mode 100755 libft/Makefile delete mode 100755 libft/conv/ft_atoi.c delete mode 100755 libft/conv/ft_itoa.c delete mode 100755 libft/conv/ft_itox.c delete mode 100755 libft/conv/ft_tolower.c delete mode 100755 libft/conv/ft_toupper.c delete mode 100755 libft/conv/ft_utoa.c delete mode 100755 libft/dlist/ft_add.c delete mode 100755 libft/dlist/ft_n.c delete mode 100755 libft/dlist/ft_to_arr.c delete mode 100755 libft/i_slist/ft_first.c delete mode 100755 libft/i_slist/ft_free.c delete mode 100755 libft/i_slist/ft_is_in.c delete mode 100755 libft/is/ft_isalnum.c delete mode 100755 libft/is/ft_isalpha.c delete mode 100755 libft/is/ft_isascii.c delete mode 100755 libft/is/ft_isdigit.c delete mode 100755 libft/is/ft_islower.c delete mode 100644 libft/is/ft_isnumber.c delete mode 100755 libft/is/ft_isprint.c delete mode 100755 libft/is/ft_isspace.c delete mode 100755 libft/is/ft_isupper.c delete mode 100755 libft/mem/ft_bzero.c delete mode 100755 libft/mem/ft_calloc.c delete mode 100755 libft/mem/ft_free_split.c delete mode 100755 libft/mem/ft_memchr.c delete mode 100755 libft/mem/ft_memcmp.c delete mode 100755 libft/mem/ft_memcpy.c delete mode 100755 libft/mem/ft_memmove.c delete mode 100755 libft/mem/ft_memset.c delete mode 100755 libft/nbr/ft_croissant.c delete mode 100755 libft/nbr/ft_decroissant.c delete mode 100755 libft/nbr/ft_max.c delete mode 100755 libft/nbr/ft_min.c delete mode 100755 libft/nbr/ft_nbrlen.c delete mode 100755 libft/put/ft_putchar_fd.c delete mode 100755 libft/put/ft_putendl_fd.c delete mode 100755 libft/put/ft_putnbr_fd.c delete mode 100755 libft/put/ft_putstr_fd.c delete mode 100755 libft/slist/ft_add_back.c delete mode 100755 libft/slist/ft_add_front.c delete mode 100755 libft/slist/ft_clear.c delete mode 100755 libft/slist/ft_delone.c delete mode 100755 libft/slist/ft_iter.c delete mode 100755 libft/slist/ft_last.c delete mode 100755 libft/slist/ft_map.c delete mode 100755 libft/slist/ft_new.c delete mode 100755 libft/slist/ft_size.c delete mode 100755 libft/str/ft_chr.c delete mode 100755 libft/str/ft_dup.c delete mode 100755 libft/str/ft_iteri.c delete mode 100755 libft/str/ft_join.c delete mode 100644 libft/str/ft_join_with.c delete mode 100755 libft/str/ft_lcat.c delete mode 100755 libft/str/ft_lcpy.c delete mode 100755 libft/str/ft_len.c delete mode 100755 libft/str/ft_mapi.c delete mode 100755 libft/str/ft_ncmp.c delete mode 100755 libft/str/ft_nstr.c delete mode 100755 libft/str/ft_rchr.c delete mode 100755 libft/str/ft_rev.c delete mode 100755 libft/str/ft_split.c delete mode 100755 libft/str/ft_sub.c delete mode 100755 libft/str/ft_trim.c delete mode 100644 maps/.DS_Store delete mode 100644 mlx/.github/workflows/ci.yml delete mode 100644 mlx/.gitignore delete mode 100644 mlx/LICENSE delete mode 100644 mlx/Makefile delete mode 100644 mlx/Makefile.mk delete mode 100755 mlx/README.md delete mode 100755 mlx/configure delete mode 100644 mlx/man/man1/mlx.1 delete mode 100644 mlx/man/man1/mlx_loop.1 delete mode 100644 mlx/man/man1/mlx_new_image.1 delete mode 100644 mlx/man/man1/mlx_new_window.1 delete mode 100644 mlx/man/man1/mlx_pixel_put.1 delete mode 100644 mlx/man/man3/mlx.3 delete mode 100644 mlx/man/man3/mlx_loop.3 delete mode 100644 mlx/man/man3/mlx_new_image.3 delete mode 100644 mlx/man/man3/mlx_new_window.3 delete mode 100644 mlx/man/man3/mlx_pixel_put.3 delete mode 100644 mlx/mlx.h delete mode 100644 mlx/mlx_clear_window.c delete mode 100644 mlx/mlx_destroy_display.c delete mode 100644 mlx/mlx_destroy_image.c delete mode 100644 mlx/mlx_destroy_window.c delete mode 100644 mlx/mlx_expose_hook.c delete mode 100644 mlx/mlx_ext_randr.c delete mode 100644 mlx/mlx_flush_event.c delete mode 100644 mlx/mlx_get_color_value.c delete mode 100644 mlx/mlx_get_data_addr.c delete mode 100644 mlx/mlx_hook.c delete mode 100644 mlx/mlx_init.c delete mode 100644 mlx/mlx_int.h delete mode 100644 mlx/mlx_int_anti_resize_win.c delete mode 100644 mlx/mlx_int_do_nothing.c delete mode 100644 mlx/mlx_int_get_visual.c delete mode 100644 mlx/mlx_int_param_event.c delete mode 100644 mlx/mlx_int_set_win_event_mask.c delete mode 100644 mlx/mlx_int_str_to_wordtab.c delete mode 100644 mlx/mlx_int_wait_first_expose.c delete mode 100644 mlx/mlx_key_hook.c delete mode 100644 mlx/mlx_lib_xpm.c delete mode 100644 mlx/mlx_loop.c delete mode 100644 mlx/mlx_loop_hook.c delete mode 100644 mlx/mlx_mouse.c delete mode 100644 mlx/mlx_mouse_hook.c delete mode 100644 mlx/mlx_new_image.c delete mode 100644 mlx/mlx_new_window.c delete mode 100644 mlx/mlx_pixel_put.c delete mode 100644 mlx/mlx_put_image_to_window.c delete mode 100644 mlx/mlx_rgb.c delete mode 100644 mlx/mlx_screen_size.c delete mode 100644 mlx/mlx_set_font.c delete mode 100644 mlx/mlx_string_put.c delete mode 100644 mlx/mlx_xpm.c delete mode 100644 mlx/mlx_xpm.c.ok delete mode 100755 mlx/rgb2c.pl delete mode 100644 mlx/test/Makefile.mk delete mode 100644 mlx/test/main.c delete mode 100644 mlx/test/new_win.c delete mode 100644 mlx/test/open.xpm delete mode 100644 mlx/test/open24.xpm delete mode 100644 mlx/test/open30.xpm delete mode 100755 mlx/test/run_tests.sh diff --git a/includes/cub3d.h b/includes/cub3d.h index 72e1d06..fd2c706 100644 --- a/includes/cub3d.h +++ b/includes/cub3d.h @@ -6,7 +6,7 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/05/21 19:24:12 by narnaud #+# #+# */ -/* Updated: 2022/08/25 11:09:34 by narnaud ### ########.fr */ +/* Updated: 2022/11/14 10:35:59 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ @@ -132,7 +132,7 @@ int rgb_to_int(char **rgb); char **create_map_array(t_slist *e_lst, int wide, int deep); int is_in_open_room(t_env *env, int x, int y); int find_player(t_env *env); -t_env *parse_file(char *filename); +t_env *load_map(char *filename); char *get_next_line(int fd); #endif diff --git a/libft/libft.h b/includes/libft.h similarity index 100% rename from libft/libft.h rename to includes/libft.h diff --git a/lib/libft.a b/lib/libft.a deleted file mode 100644 index 294d113a0c3da7440190ba279c9851a0a721bd61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56760 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 diff --git a/lib/libmlx_Mac.a b/lib/libmlx_Mac.a deleted file mode 100644 index b105c73e702af09630027c78ade2acf42afdf99a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 183032 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 P+GoBXi&mjafQJ79cOsXN diff --git a/libft/Makefile b/libft/Makefile deleted file mode 100755 index d25eb64..0000000 --- a/libft/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -NAME = libft.a - -SRCS = is/ft_isalpha.c is/ft_isdigit.c is/ft_isascii.c is/ft_isprint.c \ - is/ft_isalnum.c is/ft_isspace.c is/ft_isnumber.c - -SRCS += str/ft_len.c str/ft_lcpy.c str/ft_lcat.c str/ft_chr.c \ - str/ft_rchr.c str/ft_ncmp.c str/ft_nstr.c str/ft_dup.c \ - str/ft_sub.c str/ft_join.c str/ft_trim.c str/ft_split.c \ - str/ft_rev.c str/ft_mapi.c str/ft_iteri.c str/ft_join_with.c - -SRCS += conv/ft_toupper.c conv/ft_tolower.c conv/ft_atoi.c conv/ft_itoa.c \ - conv/ft_itox.c conv/ft_utoa.c - -SRCS += mem/ft_bzero.c mem/ft_memset.c mem/ft_memchr.c mem/ft_memcpy.c \ - mem/ft_memcmp.c mem/ft_memmove.c mem/ft_calloc.c mem/ft_free_split.c - -SRCS += put/ft_putchar_fd.c put/ft_putnbr_fd.c put/ft_putendl_fd.c \ - put/ft_putstr_fd.c - -SRCS += nbr/ft_nbrlen.c nbr/ft_croissant.c nbr/ft_decroissant.c nbr/ft_max.c \ - nbr/ft_min.c - -SRCS += slist/ft_size.c slist/ft_new.c slist/ft_last.c \ - slist/ft_add_back.c slist/ft_add_front.c slist/ft_delone.c \ - slist/ft_clear.c slist/ft_iter.c slist/ft_map.c - -SRCS += i_slist/ft_free.c i_slist/ft_first.c i_slist/ft_is_in.c - -SRCS += dlist/ft_add.c dlist/ft_n.c dlist/ft_to_arr.c - -OBJS = $(SRCS:.c=.o) - -CC = gcc -AR = ar -rcs -RM = rm -rf - -CFLAGS = -Wall -Wextra -Werror - -.c.o: - ${CC} ${CFLAGS} -c $< -o ${<:.c=.o} - -all : $(NAME) - -$(VERBOSE).SILENT: - -$(NAME): $(OBJS) - echo Making libft... - ${AR} ${NAME} ${OBJS} - echo ✅ - -clean: - echo Cleaning libft... - ${RM} ${OBJS} - ${RM} ${OBJS_BONUS} - echo ✅ - -fclean: clean - ${RM} ${NAME} - -re: fclean all - -rebonus: fclean bonus - -.PHONY: all bonus re rebonus clean fclean diff --git a/libft/conv/ft_atoi.c b/libft/conv/ft_atoi.c deleted file mode 100755 index 3364615..0000000 --- a/libft/conv/ft_atoi.c +++ /dev/null @@ -1,40 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_atoi.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/18 17:06:25 by narnaud #+# #+# */ -/* Updated: 2022/03/25 14:14:45 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -int ft_atoi(const char *str) -{ - int sign; - double nb; - - nb = 0; - sign = 1; - if (!ft_strncmp(str, "-2147483648", 11)) - return (-2147483648); - while (*str == ' ' || (*str >= '\t' && *str <= '\r')) - str++; - if (*str == '-' && ++str) - sign = -1; - else if (*str == '+') - str++; - while (*str >= '0' && *str <= '9') - { - nb = nb * 10 + (*str - '0') % 10; - if (nb > 2147483647 && sign > 0) - return (-1); - else if (nb > 2147486648 && sign < 0) - return (0); - str++; - } - return ((int)(sign * nb)); -} diff --git a/libft/conv/ft_itoa.c b/libft/conv/ft_itoa.c deleted file mode 100755 index c7d9581..0000000 --- a/libft/conv/ft_itoa.c +++ /dev/null @@ -1,42 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_itoa.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/20 15:50:47 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:48 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -char *ft_itoa(int n) -{ - char *ret; - unsigned int i; - unsigned int neg; - - if (n == -2147483648) - return (ft_strdup("-2147483648")); - if (n == 0) - return (ft_strdup("0")); - i = 0; - neg = 0; - ret = ft_calloc(ft_ilen(n) + 1, sizeof(char)); - if (!ret) - return (NULL); - if (n < 0) - { - n = -n; - neg = 1; - } - while (n) - { - ret[i++] = (n % 10) + '0'; - n = n / 10; - } - ft_strrev(&ret, neg); - return (ret); -} diff --git a/libft/conv/ft_itox.c b/libft/conv/ft_itox.c deleted file mode 100755 index 2493aa4..0000000 --- a/libft/conv/ft_itox.c +++ /dev/null @@ -1,35 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_itox.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/12/21 09:51:26 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:48 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -char *ft_itox(unsigned long int n, const char *base) -{ - char *ret; - size_t i; - unsigned int neg; - size_t size; - - size = ft_longbaselen(n, 16); - if (n == 0) - return (ft_strdup("0")); - i = 0; - neg = 0; - ret = ft_calloc(size + 1, sizeof(char)); - while (n) - { - ret[i++] = base[n % 16]; - n = n / 16; - } - ft_strrev(&ret, neg); - return (ret); -} diff --git a/libft/conv/ft_tolower.c b/libft/conv/ft_tolower.c deleted file mode 100755 index a0bf08f..0000000 --- a/libft/conv/ft_tolower.c +++ /dev/null @@ -1,19 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_tolower.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/18 17:02:25 by narnaud #+# #+# */ -/* Updated: 2021/10/19 12:35:58 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_tolower(int c) -{ - if (c > 64 && c < 91) - return (c + 32); - else - return (c); -} diff --git a/libft/conv/ft_toupper.c b/libft/conv/ft_toupper.c deleted file mode 100755 index 7256704..0000000 --- a/libft/conv/ft_toupper.c +++ /dev/null @@ -1,19 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_toupper.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/18 17:02:28 by narnaud #+# #+# */ -/* Updated: 2021/10/19 12:36:28 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_toupper(int c) -{ - if (c > 96 && c < 123) - return (c - 32); - else - return (c); -} diff --git a/libft/conv/ft_utoa.c b/libft/conv/ft_utoa.c deleted file mode 100755 index 9bd0255..0000000 --- a/libft/conv/ft_utoa.c +++ /dev/null @@ -1,33 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_utoa.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/12/21 09:48:38 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:48 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -char *ft_utoa(unsigned int n) -{ - char *ret; - unsigned int i; - - if (n == 4294967295) - return (ft_strdup("4294967295")); - if (n == 0) - return (ft_strdup("0")); - i = 0; - ret = ft_calloc(ft_ulen(n) + 1, sizeof(char)); - while (n) - { - ret[i++] = (n % 10) + '0'; - n = n / 10; - } - ft_strrev(&ret, 0); - return (ret); -} diff --git a/libft/dlist/ft_add.c b/libft/dlist/ft_add.c deleted file mode 100755 index f138840..0000000 --- a/libft/dlist/ft_add.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_add.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/03/24 10:46:25 by narnaud #+# #+# */ -/* Updated: 2022/03/25 14:15:13 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -t_dlist *ft_dlst_add(t_dlist *prev, void *content) -{ - t_dlist *new; - - if (!content) - return (prev); - new = ft_calloc(1, sizeof(t_dlist)); - if (prev) - prev->next = new; - new->previous = prev; - new->content = content; - return (new); -} diff --git a/libft/dlist/ft_n.c b/libft/dlist/ft_n.c deleted file mode 100755 index 920e07c..0000000 --- a/libft/dlist/ft_n.c +++ /dev/null @@ -1,20 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_dlst_n.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/03/24 10:51:20 by narnaud #+# #+# */ -/* Updated: 2022/03/24 11:27:40 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -t_dlist *ft_dlst_n(t_dlist *lst, size_t n) -{ - while (n-- && lst) - lst = lst->next; - return (lst); -} diff --git a/libft/dlist/ft_to_arr.c b/libft/dlist/ft_to_arr.c deleted file mode 100755 index 5b8a16a..0000000 --- a/libft/dlist/ft_to_arr.c +++ /dev/null @@ -1,41 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_dlst_to_arr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/03/24 10:50:10 by narnaud #+# #+# */ -/* Updated: 2022/03/24 11:33:57 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -char **ft_dlst_to_arr(t_dlist *ptr) -{ - char **ret; - t_dlist *last; - t_dlist *tmp; - size_t count; - - last = ptr; - count = 1; - if (!ptr) - return (ft_calloc(1, sizeof(char *))); - while (ptr->previous) - { - ptr = ptr->previous; - count++; - } - ret = ft_calloc(count + 1, sizeof(char *)); - ret[count] = NULL; - while (count--) - { - ret[count] = last->content; - tmp = last->previous; - free(last); - last = tmp; - } - return (ret); -} diff --git a/libft/i_slist/ft_first.c b/libft/i_slist/ft_first.c deleted file mode 100755 index 91f6dc8..0000000 --- a/libft/i_slist/ft_first.c +++ /dev/null @@ -1,32 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_first.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/03/25 09:06:44 by narnaud #+# #+# */ -/* Updated: 2022/03/25 13:26:04 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -size_t ft_ilst_first(t_i_slist *lst, int (*fct)(int a, int b)) -{ - int previous; - size_t i; - - i = 1; - if (!lst) - return (0); - while (lst) - { - previous = lst->nb; - lst = lst->next; - if (lst && fct(previous, lst->nb)) - return (i); - i++; - } - return (-1); -} diff --git a/libft/i_slist/ft_free.c b/libft/i_slist/ft_free.c deleted file mode 100755 index c088a74..0000000 --- a/libft/i_slist/ft_free.c +++ /dev/null @@ -1,25 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_free.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/03/25 09:27:41 by narnaud #+# #+# */ -/* Updated: 2022/03/25 14:18:37 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -void ft_ilst_free(t_i_slist *list) -{ - t_i_slist *next; - - while (list) - { - next = list->next; - free(list); - list = next; - } -} diff --git a/libft/i_slist/ft_is_in.c b/libft/i_slist/ft_is_in.c deleted file mode 100755 index 7f8f7b7..0000000 --- a/libft/i_slist/ft_is_in.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_is_in.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/03/25 13:22:49 by narnaud #+# #+# */ -/* Updated: 2022/03/25 14:19:02 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -int ft_ilst_is_in(int value, t_i_slist lst) -{ - if (lst.nb == value && lst.next) - return (1); - while (lst.next) - { - if (lst.nb == value) - return (1); - else - lst = *(lst.next); - } - return (0); -} diff --git a/libft/is/ft_isalnum.c b/libft/is/ft_isalnum.c deleted file mode 100755 index 8547c8e..0000000 --- a/libft/is/ft_isalnum.c +++ /dev/null @@ -1,21 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isalnum.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/22 15:13:39 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:48 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -int ft_isalnum(int ch) -{ - if (ft_isalpha(ch) || ft_isdigit(ch)) - return (1); - else - return (0); -} diff --git a/libft/is/ft_isalpha.c b/libft/is/ft_isalpha.c deleted file mode 100755 index 2eec041..0000000 --- a/libft/is/ft_isalpha.c +++ /dev/null @@ -1,21 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isalpha.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/18 15:38:41 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:48 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -int ft_isalpha(int ch) -{ - if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')) - return (1); - else - return (0); -} diff --git a/libft/is/ft_isascii.c b/libft/is/ft_isascii.c deleted file mode 100755 index f090f58..0000000 --- a/libft/is/ft_isascii.c +++ /dev/null @@ -1,21 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isascii.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/22 15:14:38 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:48 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -int ft_isascii(int ch) -{ - if (ch >= 0 && ch < 128) - return (1); - else - return (0); -} diff --git a/libft/is/ft_isdigit.c b/libft/is/ft_isdigit.c deleted file mode 100755 index 68b9071..0000000 --- a/libft/is/ft_isdigit.c +++ /dev/null @@ -1,21 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isdigit.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/22 15:13:16 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:48 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -int ft_isdigit(int ch) -{ - if (ch >= '0' && ch <= '9') - return (1); - else - return (0); -} diff --git a/libft/is/ft_islower.c b/libft/is/ft_islower.c deleted file mode 100755 index 178d93d..0000000 --- a/libft/is/ft_islower.c +++ /dev/null @@ -1,20 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_islower.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/03/24 10:04:18 by narnaud #+# #+# */ -/* Updated: 2022/03/24 10:07:46 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -int ft_islower(char c) -{ - if (c >= 'a' && c <= 'z') - return (1); - return (0); -} diff --git a/libft/is/ft_isnumber.c b/libft/is/ft_isnumber.c deleted file mode 100644 index 6053f7a..0000000 --- a/libft/is/ft_isnumber.c +++ /dev/null @@ -1,26 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isnumber.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud@student.42nice.fr +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/05/18 16:18:15 by narnaud@stude #+# #+# */ -/* Updated: 2022/05/18 16:21:52 by narnaud@stude ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -int ft_isnumber(char *str) -{ - if (*str == '-' || *str == '+') - str++; - while (*str) - { - if (!ft_isdigit(*str)) - return (0); - str++; - } - return (1); -} diff --git a/libft/is/ft_isprint.c b/libft/is/ft_isprint.c deleted file mode 100755 index b9fbcb6..0000000 --- a/libft/is/ft_isprint.c +++ /dev/null @@ -1,21 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isprint.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/22 15:14:02 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:48 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -int ft_isprint(int ch) -{ - if (ch > 31 && ch < 127) - return (1); - else - return (0); -} diff --git a/libft/is/ft_isspace.c b/libft/is/ft_isspace.c deleted file mode 100755 index 139f0a3..0000000 --- a/libft/is/ft_isspace.c +++ /dev/null @@ -1,22 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isspace.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/03/24 10:05:51 by narnaud #+# #+# */ -/* Updated: 2022/05/03 09:47:28 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -int ft_isspace(int c) -{ - if (c > 8 && c < 14) - return (1); - if (c == ' ') - return (1); - return (0); -} diff --git a/libft/is/ft_isupper.c b/libft/is/ft_isupper.c deleted file mode 100755 index 20035e7..0000000 --- a/libft/is/ft_isupper.c +++ /dev/null @@ -1,20 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isupper.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/03/24 10:06:18 by narnaud #+# #+# */ -/* Updated: 2022/03/24 10:07:15 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -int ft_isupper(char c) -{ - if (c >= 'A' && c <= 'Z') - return (1); - return (0); -} diff --git a/libft/mem/ft_bzero.c b/libft/mem/ft_bzero.c deleted file mode 100755 index b50e529..0000000 --- a/libft/mem/ft_bzero.c +++ /dev/null @@ -1,22 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_bzero.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/19 11:46:58 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:49 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -void ft_bzero(void *s, size_t n) -{ - size_t i; - - i = 0; - while (i < n) - *(char *)(s + i++) = 0; -} diff --git a/libft/mem/ft_calloc.c b/libft/mem/ft_calloc.c deleted file mode 100755 index eb3416d..0000000 --- a/libft/mem/ft_calloc.c +++ /dev/null @@ -1,24 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_calloc.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/19 14:11:11 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:49 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -void *ft_calloc(size_t count, size_t size) -{ - void *ret; - - ret = malloc(count * size); - if (!ret) - return (NULL); - ft_bzero(ret, count * size); - return (ret); -} diff --git a/libft/mem/ft_free_split.c b/libft/mem/ft_free_split.c deleted file mode 100755 index 86149d7..0000000 --- a/libft/mem/ft_free_split.c +++ /dev/null @@ -1,26 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_free_split.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/03/25 08:55:20 by narnaud #+# #+# */ -/* Updated: 2022/03/25 08:57:26 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -void ft_free_split(char **split) -{ - int i; - - i = 0; - while (split[i]) - { - free(split[i]); - i++; - } - free(split); -} diff --git a/libft/mem/ft_memchr.c b/libft/mem/ft_memchr.c deleted file mode 100755 index e71f7ea..0000000 --- a/libft/mem/ft_memchr.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memchr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/22 15:15:55 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:49 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -void *ft_memchr(const void *b, int c, size_t n) -{ - size_t i; - - i = 0; - while (i < n) - { - if (*(unsigned char *)(b + i) == (unsigned char)c) - return ((void *)(b + i)); - i++; - } - return (NULL); -} diff --git a/libft/mem/ft_memcmp.c b/libft/mem/ft_memcmp.c deleted file mode 100755 index cb0f221..0000000 --- a/libft/mem/ft_memcmp.c +++ /dev/null @@ -1,29 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memcmp.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/22 15:16:23 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:49 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -int ft_memcmp(const void *s1, const void *s2, size_t n) -{ - size_t i; - int diff; - - i = 0; - while (i < n) - { - diff = *(unsigned char *)(s1 + i) - *(unsigned char *)(s2 + i); - if (diff) - return (diff); - i++; - } - return (0); -} diff --git a/libft/mem/ft_memcpy.c b/libft/mem/ft_memcpy.c deleted file mode 100755 index 9411f0b..0000000 --- a/libft/mem/ft_memcpy.c +++ /dev/null @@ -1,28 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memcpy.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/22 15:16:47 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:49 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -void *ft_memcpy(void *dst, const void *src, size_t n) -{ - size_t i; - - i = 0; - if (!src && !dst) - return (NULL); - while (i < n) - { - *(char *)(dst + i) = *(char *)(src + i); - i++; - } - return (dst); -} diff --git a/libft/mem/ft_memmove.c b/libft/mem/ft_memmove.c deleted file mode 100755 index 6dce9e4..0000000 --- a/libft/mem/ft_memmove.c +++ /dev/null @@ -1,33 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memmove.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/22 15:17:21 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:49 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -void *ft_memmove(void *dst, const void *src, size_t n) -{ - size_t i; - unsigned char *ptr_dst; - unsigned char *ptr_src; - - ptr_dst = (unsigned char *)dst; - ptr_src = (unsigned char *)src; - i = 0; - if (!dst && !src) - return (NULL); - if (ptr_src < ptr_dst) - while (++i <= n) - ptr_dst[n - i] = ptr_src[n - i]; - else - while (n--) - *(ptr_dst++) = *(ptr_src++); - return (dst); -} diff --git a/libft/mem/ft_memset.c b/libft/mem/ft_memset.c deleted file mode 100755 index dfbcd47..0000000 --- a/libft/mem/ft_memset.c +++ /dev/null @@ -1,23 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memset.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/19 11:43:44 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:49 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -void *ft_memset(void *b, int c, size_t len) -{ - size_t i; - - i = 0; - while (i < len) - *(unsigned char *)(b + i++) = (unsigned char)c; - return ((void *)b); -} diff --git a/libft/nbr/ft_croissant.c b/libft/nbr/ft_croissant.c deleted file mode 100755 index 5a91ff0..0000000 --- a/libft/nbr/ft_croissant.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_croissant.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/03/25 09:14:45 by narnaud #+# #+# */ -/* Updated: 2022/03/25 09:15:32 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -int ft_croissant(int a, int b) -{ - return (a <= b); -} diff --git a/libft/nbr/ft_decroissant.c b/libft/nbr/ft_decroissant.c deleted file mode 100755 index 061c0ea..0000000 --- a/libft/nbr/ft_decroissant.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_decroissant.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/03/25 09:14:45 by narnaud #+# #+# */ -/* Updated: 2022/03/25 10:53:14 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -int ft_decroissant(int a, int b) -{ - return (a > b); -} diff --git a/libft/nbr/ft_max.c b/libft/nbr/ft_max.c deleted file mode 100755 index 53a7605..0000000 --- a/libft/nbr/ft_max.c +++ /dev/null @@ -1,21 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_max.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud@student.42nice.fr +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/05/07 22:56:56 by narnaud@stude #+# #+# */ -/* Updated: 2022/05/07 22:57:21 by narnaud@stude ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -int ft_max(int a, int b) -{ - if (a > b) - return (a); - else - return (b); -} diff --git a/libft/nbr/ft_min.c b/libft/nbr/ft_min.c deleted file mode 100755 index 45a9ab6..0000000 --- a/libft/nbr/ft_min.c +++ /dev/null @@ -1,21 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_min.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud@student.42nice.fr +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/05/07 22:56:56 by narnaud@stude #+# #+# */ -/* Updated: 2022/05/09 08:58:50 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -int ft_min(int a, int b) -{ - if (a < b) - return (a); - else - return (b); -} diff --git a/libft/nbr/ft_nbrlen.c b/libft/nbr/ft_nbrlen.c deleted file mode 100755 index c8dc375..0000000 --- a/libft/nbr/ft_nbrlen.c +++ /dev/null @@ -1,50 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_nbrlen.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/12/21 09:42:43 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:49 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -size_t ft_ilen(int nbr) -{ - size_t i; - - i = 0; - if (nbr == 0) - return (1); - else if (nbr < 0) - i++; - while (nbr && ++i) - nbr = nbr / 10; - return (i); -} - -size_t ft_ulen(unsigned int nbr) -{ - size_t i; - - i = 0; - while (nbr && ++i) - nbr = nbr / 10; - return (i); -} - -size_t ft_longbaselen(long nbr, size_t base) -{ - size_t i; - - if (nbr <= 0) - i = 1; - else - i = 0; - while (nbr && ++i) - nbr = nbr / base; - return (i); -} diff --git a/libft/put/ft_putchar_fd.c b/libft/put/ft_putchar_fd.c deleted file mode 100755 index 0942182..0000000 --- a/libft/put/ft_putchar_fd.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putchar_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/20 16:32:52 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:49 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -void ft_putchar_fd(char c, int fd) -{ - write(fd, &c, 1); -} diff --git a/libft/put/ft_putendl_fd.c b/libft/put/ft_putendl_fd.c deleted file mode 100755 index 2f8a80f..0000000 --- a/libft/put/ft_putendl_fd.c +++ /dev/null @@ -1,21 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putendl_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/22 15:11:11 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:49 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -void ft_putendl_fd(char *s, int fd) -{ - if (!s) - return ; - ft_putstr_fd(s, fd); - ft_putchar_fd('\n', fd); -} diff --git a/libft/put/ft_putnbr_fd.c b/libft/put/ft_putnbr_fd.c deleted file mode 100755 index 90a4708..0000000 --- a/libft/put/ft_putnbr_fd.c +++ /dev/null @@ -1,61 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putnbr_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/22 15:12:01 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:49 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -static size_t get_nbrlength(int nbr) -{ - size_t i; - - i = 0; - if (nbr == 0) - return (1); - while (nbr && ++i) - nbr = nbr / 10; - return (i); -} - -static int pow_10(size_t n) -{ - int ret; - - if (!n) - return (1); - ret = 10; - while (--n) - ret *= 10; - return (ret); -} - -void ft_putnbr_fd(int n, int fd) -{ - int fact; - - if (n == -2147483648) - { - ft_putstr_fd("-2147483648", fd); - return ; - } - if (n < 0) - { - ft_putchar_fd('-', fd); - n = -n; - } - fact = pow_10(get_nbrlength(n) - 1); - while (fact >= 10) - { - ft_putchar_fd(n / fact + '0', fd); - n = n % fact; - fact /= 10; - } - ft_putchar_fd(n + '0', fd); -} diff --git a/libft/put/ft_putstr_fd.c b/libft/put/ft_putstr_fd.c deleted file mode 100755 index f45914a..0000000 --- a/libft/put/ft_putstr_fd.c +++ /dev/null @@ -1,21 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putstr_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/22 15:10:39 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:49 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -void ft_putstr_fd(char *s, int fd) -{ - if (!s) - return ; - while (*s) - ft_putchar_fd(*(s++), fd); -} diff --git a/libft/slist/ft_add_back.c b/libft/slist/ft_add_back.c deleted file mode 100755 index 5311366..0000000 --- a/libft/slist/ft_add_back.c +++ /dev/null @@ -1,28 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstadd_back.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/22 14:51:11 by narnaud #+# #+# */ -/* Updated: 2022/03/24 11:31:05 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -void ft_slst_add_back(t_slist **alst, t_slist *new) -{ - t_slist *i_cell; - - if (!alst || !new) - return ; - if (*alst) - { - i_cell = ft_slst_last(*alst); - i_cell->next = new; - } - else - *alst = new; -} diff --git a/libft/slist/ft_add_front.c b/libft/slist/ft_add_front.c deleted file mode 100755 index 32fcb60..0000000 --- a/libft/slist/ft_add_front.c +++ /dev/null @@ -1,22 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstadd_front.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/22 14:48:11 by narnaud #+# #+# */ -/* Updated: 2022/03/24 11:31:05 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -void ft_slst_add_front(t_slist **alst, t_slist *new) -{ - if (!alst || !new) - return ; - if (*alst) - new->next = *alst; - *alst = new; -} diff --git a/libft/slist/ft_clear.c b/libft/slist/ft_clear.c deleted file mode 100755 index 0e9c5fe..0000000 --- a/libft/slist/ft_clear.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstclear.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/22 14:53:04 by narnaud #+# #+# */ -/* Updated: 2022/03/24 11:31:05 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -void ft_slst_clear(t_slist **lst, void (*del)(void *)) -{ - t_slist *next_cell; - - if (!del) - return ; - while (lst && *lst) - { - next_cell = (*lst)->next; - ft_slst_delone(*lst, del); - *lst = next_cell; - } -} diff --git a/libft/slist/ft_delone.c b/libft/slist/ft_delone.c deleted file mode 100755 index 9e882aa..0000000 --- a/libft/slist/ft_delone.c +++ /dev/null @@ -1,22 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstdelone.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/22 14:51:53 by narnaud #+# #+# */ -/* Updated: 2022/03/24 11:31:05 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -void ft_slst_delone(t_slist *lst, void (*del)(void *)) -{ - if (!lst || !del) - return ; - (*del)(lst->content); - free(lst); - lst = NULL; -} diff --git a/libft/slist/ft_iter.c b/libft/slist/ft_iter.c deleted file mode 100755 index 21a601d..0000000 --- a/libft/slist/ft_iter.c +++ /dev/null @@ -1,22 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstiter.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/22 14:54:03 by narnaud #+# #+# */ -/* Updated: 2022/03/24 11:31:05 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -void ft_slst_iter(t_slist *lst, void (*f)(void *)) -{ - if (!lst || !f) - return ; - (*f)(lst->content); - if (lst->next) - ft_slst_iter(lst->next, f); -} diff --git a/libft/slist/ft_last.c b/libft/slist/ft_last.c deleted file mode 100755 index d15a275..0000000 --- a/libft/slist/ft_last.c +++ /dev/null @@ -1,22 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstlast.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/22 14:50:21 by narnaud #+# #+# */ -/* Updated: 2022/03/24 11:31:05 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -t_slist *ft_slst_last(t_slist *lst) -{ - if (!lst) - return (NULL); - while (lst->next) - lst = lst->next; - return (lst); -} diff --git a/libft/slist/ft_map.c b/libft/slist/ft_map.c deleted file mode 100755 index 236583d..0000000 --- a/libft/slist/ft_map.c +++ /dev/null @@ -1,29 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstmap.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/22 14:54:31 by narnaud #+# #+# */ -/* Updated: 2022/03/24 11:31:05 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -t_slist *ft_slst_map(t_slist *lst, void *(*f)(void *), void (*del)(void *)) -{ - t_slist *new_lst; - - if (!lst || !f) - return (NULL); - new_lst = ft_slst_new((*f)(lst->content)); - if (!new_lst) - { - ft_slst_clear(&new_lst, del); - return (NULL); - } - new_lst->next = ft_slst_map(lst->next, f, del); - return (new_lst); -} diff --git a/libft/slist/ft_new.c b/libft/slist/ft_new.c deleted file mode 100755 index eb32842..0000000 --- a/libft/slist/ft_new.c +++ /dev/null @@ -1,25 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstnew.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/20 17:36:09 by narnaud #+# #+# */ -/* Updated: 2022/03/24 11:31:05 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -t_slist *ft_slst_new(void *content) -{ - t_slist *i_cell; - - i_cell = (t_slist *)malloc(sizeof(*i_cell)); - if (!i_cell) - return (NULL); - i_cell->content = content; - i_cell->next = NULL; - return (i_cell); -} diff --git a/libft/slist/ft_size.c b/libft/slist/ft_size.c deleted file mode 100755 index c2df369..0000000 --- a/libft/slist/ft_size.c +++ /dev/null @@ -1,23 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstsize.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/22 14:49:32 by narnaud #+# #+# */ -/* Updated: 2022/03/24 11:31:05 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -int ft_slst_size(t_slist *lst) -{ - size_t lst_size; - - lst_size = 0; - while (lst && ++lst_size) - lst = lst->next; - return (lst_size); -} diff --git a/libft/str/ft_chr.c b/libft/str/ft_chr.c deleted file mode 100755 index 57c6afe..0000000 --- a/libft/str/ft_chr.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strchr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/18 16:21:06 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:49 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -char *ft_strchr(const char *s, int c) -{ - size_t i; - - i = 0; - while (s[i] || c == '\0') - { - if (s[i] == (c % 256)) - return ((char *)(s + i)); - i++; - } - return (0); -} diff --git a/libft/str/ft_dup.c b/libft/str/ft_dup.c deleted file mode 100755 index f86186b..0000000 --- a/libft/str/ft_dup.c +++ /dev/null @@ -1,31 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strdup.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/19 14:07:50 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:49 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -char *ft_strdup(const char *src) -{ - char *dup; - size_t i; - - i = 0; - dup = malloc((ft_strlen(src) + 1) * sizeof(char)); - if (!dup) - return (NULL); - while (src[i]) - { - dup[i] = src[i]; - i++; - } - dup[i] = '\0'; - return (dup); -} diff --git a/libft/str/ft_iteri.c b/libft/str/ft_iteri.c deleted file mode 100755 index 10f1382..0000000 --- a/libft/str/ft_iteri.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_striteri.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/20 16:23:41 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:49 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -void ft_striteri(char *s, void (*f)(unsigned int, char*)) -{ - unsigned int i; - - i = 0; - if (!s || !f) - return ; - while (s[i]) - { - f(i, s + i); - i++; - } -} diff --git a/libft/str/ft_join.c b/libft/str/ft_join.c deleted file mode 100755 index f744609..0000000 --- a/libft/str/ft_join.c +++ /dev/null @@ -1,41 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strjoin.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/20 06:49:25 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:49 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -char *ft_strjoin(const char *s1, const char *s2) -{ - char *ret; - size_t i; - size_t j; - - if (!s1 || !s2) - return (NULL); - ret = malloc(ft_strlen(s1) + ft_strlen(s2) + 1); - if (ret == NULL) - return (NULL); - i = 0; - while (s1[i]) - { - ret[i] = s1[i]; - i++; - } - j = 0; - while (s2[j]) - { - ret[i] = s2[j]; - i++; - j++; - } - ret[i] = '\0'; - return (ret); -} diff --git a/libft/str/ft_join_with.c b/libft/str/ft_join_with.c deleted file mode 100644 index 66860a5..0000000 --- a/libft/str/ft_join_with.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_join_with.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/05/17 09:44:59 by narnaud #+# #+# */ -/* Updated: 2022/05/17 09:56:37 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -char *ft_strjoin_with(char *s1, char *s2, char *inter) -{ - int path_length; - char *ret; - - path_length = ft_strlen(s1) + ft_strlen(s2) + ft_strlen(inter) + 1; - ret = ft_calloc(path_length, sizeof(char)); - ft_memcpy(ret, s1, ft_strlen(s1)); - ft_memcpy(ret + ft_strlen(s1), inter, ft_strlen(inter)); - ft_memcpy(ret + ft_strlen(s1) + ft_strlen(inter), \ - s2, ft_strlen(s2)); - return (ret); -} diff --git a/libft/str/ft_lcat.c b/libft/str/ft_lcat.c deleted file mode 100755 index 46c41f0..0000000 --- a/libft/str/ft_lcat.c +++ /dev/null @@ -1,37 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strlcat.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/18 16:13:02 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:49 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -size_t ft_strlcat(char *dst, const char *src, size_t dstsize) -{ - size_t i; - size_t j; - - i = 0; - j = 0; - while (dst[i]) - i++; - while (dstsize && i + j < dstsize - 1 && src[j]) - { - dst[i + j] = src[j]; - j++; - } - if (dstsize) - dst[i + j] = '\0'; - while (src[j]) - j++; - if (i > dstsize) - return (dstsize + j); - else - return (i + j); -} diff --git a/libft/str/ft_lcpy.c b/libft/str/ft_lcpy.c deleted file mode 100755 index d60ecab..0000000 --- a/libft/str/ft_lcpy.c +++ /dev/null @@ -1,30 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strlcpy.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/18 16:08:31 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:49 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -size_t ft_strlcpy(char *dst, const char *src, size_t dstsize) -{ - size_t i; - - i = 0; - while (dstsize && i < dstsize - 1 && src[i]) - { - dst[i] = src[i]; - i++; - } - if (dstsize) - dst[i] = '\0'; - while (src[i]) - i++; - return (i); -} diff --git a/libft/str/ft_len.c b/libft/str/ft_len.c deleted file mode 100755 index 4ae6aa9..0000000 --- a/libft/str/ft_len.c +++ /dev/null @@ -1,33 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_len.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/18 16:04:47 by narnaud #+# #+# */ -/* Updated: 2022/03/25 11:57:59 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -size_t ft_strlen_to(const char *str, char ch) -{ - size_t i; - - i = 0; - while (str[i] && str[i] != ch) - i++; - return (i); -} - -size_t ft_strlen(const char *str) -{ - size_t i; - - i = 0; - while (str[i] != '\0') - i++; - return (i); -} diff --git a/libft/str/ft_mapi.c b/libft/str/ft_mapi.c deleted file mode 100755 index 95694a2..0000000 --- a/libft/str/ft_mapi.c +++ /dev/null @@ -1,32 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strmapi.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/20 16:12:32 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:49 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -char *ft_strmapi(char const *s, char (*f)(unsigned int, char)) -{ - unsigned int i; - char *ret; - - if (!s) - return (NULL); - ret = (char *)ft_calloc(ft_strlen(s) + 1, sizeof(char)); - if (!ret) - return (NULL); - i = 0; - while (s[i]) - { - ret[i] = (*f)(i, s[i]); - i++; - } - return (ret); -} diff --git a/libft/str/ft_ncmp.c b/libft/str/ft_ncmp.c deleted file mode 100755 index 73d1ff6..0000000 --- a/libft/str/ft_ncmp.c +++ /dev/null @@ -1,34 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strncmp.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/18 16:16:37 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:49 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -int ft_strncmp(const char *s1, const char *s2, size_t n) -{ - size_t i; - int ret; - unsigned char *s1cp; - unsigned char *s2cp; - - if (!n) - return (0); - i = 0; - s1cp = (unsigned char *)s1; - s2cp = (unsigned char *)s2; - ret = s1cp[i] - s2cp[i]; - while ((!ret && i < n) && (s1[i] || s2[i])) - { - ret = s1cp[i] - s2cp[i]; - i++; - } - return (ret); -} diff --git a/libft/str/ft_nstr.c b/libft/str/ft_nstr.c deleted file mode 100755 index a5c2430..0000000 --- a/libft/str/ft_nstr.c +++ /dev/null @@ -1,42 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strnstr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/18 16:52:56 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:49 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -char *ft_strnstr(const char *haystack, const char *needle, size_t len) -{ - size_t i; - size_t j; - int found; - - i = 0; - j = 0; - found = 0; - while (haystack[i] && i < len && needle[j]) - { - if (haystack[i] == needle[j]) - { - found = 1; - j++; - } - else if (found) - { - found = 0; - i -= j; - j = 0; - } - i++; - } - if (!needle[j]) - return ((char *)(haystack + i - j)); - return (0); -} diff --git a/libft/str/ft_rchr.c b/libft/str/ft_rchr.c deleted file mode 100755 index 137cc23..0000000 --- a/libft/str/ft_rchr.c +++ /dev/null @@ -1,33 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strrchr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/18 16:47:21 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:49 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -char *ft_strrchr(const char *s, int c) -{ - size_t i; - int found; - - i = 0; - found = -1; - while (s[i]) - { - if (s[i] == (c % 256)) - found = i; - i++; - } - if (c == '\0') - return ((char *)(s + i)); - if (found >= 0) - return ((char *)(s + found)); - return (0); -} diff --git a/libft/str/ft_rev.c b/libft/str/ft_rev.c deleted file mode 100755 index 7e9cd0c..0000000 --- a/libft/str/ft_rev.c +++ /dev/null @@ -1,32 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strrev.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/27 09:36:21 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:49 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -void ft_strrev(char **str, unsigned int neg) -{ - char ch; - size_t size; - size_t i; - - size = ft_strlen(*str); - if (neg) - (*str)[size++] = '-'; - i = 0; - while (i < size / 2) - { - ch = (*str)[i]; - (*str)[i] = (*str)[size - i - 1]; - (*str)[size - i - 1] = ch; - i++; - } -} diff --git a/libft/str/ft_split.c b/libft/str/ft_split.c deleted file mode 100755 index a2e0411..0000000 --- a/libft/str/ft_split.c +++ /dev/null @@ -1,42 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_split.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/20 15:43:48 by narnaud #+# #+# */ -/* Updated: 2022/03/25 14:56:37 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -char **ft_split(const char *str, char c) -{ - t_dlist *words; - char *word; - int i; - int j; - - i = -1; - word = NULL; - words = NULL; - if (!str) - return (NULL); - while (str[++i]) - { - if (!word && str[i] != c) - j = 0; - if (!word && str[i] != c) - word = ft_calloc((int)ft_strlen_to(str + i, c) + 1, sizeof(char)); - if (word && str[i] == c) - words = ft_dlst_add(words, word); - if (word && str[i] == c) - word = NULL; - if (str[i] != c) - word[j++] = str[i]; - } - words = ft_dlst_add(words, word); - return (ft_dlst_to_arr(words)); -} diff --git a/libft/str/ft_sub.c b/libft/str/ft_sub.c deleted file mode 100755 index 532a8cb..0000000 --- a/libft/str/ft_sub.c +++ /dev/null @@ -1,42 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_substr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/20 06:45:32 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:49 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -char *ft_substr(char const *s, unsigned int start, size_t len) -{ - size_t i; - char *ret; - size_t s_size; - - if (!s) - return (NULL); - s_size = ft_strlen(s); - if (start > s_size) - { - start = s_size; - len = 0; - } - else if (s_size < start + len) - len = s_size - start; - ret = ft_calloc(len + 1, sizeof(char)); - if (!ret) - return (NULL); - i = 0; - while (i < len && s[start + i]) - { - ret[i] = s[start + i]; - i++; - } - ret[i] = '\0'; - return (ret); -} diff --git a/libft/str/ft_trim.c b/libft/str/ft_trim.c deleted file mode 100755 index 6acfd2d..0000000 --- a/libft/str/ft_trim.c +++ /dev/null @@ -1,53 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strtrim.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: narnaud +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/10/20 13:49:37 by narnaud #+# #+# */ -/* Updated: 2022/03/24 09:22:49 by narnaud ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../libft.h" - -static int ft_search_char(char c, char const *set) -{ - size_t i; - size_t set_len; - - if (!c) - return (0); - i = 0; - set_len = ft_strlen(set); - while (i < set_len) - if (c == set[i++]) - return (1); - return (0); -} - -char *ft_strtrim(char const *s1, char const *set) -{ - unsigned int i; - unsigned int b_out; - unsigned int e_out; - char *ret; - - if (!s1) - return (NULL); - i = 0; - b_out = 0; - e_out = ft_strlen(s1); - while (ft_search_char(s1[b_out], set)) - b_out++; - while (e_out > b_out && ft_search_char(s1[e_out - 1], set)) - e_out--; - ret = malloc((e_out - b_out + 1) * sizeof(char)); - if (!ret) - return (NULL); - while (b_out < e_out) - ret[i++] = s1[b_out++]; - ret[i] = '\0'; - return (ret); -} diff --git a/maps/.DS_Store b/maps/.DS_Store deleted file mode 100644 index 6203e7a33ae715438c658f582f7a647ad7773363..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~F^69HJ~5`q`*XhWzR=H{}1&4=Ko2HQYjz> z-b?`-_MiJ5UnquNP(9s F@B?7u61D&U diff --git a/maps/tester.cub b/maps/tester.cub index fc6eedd..4492508 100644 --- a/maps/tester.cub +++ b/maps/tester.cub @@ -4,8 +4,8 @@ SO ./textures/wood.xpm WE ./textures/wood.xpm DO ./textures/wood.xpm -F 0, 156, 8 -C 27, 210, 227 +F 500, 156, 8 +C 27, 210,27 111111111111111111111111111111111111111111111111 100000000000000000010000000000000000000000000001 diff --git a/mlx/.github/workflows/ci.yml b/mlx/.github/workflows/ci.yml deleted file mode 100644 index 8c880cb..0000000 --- a/mlx/.github/workflows/ci.yml +++ /dev/null @@ -1,88 +0,0 @@ -name: Build - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - build: - - runs-on: ${{ matrix.os }} - env: - DISPLAY: ":99" - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest, macos-latest] - - timeout-minutes: 20 - steps: - - uses: actions/checkout@v2 - - name: Install mlx dependencies - run: | - set -x - if [ "$RUNNER_OS" == "Linux" ]; then - sudo apt-get update -qq - sudo apt-get install -y -qq gcc make xorg libxext-dev libbsd-dev - elif [ "$RUNNER_OS" == "macOS" ]; then - brew install xquartz - echo "/usr/X11/bin" >> $GITHUB_PATH - else - echo "$RUNNER_OS not supported" - exit 1 - fi - - name: Setup x11 headless testing environment - run: | - set -x - if [ "$RUNNER_OS" == "Linux" ]; then - sudo apt-get install xvfb xdotool valgrind - Xvfb $DISPLAY -screen 0 1280x1024x24 & - elif [ "$RUNNER_OS" == "macOS" ]; then - brew install xdotool - defaults write org.x.X11 enable_test_extensions -boolean true - sudo Xvfb $DISPLAY -screen 0 1280x1024x24 & - else - echo "$RUNNER_OS not supported" - exit 1 - fi - - name: Run ./configure - run: ./configure - - - name: make check Linux - if: matrix.os == 'ubuntu-latest' - run: make -f Makefile.gen check - - name: make check MacOS - continue-on-error: true - if: matrix.os == 'macos-latest' - run: make -f Makefile.gen check - # Didn't find a way to simulate inputs on Macos. libxdo seem to no longer work on macos. - # It can be partially fixed writing proper unit-tests, thus avoiding the need of libxdo. - - - name: Check leaks from binary "test/mlx-test" - run: | - cd test - if [ "$RUNNER_OS" == "Linux" ]; then - echo "Info: Still reachable doesn't matter. Valgrind will return success on thoses reports. - It is fine, we searching for lost pointers. Valgrind will return exit status 42 if any block is lost." - valgrind --leak-check=full --show-leak-kinds=definite,indirect,possible --errors-for-leak-kinds=definite,indirect,possible --error-exitcode=42 ./mlx-test > /dev/null & - PID=$! - sleep 30 - xdotool search --name Title3 windowfocus key Escape - xdotool search --name Title2 windowfocus key Escape - wait $PID - elif [ "$RUNNER_OS" == "macOS" ]; then - MallocStackLoggingNoCompact=1 - ./mlx-test & - sleep 30 - leaks mlx-test - pkill mlx-test - fi - - - name: Norminette, just for fun - continue-on-error: true - run: | - pip3 install Norminette - norminette *.c *.h - norminette --version diff --git a/mlx/.gitignore b/mlx/.gitignore deleted file mode 100644 index 9595e5f..0000000 --- a/mlx/.gitignore +++ /dev/null @@ -1,67 +0,0 @@ -## Mlx related -Makefile.gen -/test/mlx-test - -## Editor -.vscode/* -*~ -\#*\# - -## Other -.DS_STORE - - - -## Template from https://github.com/github/gitignore -# Prerequisites -*.d - -# Object files -*.o -*.ko -*.obj -*.elf - -# Linker output -*.ilk -*.map -*.exp - -# Precompiled Headers -*.gch -*.pch - -# Libraries -*.lib -*.a -*.la -*.lo - -# Shared objects (inc. Windows DLLs) -*.dll -*.so -*.so.* -*.dylib - -# Executables -*.exe -*.out -*.app -*.i*86 -*.x86_64 -*.hex - -# Debug files -*.dSYM/ -*.su -*.idb -*.pdb - -# Kernel Module Compile Results -*.mod* -*.cmd -.tmp_versions/ -modules.order -Module.symvers -Mkfile.old -dkms.conf \ No newline at end of file diff --git a/mlx/LICENSE b/mlx/LICENSE deleted file mode 100644 index ed2de25..0000000 --- a/mlx/LICENSE +++ /dev/null @@ -1,25 +0,0 @@ -BSD 2-Clause License - -Copyright (c) 2021, Ecole 42 -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/mlx/Makefile b/mlx/Makefile deleted file mode 100644 index 5c418c5..0000000 --- a/mlx/Makefile +++ /dev/null @@ -1,22 +0,0 @@ -## -## Makefile for MiniLibX in /home/boulon/work/c/raytraceur/minilibx -## -## Made by Olivier Crouzet -## Login -## -## Started on Tue Oct 5 15:56:43 2004 Olivier Crouzet -## Last update Tue May 15 15:44:41 2007 Olivier Crouzet -## - -## Please use configure script - - -all : do_configure - -do_configure : - ./configure - -clean : - ./configure clean - -re : clean all diff --git a/mlx/Makefile.mk b/mlx/Makefile.mk deleted file mode 100644 index 1bae8df..0000000 --- a/mlx/Makefile.mk +++ /dev/null @@ -1,66 +0,0 @@ -## -## Makefile for MiniLibX in /home/boulon/work/c/raytraceur/minilibx -## -## Made by Olivier Crouzet -## Login -## -## Started on Tue Oct 5 15:56:43 2004 Olivier Crouzet -## Last update Tue May 15 15:41:20 2007 Olivier Crouzet -## - -## Please use configure script - - -INC =%%%% - -UNAME = $(shell uname) -CC = gcc -ifeq ($(UNAME),FreeBSD) - CC = clang -endif - -NAME = libmlx.a -NAME_UNAME = libmlx_$(UNAME).a - -SRC = mlx_init.c mlx_new_window.c mlx_pixel_put.c mlx_loop.c \ - mlx_mouse_hook.c mlx_key_hook.c mlx_expose_hook.c mlx_loop_hook.c \ - mlx_int_anti_resize_win.c mlx_int_do_nothing.c \ - mlx_int_wait_first_expose.c mlx_int_get_visual.c \ - mlx_flush_event.c mlx_string_put.c mlx_set_font.c \ - mlx_new_image.c mlx_get_data_addr.c \ - mlx_put_image_to_window.c mlx_get_color_value.c mlx_clear_window.c \ - mlx_xpm.c mlx_int_str_to_wordtab.c mlx_destroy_window.c \ - mlx_int_param_event.c mlx_int_set_win_event_mask.c mlx_hook.c \ - mlx_rgb.c mlx_destroy_image.c mlx_mouse.c mlx_screen_size.c \ - mlx_destroy_display.c - -OBJ_DIR = obj -OBJ = $(addprefix $(OBJ_DIR)/,$(SRC:%.c=%.o)) -CFLAGS = -O3 -I$(INC) - -all : $(NAME) - -$(OBJ_DIR)/%.o: %.c - @mkdir -p $(OBJ_DIR) - $(CC) $(CFLAGS) $(IFLAGS) -c $< -o $@ - -$(NAME) : $(OBJ) - ar -r $(NAME) $(OBJ) - ranlib $(NAME) - cp $(NAME) $(NAME_UNAME) - -check: all - @test/run_tests.sh - -show: - @printf "NAME : $(NAME)\n" - @printf "NAME_UNAME : $(NAME_UNAME)\n" - @printf "CC : $(CC)\n" - @printf "CFLAGS : $(CFLAGS)\n" - @printf "SRC :\n $(SRC)\n" - @printf "OBJ :\n $(OBJ)\n" - -clean : - rm -rf $(OBJ_DIR)/ $(NAME) $(NAME_UNAME) *~ core *.core - -.PHONY: all check show clean diff --git a/mlx/README.md b/mlx/README.md deleted file mode 100755 index cb60744..0000000 --- a/mlx/README.md +++ /dev/null @@ -1,55 +0,0 @@ -[![Build](https://github.com/42Paris/minilibx-linux/actions/workflows/ci.yml/badge.svg)](https://github.com/42Paris/minilibx-linux/actions/workflows/ci.yml) - -This is the MinilibX, a simple X-Window (X11R6) programming API -in C, designed for students, suitable for X-beginners. - - -Contents - - - source code in C to create the mlx library - - man pages (in man/ directory) - - a test program (in test/ directory) is built - with the library - - a public include file mlx.h - - a tiny configure script to generate an appropriate Makefile.gen - -Requirements for Linux - - - MinilibX only support TrueColor visual type (8,15,16,24 or 32 bits depth) - - gcc - - make - - X11 include files (package xorg) - - XShm extension must be present (package libxext-dev) - - Utility functions from BSD systems - development files (package libbsd-dev) - - **e.g. _sudo apt-get install gcc make xorg libxext-dev libbsd-dev_ (Debian/Ubuntu)** - -Requirements for MacOS - - [Xquartz](https://www.xquartz.org/) - -```bash -➜ ~ Brew install Xquartz -➜ ~ reboot -➜ ~ xeyes # run an hello world X11 app -``` - -MlX Color Opacity / Transparency / Alpha (32 bits depth) - - 0xFF (fully transparent) or 0x00 (fully opaque) - -Compile MinilibX - - - run ./configure or make - both will make a few tests, create Makefile.gen - and then automatically run make on this generated Makefile.gen . - libmlx.a and libmlx_$(HOSTTYPE).a are created. - test/mlx-test binary is also created. - - -Install MinilibX - - - no installation script is provided. You may want to install - - libmlx.a and/or libmlx_$(HOSTTYPE).a in /usr/X11/lib or /usr/local/lib - - mlx.h in /usr/X11/include or /usr/local/include - - man/man3/mlx*.1 in /usr/X11/man/man3 or /usr/local/man/man3 - - - Olivier CROUZET - 2014-01-06 - diff --git a/mlx/configure b/mlx/configure deleted file mode 100755 index 18d1e4d..0000000 --- a/mlx/configure +++ /dev/null @@ -1,126 +0,0 @@ -#!/usr/bin/env sh - -set -e - -BOLD="\033[1m" -RESET="\033[0m" -LIGHT_RED="\033[91m" -LIGHT_GREEN="\033[92m" -LIGHT_CYAN="\033[96m" - -logging(){ - local type=$1; shift - printf "${LIGHT_CYAN}${BOLD}configure${RESET} [%b] : %b\n" "$type" "$*" -} -log_info(){ - logging "${LIGHT_GREEN}info${RESET}" "$@" -} -log_error(){ - logging "${LIGHT_RED}error${RESET}" "$@" >&2 -} - -# find and print x11 header path -get_xlib_include_path(){ - local result="" - - for inc in \ - /usr/X11/include \ - /usr/X11R6/include \ - /usr/X11R5/include \ - /usr/X11R4/include \ - \ - /usr/include \ - /usr/include/X11 \ - /usr/include/X11R6 \ - /usr/include/X11R5 \ - /usr/include/X11R4 \ - \ - /usr/local/X11/include \ - /usr/local/X11R6/include \ - /usr/local/X11R5/include \ - /usr/local/X11R4/include \ - \ - /usr/local/include/X11 \ - /usr/local/include/X11R6 \ - /usr/local/include/X11R5 \ - /usr/local/include/X11R4 \ - \ - /usr/X386/include \ - /usr/x386/include \ - /usr/XFree86/include/X11 \ - \ - /usr/local/include \ - /usr/athena/include \ - /usr/local/x11r5/include \ - /usr/lpp/Xamples/include \ - \ - /usr/openwin/include \ - /usr/openwin/share/include - do - if [ -f "$inc/X11/Xlib.h" -a -f "$inc/X11/extensions/XShm.h" ]; then - result=$inc - break - fi - done - echo $result -} - -show_help(){ -cat < Makefile.gen - cat Makefile.mk | grep -v %%%% >> Makefile.gen - log_info 'Generate "test/makefile.gen" from template "test/makefile.mk"' - echo "INC=$xlib_inc" > test/Makefile.gen - cat test/Makefile.mk | grep -v %%%% >> test/Makefile.gen - - log_info 'Execute "make all" from file "makefile.gen"' - ${MAKE} -f Makefile.gen all - log_info 'Execute "make all" from file "test/makefile.gen"' - (cd test ; ${MAKE} -f Makefile.gen all ) -} - -main "$@" diff --git a/mlx/man/man1/mlx.1 b/mlx/man/man1/mlx.1 deleted file mode 100644 index 9ad0ac1..0000000 --- a/mlx/man/man1/mlx.1 +++ /dev/null @@ -1,93 +0,0 @@ -.TH MiniLibX 3 "September 19, 2002" -.SH NAME -MiniLibX - Simple X-Window Interface Library for students -.SH SYNOPSYS -#include - -.nf -.I void * -.fi -.B mlx_init -(); - -.SH DESCRIPTION -MiniLibX is an easy way to create graphical software, -without any X-Window programming knowledge. It provides -simple window creation, a drawing tool, image and basic events -management. - -.SH X-WINDOW CONCEPT - -X-Window is a network-oriented graphical system for Unix. -It is based on two main parts: -.br -On one side, your software wants to draw something on the screen and/or -get keyboard & mouse entries. -.br -On the other side, the X-Server manages the screen, keyboard and mouse -(It is often refered to as a "display"). -.br -A network connection must be established between these two entities to send -drawing orders (from the software to the X-Server), and keyboard/mouse -events (from the X-Server to the software). - -.SH INCLUDE FILE -.B mlx.h -should be included for a correct use of the MiniLibX API. -It only contains function prototypes, no structure is needed. - -.SH LIBRARY FUNCTIONS -.P -First of all, you need to initialize the connection -between your software and the display. -Once this connection is established, you'll be able to -use other MiniLibX functions to send the X-Server messages, -like "I want to draw a yellow pixel in this window" or "did the -user hit a key?". -.P -The -.B mlx_init -function will create this connection. No parameters are needed, ant it will -return a -.I "void *" -identifier, used for further calls to the library routines. -.P -All other MiniLibX functions are described in the following man pages: - -.TP 20 -.B mlx_new_window -: manage windows -.TP 20 -.B mlx_pixel_put -: draw inside window -.TP 20 -.B mlx_new_image -: manipulate images -.TP 20 -.B mlx_loop -: handle keyboard or mouse events - -.SH LINKING MiniLibX -To use MiniLibX functions, you'll need to link -your software with several libraries, including the MiniLibX library itself. -To do this, simply add the following arguments at linking time: - -.B -lmlx -lXext -lX11 - -You may also need to specify the path to these libraries, using -the -.B -L -flag. - - -.SH RETURN VALUES -If -.B mlx_init() -fails to set up the connection to the X server, it will return NULL, otherwise -a non-null pointer is returned as a connection identifier. - -.SH SEE ALSO -mlx_new_window(3), mlx_pixel_put(3), mlx_new_image(3), mlx_loop(3) - -.SH AUTHOR -Copyright ol@ - 2002-2014 - Olivier Crouzet diff --git a/mlx/man/man1/mlx_loop.1 b/mlx/man/man1/mlx_loop.1 deleted file mode 100644 index 3397ce2..0000000 --- a/mlx/man/man1/mlx_loop.1 +++ /dev/null @@ -1,141 +0,0 @@ -.TH MiniLibX 3 "September 19, 2002" -.SH NAME -MiniLibX - Handle events -.SH SYNOPSYS - -.nf -.I int -.fi -.B mlx_loop -( -.I void *mlx_ptr -); - -.nf -.I int -.fi -.B mlx_key_hook -( -.I void *win_ptr, int (*funct_ptr)(), void *param -); - -.nf -.I int -.fi -.B mlx_mouse_hook -( -.I void *win_ptr, int (*funct_ptr)(), void *param -); - -.nf -.I int -.fi -.B mlx_expose_hook -( -.I void *win_ptr, int (*funct_ptr)(), void *param -); - -.nf -.I int -.fi -.B mlx_loop_hook -( -.I void *mlx_ptr, int (*funct_ptr)(), void *param -); - -.SH X-WINDOW EVENTS - -The X-Window system is bi-directionnal. On one hand, the program sends orders to -the screen to display pixels, images, and so on. On the other hand, -it can get information from the keyboard and mouse associated to -the screen. To do so, the program receives "events" from the keyboard or the -mouse. - -.SH DESCRIPTION - -To receive events, you must use -.B mlx_loop -(). This function never returns. It is an infinite loop that waits for -an event, and then calls a user-defined function associated with this event. -A single parameter is needed, the connection identifier -.I mlx_ptr -(see the -.B mlx manual). - -You can assign different functions to the three following events: -.br -- A key is pressed -.br -- The mouse button is pressed -.br -- A part of the window should be re-drawn -(this is called an "expose" event, and it is your program's job to handle it). -.br - -Each window can define a different function for the same event. - -The three functions -.B mlx_key_hook -(), -.B mlx_mouse_hook -() and -.B mlx_expose_hook -() work exactly the same way. -.I funct_ptr -is a pointer to the function you want to be called -when an event occurs. This assignment is specific to the window defined by the -.I win_ptr -identifier. The -.I param -adress will be passed to the function everytime it is called, and should be -used to store the parameters it might need. - -The syntax for the -.B mlx_loop_hook -() function is identical to the previous ones, but the given function will be -called when no event occurs. - -When it catches an event, the MiniLibX calls the corresponding function -with fixed parameters: -.nf - - expose_hook(void *param); - key_hook(int keycode,void *param); - mouse_hook(int button,int x,int y,void *param); - loop_hook(void *param); - -.fi -These function names are arbitrary. They here are used to distinguish -parameters according to the event. These functions are NOT part of the -MiniLibX. - -.I param -is the address specified in the mlx_*_hook calls. This address is never -used nor modified by the MiniLibX. On key and mouse events, additional -information is passed: -.I keycode -tells you which key is pressed (look for the X11 include file "keysymdef.h"), -( -.I x -, -.I y -) are the coordinates of the mouse click in the window, and -.I button -tells you which mouse button was pressed. - -.SH GOING FURTHER WITH EVENTS -The MiniLibX provides a much generic access to all X-Window events. The -.I mlx.h -include define -.B mlx_hook() -in the same manner mlx_*_hook functions work. The event and mask values -will be taken from the X11 include file "X.h". - -See source code of mlx_int_param_event.c to find out how the MiniLibX will -call your own function for a specific event. - -.SH SEE ALSO -mlx(3), mlx_new_window(3), mlx_pixel_put(3), mlx_new_image(3) - -.SH AUTHOR -Copyright ol@ - 2002-2014 - Olivier Crouzet diff --git a/mlx/man/man1/mlx_new_image.1 b/mlx/man/man1/mlx_new_image.1 deleted file mode 100644 index f2160a2..0000000 --- a/mlx/man/man1/mlx_new_image.1 +++ /dev/null @@ -1,192 +0,0 @@ -.TH MiniLibX 3 "September 19, 2002" -.SH NAME -MiniLibX - Manipulating images -.SH SYNOPSYS - -.nf -.I void * -.fi -.B mlx_new_image -( -.I void *mlx_ptr, int width, int height -); - -.nf -.I char * -.fi -.B mlx_get_data_addr -( -.I void *img_ptr, int *bits_per_pixel, int *size_line, int *endian -); - -.nf -.I int -.fi -.B mlx_put_image_to_window -( -.I void *mlx_ptr, void *win_ptr, void *img_ptr, int x, int y -); - -.nf -.I unsigned int -.fi -.B mlx_get_color_value -( -.I void *mlx_ptr, int color -); - -.nf -.I void * -.fi -.B mlx_xpm_to_image -( -.I void *mlx_ptr, char **xpm_data, int *width, int *height -); - -.nf -.I void * -.fi -.B mlx_xpm_file_to_image -( -.I void *mlx_ptr, char *filename, int *width, int *height -); - -.nf -.I int -.fi -.B mlx_destroy_image -( -.I void *mlx_ptr, void *img_ptr -); - - -.SH DESCRIPTION - -.B mlx_new_image -() creates a new image in memory. It returns a -.I void * -identifier needed to manipulate this image later. It only needs -the size of the image to be created, using the -.I width -and -.I height -parameters, and the -.I mlx_ptr -connection identifier (see the -.B mlx -manual). - -The user can draw inside the image (see below), and -can dump the image inside a specified window at any time to -display it on the screen. This is done using -.B mlx_put_image_to_window -(). Three identifiers are needed here, for the connection to the -display, the window to use, and the image (respectively -.I mlx_ptr -, -.I win_ptr -and -.I img_ptr -). The ( -.I x -, -.I y -) coordinates define where the image should be placed in the window. - -.B mlx_get_data_addr -() returns information about the created image, allowing a user -to modify it later. The -.I img_ptr -parameter specifies the image to use. The three next parameters should -be the addresses of three different valid integers. -.I bits_per_pixel -will be filled with the number of bits needed to represent a pixel color -(also called the depth of the image). -.I size_line -is the number of bytes used to store one line of the image in memory. -This information is needed to move from one line to another in the image. -.I endian -tells you wether the pixel color in the image needs to be stored in -little endian ( -.I endian -== 0), or big endian ( -.I endian -== 1). - -.B mlx_get_data_addr -returns a -.I char * -address that represents the begining of the memory area where the image -is stored. From this adress, the first -.I bits_per_pixel -bits represent the color of the first pixel in the first line of -the image. The second group of -.I bits_per_pixel -bits represent the second pixel of the first line, and so on. -Add -.I size_line -to the adress to get the begining of the second line. You can reach any -pixels of the image that way. - -.B mlx_destroy_image -destroys the given image ( -.I img_ptr -). - -.SH STORING COLOR INSIDE IMAGES - -Depending on the display, the number of bits used to store a pixel color -can change. The user usually represents a color in RGB mode, using -one byte for each component (see -.B mlx_pixel_put -manual). This must be translated to fit the -.I bits_per_pixel -requirement of the image, and make the color understandable to the X-Server. -That is the purpose of the -.B mlx_get_color_value -() function. It takes a standard RGB -.I color -parameter, and returns an -.I unsigned int -value. -The -.I bits_per_pixel -least significant bits of this value can be stored in the image. - -Keep in mind that the least significant bits position depends on the local -computer's endian. If the endian of the image (in fact the endian of -the X-Server's computer) differs from the local endian, then the value should -be transformed before being used. - -.SH XPM IMAGES - -The -.B mlx_xpm_to_image -() and -.B mlx_xpm_file_to_image -() functions will create a new image the same way. -They will fill it using the specified -.I xpm_data -or -.I filename -, depending on which function is used. -Note that MiniLibX does not use the standard -Xpm library to deal with xpm images. You may not be able to -read all types of xpm images. It however handles transparency. - -.SH RETURN VALUES -The three functions that create images, -.B mlx_new_image() -, -.B mlx_xpm_to_image() -and -.B mlx_xpm_file_to_image() -, will return NULL if an error occurs. Otherwise they return a non-null pointer -as an image identifier. - - -.SH SEE ALSO -mlx(3), mlx_new_window(3), mlx_pixel_put(3), mlx_loop(3) - -.SH AUTHOR -Copyright ol@ - 2002-2014 - Olivier Crouzet diff --git a/mlx/man/man1/mlx_new_window.1 b/mlx/man/man1/mlx_new_window.1 deleted file mode 100644 index 90f6d47..0000000 --- a/mlx/man/man1/mlx_new_window.1 +++ /dev/null @@ -1,79 +0,0 @@ -.TH MiniLibX 3 "September 19, 2002" -.SH NAME -MiniLibX - Managing windows -.SH SYNOPSYS - -.nf -.I void * -.fi -.B mlx_new_window -( -.I void *mlx_ptr, int size_x, int size_y, char *title -); - -.nf -.I int -.fi -.B mlx_clear_window -( -.I void *mlx_ptr, void *win_ptr -); - -.nf -.I int -.fi -.B mlx_destroy_window -( -.I void *mlx_ptr, void *win_ptr -); - - -.SH DESCRIPTION -The -.B mlx_new_window -() function creates a new window on the screen, using the -.I size_x -and -.I size_y -parameters to determine its size, and -.I title -as the text that should be displayed in the window's title bar. -The -.I mlx_ptr -parameter is the connection identifier returned by -.B mlx_init -() (see the -.B mlx -man page). -.B mlx_new_window -() returns a -.I void * -window identifier that can be used by other MiniLibX calls. -Note that the MiniLibX -can handle an arbitrary number of separate windows. - -.B mlx_clear_window -() and -.B mlx_destroy_window -() respectively clear (in black) and destroy the given window. They both have -the same parameters: -.I mlx_ptr -is the screen connection identifier, and -.I win_ptr -is a window identifier. - -.SH RETURN VALUES -If -.B mlx_new_window() -fails to create a new window (for wathever reason), it will return NULL, -otherwise a non-null pointer is returned as a window identifier. -.B mlx_clear_window -and -.B mlx_destroy_window -right now return nothing. - -.SH SEE ALSO -mlx(3), mlx_pixel_put(3), mlx_new_image(3), mlx_loop(3) - -.SH AUTHOR -Copyright ol@ - 2002-2014 - Olivier Crouzet diff --git a/mlx/man/man1/mlx_pixel_put.1 b/mlx/man/man1/mlx_pixel_put.1 deleted file mode 100644 index 258df58..0000000 --- a/mlx/man/man1/mlx_pixel_put.1 +++ /dev/null @@ -1,84 +0,0 @@ -.TH MiniLibX 3 "September 19, 2002" -.SH NAME -MiniLibX - Drawing inside windows -.SH SYNOPSYS - -.nf -.I int -.fi -.B mlx_pixel_put -( -.I void *mlx_ptr, void *win_ptr, int x, int y, int color -); - -.nf -.I int -.fi -.B mlx_string_put -( -.I void *mlx_ptr, void *win_ptr, int x, int y, int color, char *string -); - - -.SH DESCRIPTION -The -.B mlx_pixel_put -() function draws a defined pixel in the window -.I win_ptr -using the ( -.I x -, -.I y -) coordinates, and the specified -.I color -\&. The origin (0,0) is the upper left corner of the window, the x and y axis -respectively pointing right and down. The connection -identifier, -.I mlx_ptr -, is needed (see the -.B mlx -man page). - -Parameters for -.B mlx_string_put -() have the same meaning. Instead of a simple pixel, the specified -.I string -will be displayed at ( -.I x -, -.I y -). - -In both functions, it is impossible to display anything outside the -specified window, nor display in another window in front of the selected one. - -.SH COLOR MANAGEMENT -The -.I color -parameter has an integer type. The displayed color needs to be encoded -in this integer, following a defined scheme. All displayable colors -can be split in 3 basic colors: red, green and blue. Three associated -values, in the 0-255 range, represent how much of each color is mixed up -to create the original color. Theses three values must be set inside the -integer to display the right color. The three least significant bytes of -this integer are filled as shown in the picture below: - -.TS -allbox; -c s s s s -r c c c c. -Color Integer -Interpretation \[*a] R G B -Bit numbers 31..24 23..16 15..8 7..0 -.TE - -While filling the integer, make sure you avoid endian problems. Remember -that the "blue" byte should always be the least significant one. - - -.SH SEE ALSO -mlx(3), mlx_new_window(3), mlx_new_image(3), mlx_loop(3) - - -.SH AUTHOR -Copyright ol@ - 2002-2014 - Olivier Crouzet diff --git a/mlx/man/man3/mlx.3 b/mlx/man/man3/mlx.3 deleted file mode 100644 index 9ad0ac1..0000000 --- a/mlx/man/man3/mlx.3 +++ /dev/null @@ -1,93 +0,0 @@ -.TH MiniLibX 3 "September 19, 2002" -.SH NAME -MiniLibX - Simple X-Window Interface Library for students -.SH SYNOPSYS -#include - -.nf -.I void * -.fi -.B mlx_init -(); - -.SH DESCRIPTION -MiniLibX is an easy way to create graphical software, -without any X-Window programming knowledge. It provides -simple window creation, a drawing tool, image and basic events -management. - -.SH X-WINDOW CONCEPT - -X-Window is a network-oriented graphical system for Unix. -It is based on two main parts: -.br -On one side, your software wants to draw something on the screen and/or -get keyboard & mouse entries. -.br -On the other side, the X-Server manages the screen, keyboard and mouse -(It is often refered to as a "display"). -.br -A network connection must be established between these two entities to send -drawing orders (from the software to the X-Server), and keyboard/mouse -events (from the X-Server to the software). - -.SH INCLUDE FILE -.B mlx.h -should be included for a correct use of the MiniLibX API. -It only contains function prototypes, no structure is needed. - -.SH LIBRARY FUNCTIONS -.P -First of all, you need to initialize the connection -between your software and the display. -Once this connection is established, you'll be able to -use other MiniLibX functions to send the X-Server messages, -like "I want to draw a yellow pixel in this window" or "did the -user hit a key?". -.P -The -.B mlx_init -function will create this connection. No parameters are needed, ant it will -return a -.I "void *" -identifier, used for further calls to the library routines. -.P -All other MiniLibX functions are described in the following man pages: - -.TP 20 -.B mlx_new_window -: manage windows -.TP 20 -.B mlx_pixel_put -: draw inside window -.TP 20 -.B mlx_new_image -: manipulate images -.TP 20 -.B mlx_loop -: handle keyboard or mouse events - -.SH LINKING MiniLibX -To use MiniLibX functions, you'll need to link -your software with several libraries, including the MiniLibX library itself. -To do this, simply add the following arguments at linking time: - -.B -lmlx -lXext -lX11 - -You may also need to specify the path to these libraries, using -the -.B -L -flag. - - -.SH RETURN VALUES -If -.B mlx_init() -fails to set up the connection to the X server, it will return NULL, otherwise -a non-null pointer is returned as a connection identifier. - -.SH SEE ALSO -mlx_new_window(3), mlx_pixel_put(3), mlx_new_image(3), mlx_loop(3) - -.SH AUTHOR -Copyright ol@ - 2002-2014 - Olivier Crouzet diff --git a/mlx/man/man3/mlx_loop.3 b/mlx/man/man3/mlx_loop.3 deleted file mode 100644 index 3397ce2..0000000 --- a/mlx/man/man3/mlx_loop.3 +++ /dev/null @@ -1,141 +0,0 @@ -.TH MiniLibX 3 "September 19, 2002" -.SH NAME -MiniLibX - Handle events -.SH SYNOPSYS - -.nf -.I int -.fi -.B mlx_loop -( -.I void *mlx_ptr -); - -.nf -.I int -.fi -.B mlx_key_hook -( -.I void *win_ptr, int (*funct_ptr)(), void *param -); - -.nf -.I int -.fi -.B mlx_mouse_hook -( -.I void *win_ptr, int (*funct_ptr)(), void *param -); - -.nf -.I int -.fi -.B mlx_expose_hook -( -.I void *win_ptr, int (*funct_ptr)(), void *param -); - -.nf -.I int -.fi -.B mlx_loop_hook -( -.I void *mlx_ptr, int (*funct_ptr)(), void *param -); - -.SH X-WINDOW EVENTS - -The X-Window system is bi-directionnal. On one hand, the program sends orders to -the screen to display pixels, images, and so on. On the other hand, -it can get information from the keyboard and mouse associated to -the screen. To do so, the program receives "events" from the keyboard or the -mouse. - -.SH DESCRIPTION - -To receive events, you must use -.B mlx_loop -(). This function never returns. It is an infinite loop that waits for -an event, and then calls a user-defined function associated with this event. -A single parameter is needed, the connection identifier -.I mlx_ptr -(see the -.B mlx manual). - -You can assign different functions to the three following events: -.br -- A key is pressed -.br -- The mouse button is pressed -.br -- A part of the window should be re-drawn -(this is called an "expose" event, and it is your program's job to handle it). -.br - -Each window can define a different function for the same event. - -The three functions -.B mlx_key_hook -(), -.B mlx_mouse_hook -() and -.B mlx_expose_hook -() work exactly the same way. -.I funct_ptr -is a pointer to the function you want to be called -when an event occurs. This assignment is specific to the window defined by the -.I win_ptr -identifier. The -.I param -adress will be passed to the function everytime it is called, and should be -used to store the parameters it might need. - -The syntax for the -.B mlx_loop_hook -() function is identical to the previous ones, but the given function will be -called when no event occurs. - -When it catches an event, the MiniLibX calls the corresponding function -with fixed parameters: -.nf - - expose_hook(void *param); - key_hook(int keycode,void *param); - mouse_hook(int button,int x,int y,void *param); - loop_hook(void *param); - -.fi -These function names are arbitrary. They here are used to distinguish -parameters according to the event. These functions are NOT part of the -MiniLibX. - -.I param -is the address specified in the mlx_*_hook calls. This address is never -used nor modified by the MiniLibX. On key and mouse events, additional -information is passed: -.I keycode -tells you which key is pressed (look for the X11 include file "keysymdef.h"), -( -.I x -, -.I y -) are the coordinates of the mouse click in the window, and -.I button -tells you which mouse button was pressed. - -.SH GOING FURTHER WITH EVENTS -The MiniLibX provides a much generic access to all X-Window events. The -.I mlx.h -include define -.B mlx_hook() -in the same manner mlx_*_hook functions work. The event and mask values -will be taken from the X11 include file "X.h". - -See source code of mlx_int_param_event.c to find out how the MiniLibX will -call your own function for a specific event. - -.SH SEE ALSO -mlx(3), mlx_new_window(3), mlx_pixel_put(3), mlx_new_image(3) - -.SH AUTHOR -Copyright ol@ - 2002-2014 - Olivier Crouzet diff --git a/mlx/man/man3/mlx_new_image.3 b/mlx/man/man3/mlx_new_image.3 deleted file mode 100644 index f2160a2..0000000 --- a/mlx/man/man3/mlx_new_image.3 +++ /dev/null @@ -1,192 +0,0 @@ -.TH MiniLibX 3 "September 19, 2002" -.SH NAME -MiniLibX - Manipulating images -.SH SYNOPSYS - -.nf -.I void * -.fi -.B mlx_new_image -( -.I void *mlx_ptr, int width, int height -); - -.nf -.I char * -.fi -.B mlx_get_data_addr -( -.I void *img_ptr, int *bits_per_pixel, int *size_line, int *endian -); - -.nf -.I int -.fi -.B mlx_put_image_to_window -( -.I void *mlx_ptr, void *win_ptr, void *img_ptr, int x, int y -); - -.nf -.I unsigned int -.fi -.B mlx_get_color_value -( -.I void *mlx_ptr, int color -); - -.nf -.I void * -.fi -.B mlx_xpm_to_image -( -.I void *mlx_ptr, char **xpm_data, int *width, int *height -); - -.nf -.I void * -.fi -.B mlx_xpm_file_to_image -( -.I void *mlx_ptr, char *filename, int *width, int *height -); - -.nf -.I int -.fi -.B mlx_destroy_image -( -.I void *mlx_ptr, void *img_ptr -); - - -.SH DESCRIPTION - -.B mlx_new_image -() creates a new image in memory. It returns a -.I void * -identifier needed to manipulate this image later. It only needs -the size of the image to be created, using the -.I width -and -.I height -parameters, and the -.I mlx_ptr -connection identifier (see the -.B mlx -manual). - -The user can draw inside the image (see below), and -can dump the image inside a specified window at any time to -display it on the screen. This is done using -.B mlx_put_image_to_window -(). Three identifiers are needed here, for the connection to the -display, the window to use, and the image (respectively -.I mlx_ptr -, -.I win_ptr -and -.I img_ptr -). The ( -.I x -, -.I y -) coordinates define where the image should be placed in the window. - -.B mlx_get_data_addr -() returns information about the created image, allowing a user -to modify it later. The -.I img_ptr -parameter specifies the image to use. The three next parameters should -be the addresses of three different valid integers. -.I bits_per_pixel -will be filled with the number of bits needed to represent a pixel color -(also called the depth of the image). -.I size_line -is the number of bytes used to store one line of the image in memory. -This information is needed to move from one line to another in the image. -.I endian -tells you wether the pixel color in the image needs to be stored in -little endian ( -.I endian -== 0), or big endian ( -.I endian -== 1). - -.B mlx_get_data_addr -returns a -.I char * -address that represents the begining of the memory area where the image -is stored. From this adress, the first -.I bits_per_pixel -bits represent the color of the first pixel in the first line of -the image. The second group of -.I bits_per_pixel -bits represent the second pixel of the first line, and so on. -Add -.I size_line -to the adress to get the begining of the second line. You can reach any -pixels of the image that way. - -.B mlx_destroy_image -destroys the given image ( -.I img_ptr -). - -.SH STORING COLOR INSIDE IMAGES - -Depending on the display, the number of bits used to store a pixel color -can change. The user usually represents a color in RGB mode, using -one byte for each component (see -.B mlx_pixel_put -manual). This must be translated to fit the -.I bits_per_pixel -requirement of the image, and make the color understandable to the X-Server. -That is the purpose of the -.B mlx_get_color_value -() function. It takes a standard RGB -.I color -parameter, and returns an -.I unsigned int -value. -The -.I bits_per_pixel -least significant bits of this value can be stored in the image. - -Keep in mind that the least significant bits position depends on the local -computer's endian. If the endian of the image (in fact the endian of -the X-Server's computer) differs from the local endian, then the value should -be transformed before being used. - -.SH XPM IMAGES - -The -.B mlx_xpm_to_image -() and -.B mlx_xpm_file_to_image -() functions will create a new image the same way. -They will fill it using the specified -.I xpm_data -or -.I filename -, depending on which function is used. -Note that MiniLibX does not use the standard -Xpm library to deal with xpm images. You may not be able to -read all types of xpm images. It however handles transparency. - -.SH RETURN VALUES -The three functions that create images, -.B mlx_new_image() -, -.B mlx_xpm_to_image() -and -.B mlx_xpm_file_to_image() -, will return NULL if an error occurs. Otherwise they return a non-null pointer -as an image identifier. - - -.SH SEE ALSO -mlx(3), mlx_new_window(3), mlx_pixel_put(3), mlx_loop(3) - -.SH AUTHOR -Copyright ol@ - 2002-2014 - Olivier Crouzet diff --git a/mlx/man/man3/mlx_new_window.3 b/mlx/man/man3/mlx_new_window.3 deleted file mode 100644 index 90f6d47..0000000 --- a/mlx/man/man3/mlx_new_window.3 +++ /dev/null @@ -1,79 +0,0 @@ -.TH MiniLibX 3 "September 19, 2002" -.SH NAME -MiniLibX - Managing windows -.SH SYNOPSYS - -.nf -.I void * -.fi -.B mlx_new_window -( -.I void *mlx_ptr, int size_x, int size_y, char *title -); - -.nf -.I int -.fi -.B mlx_clear_window -( -.I void *mlx_ptr, void *win_ptr -); - -.nf -.I int -.fi -.B mlx_destroy_window -( -.I void *mlx_ptr, void *win_ptr -); - - -.SH DESCRIPTION -The -.B mlx_new_window -() function creates a new window on the screen, using the -.I size_x -and -.I size_y -parameters to determine its size, and -.I title -as the text that should be displayed in the window's title bar. -The -.I mlx_ptr -parameter is the connection identifier returned by -.B mlx_init -() (see the -.B mlx -man page). -.B mlx_new_window -() returns a -.I void * -window identifier that can be used by other MiniLibX calls. -Note that the MiniLibX -can handle an arbitrary number of separate windows. - -.B mlx_clear_window -() and -.B mlx_destroy_window -() respectively clear (in black) and destroy the given window. They both have -the same parameters: -.I mlx_ptr -is the screen connection identifier, and -.I win_ptr -is a window identifier. - -.SH RETURN VALUES -If -.B mlx_new_window() -fails to create a new window (for wathever reason), it will return NULL, -otherwise a non-null pointer is returned as a window identifier. -.B mlx_clear_window -and -.B mlx_destroy_window -right now return nothing. - -.SH SEE ALSO -mlx(3), mlx_pixel_put(3), mlx_new_image(3), mlx_loop(3) - -.SH AUTHOR -Copyright ol@ - 2002-2014 - Olivier Crouzet diff --git a/mlx/man/man3/mlx_pixel_put.3 b/mlx/man/man3/mlx_pixel_put.3 deleted file mode 100644 index f4d131e..0000000 --- a/mlx/man/man3/mlx_pixel_put.3 +++ /dev/null @@ -1,81 +0,0 @@ -.TH MiniLibX 3 "September 19, 2002" -.SH NAME -MiniLibX - Drawing inside windows -.SH SYNOPSYS - -.nf -.I int -.fi -.B mlx_pixel_put -( -.I void *mlx_ptr, void *win_ptr, int x, int y, int color -); - -.nf -.I int -.fi -.B mlx_string_put -( -.I void *mlx_ptr, void *win_ptr, int x, int y, int color, char *string -); - - -.SH DESCRIPTION -The -.B mlx_pixel_put -() function draws a defined pixel in the window -.I win_ptr -using the ( -.I x -, -.I y -) coordinates, and the specified -.I color -\&. The origin (0,0) is the upper left corner of the window, the x and y axis -respectively pointing right and down. The connection -identifier, -.I mlx_ptr -, is needed (see the -.B mlx -man page). - -Parameters for -.B mlx_string_put -() have the same meaning. Instead of a simple pixel, the specified -.I string -will be displayed at ( -.I x -, -.I y -). - -In both functions, it is impossible to display anything outside the -specified window, nor display in another window in front of the selected one. - -.SH COLOR MANAGEMENT -The -.I color -parameter has an integer type. The displayed color needs to be encoded -in this integer, following a defined scheme. All displayable colors -can be split in 3 basic colors: red, green and blue. Three associated -values, in the 0-255 range, represent how much of each color is mixed up -to create the original color. Theses three values must be set inside the -integer to display the right color. The three least significant bytes of -this integer are filled as shown in the picture below: - -.nf - | 0 | R | G | B | color integer - +---+---+---+---+ -.fi - - -While filling the integer, make sure you avoid endian problems. Remember -that the "blue" byte should always be the least significant one. - - -.SH SEE ALSO -mlx(3), mlx_new_window(3), mlx_new_image(3), mlx_loop(3) - - -.SH AUTHOR -Copyright ol@ - 2002-2014 - Olivier Crouzet diff --git a/mlx/mlx.h b/mlx/mlx.h deleted file mode 100644 index b323412..0000000 --- a/mlx/mlx.h +++ /dev/null @@ -1,139 +0,0 @@ -/* -** mlx.h for MinilibX in -** -** Made by Charlie Root -** Login -** -** Started on Mon Jul 31 16:37:50 2000 Charlie Root -** Last update Tue May 15 16:23:28 2007 Olivier Crouzet -*/ - -/* -** MinilibX - Please report bugs -*/ - - -/* -** FR msg - FR msg - FR msg -** -** La MinilibX utilise 2 librairies supplementaires qu'il -** est necessaire de rajouter a la compilation : -** -lmlx -lXext -lX11 -** -** La MinilibX permet le chargement des images de type Xpm. -** Notez que cette implementation est incomplete. -** Merci de communiquer tout probleme de chargement d'image -** de ce type. -*/ - - -#ifndef MLX_H - -#define MLX_H - - -void *mlx_init(); -/* -** needed before everything else. -** return (void *)0 if failed -*/ - - -/* -** Basic actions -*/ - -void *mlx_new_window(void *mlx_ptr, int size_x, int size_y, char *title); -/* -** return void *0 if failed -*/ -int mlx_clear_window(void *mlx_ptr, void *win_ptr); -int mlx_pixel_put(void *mlx_ptr, void *win_ptr, int x, int y, int color); -/* -** origin for x & y is top left corner of the window -** y down is positive -** color is 0x00RRGGBB -*/ - - -/* -** Image stuff -*/ - -void *mlx_new_image(void *mlx_ptr,int width,int height); -/* -** return void *0 if failed -** obsolete : image2 data is stored using bit planes -** void *mlx_new_image2(void *mlx_ptr,int width,int height); -*/ -char *mlx_get_data_addr(void *img_ptr, int *bits_per_pixel, - int *size_line, int *endian); -/* -** endian : 0 = sever X is little endian, 1 = big endian -** for mlx_new_image2, 2nd arg of mlx_get_data_addr is number_of_planes -*/ -int mlx_put_image_to_window(void *mlx_ptr, void *win_ptr, void *img_ptr, - int x, int y); -int mlx_get_color_value(void *mlx_ptr, int color); - - -/* -** dealing with Events -*/ - -int mlx_mouse_hook (void *win_ptr, int (*funct_ptr)(), void *param); -int mlx_key_hook (void *win_ptr, int (*funct_ptr)(), void *param); -int mlx_expose_hook (void *win_ptr, int (*funct_ptr)(), void *param); - -int mlx_loop_hook (void *mlx_ptr, int (*funct_ptr)(), void *param); -int mlx_loop (void *mlx_ptr); -int mlx_loop_end (void *mlx_ptr); - -/* -** hook funct are called as follow : -** -** expose_hook(void *param); -** key_hook(int keycode, void *param); -** mouse_hook(int button, int x,int y, void *param); -** loop_hook(void *param); -** -*/ - - -/* -** Usually asked... -*/ - -int mlx_string_put(void *mlx_ptr, void *win_ptr, int x, int y, int color, - char *string); -void mlx_set_font(void *mlx_ptr, void *win_ptr, char *name); -void *mlx_xpm_to_image(void *mlx_ptr, char **xpm_data, - int *width, int *height); -void *mlx_xpm_file_to_image(void *mlx_ptr, char *filename, - int *width, int *height); -int mlx_destroy_window(void *mlx_ptr, void *win_ptr); - -int mlx_destroy_image(void *mlx_ptr, void *img_ptr); - -int mlx_destroy_display(void *mlx_ptr); - -/* -** generic hook system for all events, and minilibX functions that -** can be hooked. Some macro and defines from X11/X.h are needed here. -*/ - -int mlx_hook(void *win_ptr, int x_event, int x_mask, - int (*funct)(), void *param); - -int mlx_do_key_autorepeatoff(void *mlx_ptr); -int mlx_do_key_autorepeaton(void *mlx_ptr); -int mlx_do_sync(void *mlx_ptr); - -int mlx_mouse_get_pos(void *mlx_ptr, void *win_ptr, int *x, int *y); -int mlx_mouse_move(void *mlx_ptr, void *win_ptr, int x, int y); -int mlx_mouse_hide(void *mlx_ptr, void *win_ptr); -int mlx_mouse_show(void *mlx_ptr, void *win_ptr); - -int mlx_get_screen_size(void *mlx_ptr, int *sizex, int *sizey); - -#endif /* MLX_H */ diff --git a/mlx/mlx_clear_window.c b/mlx/mlx_clear_window.c deleted file mode 100644 index f621090..0000000 --- a/mlx/mlx_clear_window.c +++ /dev/null @@ -1,21 +0,0 @@ -/* -** mlx_clear_window.c for MiniLibX in -** -** Made by Charlie Root -** Login -** -** Started on Thu Sep 7 19:46:15 2000 Charlie Root -** Last update Tue Sep 25 17:11:19 2001 Charlie Root -*/ - - - -#include "mlx_int.h" - - -int mlx_clear_window(t_xvar *xvar,t_win_list *win) -{ - XClearWindow(xvar->display,win->window); - if (xvar->do_flush) - XFlush(xvar->display); -} diff --git a/mlx/mlx_destroy_display.c b/mlx/mlx_destroy_display.c deleted file mode 100644 index d2970b8..0000000 --- a/mlx/mlx_destroy_display.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* mlx_destroy_display.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: mg +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2020/10/03 18:56:35 by mg #+# #+# */ -/* Updated: 2020/10/04 01:55:35 by mg ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "mlx_int.h" - -int mlx_destroy_display(t_xvar *xvar) -{ - XCloseDisplay(xvar->display); -} diff --git a/mlx/mlx_destroy_image.c b/mlx/mlx_destroy_image.c deleted file mode 100644 index afd4d1a..0000000 --- a/mlx/mlx_destroy_image.c +++ /dev/null @@ -1,31 +0,0 @@ -/* -** mlx_destroy_image.c for MinilibX in -** -** Made by Charlie Root -** Login -** -** Started on Tue Mar 12 10:25:15 2002 Charlie Root -** Last update Tue May 15 16:45:54 2007 Olivier Crouzet -*/ - - -#include "mlx_int.h" - - -int mlx_destroy_image(t_xvar *xvar, t_img *img) -{ - if (img->type == MLX_TYPE_SHM_PIXMAP || - img->type == MLX_TYPE_SHM) - { - XShmDetach(xvar->display, &(img->shm)); - shmdt(img->shm.shmaddr); - /* shmctl IPC_RMID already done */ - } - XDestroyImage(img->image); /* For image & shm-image. Also free img->data */ - XFreePixmap(xvar->display, img->pix); - if (img->gc) - XFreeGC(xvar->display, img->gc); - free(img); - if (xvar->do_flush) - XFlush(xvar->display); -} diff --git a/mlx/mlx_destroy_window.c b/mlx/mlx_destroy_window.c deleted file mode 100644 index 464790c..0000000 --- a/mlx/mlx_destroy_window.c +++ /dev/null @@ -1,38 +0,0 @@ -/* -** mlx_destroy_window.c for MinilibX in -** -** Made by Charlie Root -** Login -** -** Started on Tue Mar 12 10:25:15 2002 Charlie Root -** Last update Tue May 15 16:46:08 2007 Olivier Crouzet -*/ - - -#include "mlx_int.h" - - -int mlx_destroy_window(t_xvar *xvar,t_win_list *win) -{ - t_win_list *w; - t_win_list *prev; - t_win_list first; - - first.next = xvar->win_list; - prev = &first; - w = prev->next; - while (w) - { - if (w==win) - prev->next = w->next; - else - prev = w; - w = w->next; - } - xvar->win_list = first.next; - XDestroyWindow(xvar->display,win->window); - XFreeGC(xvar->display,win->gc); - free(win); - if (xvar->do_flush) - XFlush(xvar->display); -} diff --git a/mlx/mlx_expose_hook.c b/mlx/mlx_expose_hook.c deleted file mode 100644 index b00b675..0000000 --- a/mlx/mlx_expose_hook.c +++ /dev/null @@ -1,22 +0,0 @@ -/* -** mlx_expose_hook.c for MiniLibX in -** -** Made by Charlie Root -** Login -** -** Started on Thu Aug 3 11:49:06 2000 Charlie Root -** Last update Fri Feb 23 17:07:42 2001 Charlie Root -*/ - - -#include "mlx_int.h" - - - - -int mlx_expose_hook(t_win_list *win,int (*funct)(),void *param) -{ - win->hooks[Expose].hook = funct; - win->hooks[Expose].param = param; - win->hooks[Expose].mask = ExposureMask; -} diff --git a/mlx/mlx_ext_randr.c b/mlx/mlx_ext_randr.c deleted file mode 100644 index 34ddb91..0000000 --- a/mlx/mlx_ext_randr.c +++ /dev/null @@ -1,104 +0,0 @@ - - - -#include "mlx_int.h" - -#include -#include - -/* global for independant extension */ - -RRMode saved_mode = 0; - - -int mlx_ext_fullscreen(t_xvar *xvar, t_win_list *win, int fullscreen) -{ - XWindowAttributes watt; - int i; - int j; - XRRScreenResources *res; - XRROutputInfo *o_info; - XRRCrtcInfo *crtc; - RRMode mode_candidate; - int idx_output; - int idx_candidate; - - if (!XGetWindowAttributes(xvar->display, win->window, &watt)) - return (0); - - res = XRRGetScreenResources(xvar->display, xvar->root); - o_info = NULL; - idx_output = -1; - i = res->noutput; - while (i--) - { - o_info = XRRGetOutputInfo(xvar->display, res, res->outputs[i]); - if (o_info->connection == RR_Connected) - { - idx_output = i; - i = 0; - } - else - XRRFreeOutputInfo(o_info); - } - if (!o_info) - { - XRRFreeScreenResources(res); - return (0); - } - - idx_candidate = -1; - i = o_info->nmode; - while (i--) - { - j = res->nmode; - while (j--) - if (res->modes[j].id == o_info->modes[i]) - if (res->modes[j].width >= watt.width && res->modes[j].height >= watt.height && - (idx_candidate == -1 || res->modes[idx_candidate].width > res->modes[j].width || - res->modes[idx_candidate].height > res->modes[j].height) ) - idx_candidate = i; - } - if (idx_candidate < 0) - { - XRRFreeOutputInfo(o_info); - XRRFreeScreenResources(res); - return (0); - } - if (!fullscreen && saved_mode == -1) - idx_candidate = 0; /* if no clue, uses first mode, usually part of npreferred */ - mode_candidate = o_info->modes[idx_candidate]; - if (!fullscreen) - mode_candidate = saved_mode; - - crtc = XRRGetCrtcInfo(xvar->display, res, o_info->crtc); - saved_mode = crtc->mode; - - i = XRRSetCrtcConfig(xvar->display, res, o_info->crtc, CurrentTime, 0, 0, mode_candidate, - crtc->rotation, &res->outputs[idx_output], 1); - if (fullscreen) - printf("found mode : %d x %d\n Status %d\n", res->modes[idx_candidate].width, res->modes[idx_candidate].height, i); - else - printf("back previous mode\n"); - - XMoveWindow(xvar->display, win->window, 0, 0); - XMapRaised(xvar->display, win->window); - - if (fullscreen) - { - // XGrabPointer(xvar->display, win->window, True, 0, GrabModeAsync, GrabModeAsync, win->window, 0L, CurrentTime); - XGrabKeyboard(xvar->display, win->window, False, GrabModeAsync, GrabModeAsync, CurrentTime); - } - else - { - XUngrabPointer(xvar->display, CurrentTime); - XUngrabKeyboard(xvar->display, CurrentTime); - } - - XSync(xvar->display, False); - sleep(1); - - XRRFreeCrtcInfo(crtc); - XRRFreeOutputInfo(o_info); - XRRFreeScreenResources(res); -} diff --git a/mlx/mlx_flush_event.c b/mlx/mlx_flush_event.c deleted file mode 100644 index 1e586ad..0000000 --- a/mlx/mlx_flush_event.c +++ /dev/null @@ -1,25 +0,0 @@ -/* -** mlx_flush_event.c for MiniLibX in -** -** Made by Charlie Root -** Login -** -** Started on Wed Aug 2 18:58:11 2000 Charlie Root -** Last update Fri Feb 23 17:08:48 2001 Charlie Root -*/ - - -#include "mlx_int.h" - - - - -int mlx_flush_event(t_xvar *xvar) -{ - XEvent ev; - - while (XPending(xvar->display)) - { - XNextEvent(xvar->display,&ev); - } -} diff --git a/mlx/mlx_get_color_value.c b/mlx/mlx_get_color_value.c deleted file mode 100644 index b620970..0000000 --- a/mlx/mlx_get_color_value.c +++ /dev/null @@ -1,33 +0,0 @@ -/* -** mlx_get_color_value.c for MiniLibX in -** -** Made by Charlie Root -** Login -** -** Started on Mon Jul 31 19:01:33 2000 Charlie Root -** Last update Thu Oct 4 15:04:13 2001 Charlie Root -*/ - - -#include "mlx_int.h" - - -int mlx_get_color_value(t_xvar *xvar,int color) -{ - return(mlx_int_get_good_color(xvar,color)); -} - -int mlx_int_get_good_color(t_xvar *xvar,int color) -{ - XColor xc; - - if (xvar->depth>=24) - return (color); - xc.red = (color>>8)&0xFF00; - xc.green = color&0xFF00; - xc.blue = (color<<8)&0xFF00; - xc.pixel = ((xc.red>>(16-xvar->decrgb[1]))<decrgb[0])+ - ((xc.green>>(16-xvar->decrgb[3]))<decrgb[2])+ - ((xc.blue>>(16-xvar->decrgb[5]))<decrgb[4]); - return (xc.pixel); -} diff --git a/mlx/mlx_get_data_addr.c b/mlx/mlx_get_data_addr.c deleted file mode 100644 index 45e7a85..0000000 --- a/mlx/mlx_get_data_addr.c +++ /dev/null @@ -1,23 +0,0 @@ -/* -** mlx_get_data_addr.c for MiniLibX in raytraceur -** -** Made by Charlie Root -** Login -** -** Started on Mon Aug 14 15:45:57 2000 Charlie Root -** Last update Thu Sep 27 19:05:25 2001 Charlie Root -*/ - - - -#include "mlx_int.h" - - -char *mlx_get_data_addr(t_img *img,int *bits_per_pixel, - int *size_line,int *endian) -{ - *bits_per_pixel = img->bpp; - *size_line = img->size_line; - *endian = img->image->byte_order; - return (img->data); -} diff --git a/mlx/mlx_hook.c b/mlx/mlx_hook.c deleted file mode 100644 index 98e509a..0000000 --- a/mlx/mlx_hook.c +++ /dev/null @@ -1,40 +0,0 @@ -/* -** mlx_hook.c for MiniLibX in -** -** Made by Charlie Root -** Login -** -** Started on Thu Aug 3 11:49:06 2000 Charlie Root -** Last update Fri Jan 28 17:05:28 2005 Olivier Crouzet -*/ - - -#include "mlx_int.h" - - - - -int mlx_hook(t_win_list *win, int x_event, int x_mask, - int (*funct)(),void *param) -{ - win->hooks[x_event].hook = funct; - win->hooks[x_event].param = param; - win->hooks[x_event].mask = x_mask; -} - - -int mlx_do_key_autorepeatoff(t_xvar *xvar) -{ - XAutoRepeatOff(xvar->display); -} - -int mlx_do_key_autorepeaton(t_xvar *xvar) -{ - XAutoRepeatOn(xvar->display); -} - - -int mlx_do_sync(t_xvar *xvar) -{ - XSync(xvar->display, False); -} diff --git a/mlx/mlx_init.c b/mlx/mlx_init.c deleted file mode 100644 index c9d7463..0000000 --- a/mlx/mlx_init.c +++ /dev/null @@ -1,99 +0,0 @@ -/* -** mlx_init.c for MiniLibX in -** -** Made by Charlie Root -** Login -** -** Started on Mon Jul 31 16:52:42 2000 Charlie Root -** Last update Fri Jan 28 17:05:09 2005 Olivier Crouzet -*/ - - -#include "mlx_int.h" - - - -void *mlx_init() -{ - t_xvar *xvar; - - if (!(xvar = malloc(sizeof(*xvar)))) - return ((void*)0); - if ((xvar->display = XOpenDisplay("")) == 0) - { - free(xvar); - return ((void*)0); - } - xvar->screen = DefaultScreen(xvar->display); - xvar->root = DefaultRootWindow(xvar->display); - xvar->cmap = DefaultColormap(xvar->display,xvar->screen); - xvar->depth = DefaultDepth(xvar->display,xvar->screen); - if (mlx_int_get_visual(xvar)==-1) - { - printf(ERR_NO_TRUECOLOR); - exit(1); - } - xvar->win_list = 0; - xvar->loop_hook = 0; - xvar->loop_param = (void *)0; - xvar->do_flush = 1; - xvar->wm_delete_window = XInternAtom (xvar->display, "WM_DELETE_WINDOW", False); - xvar->wm_protocols = XInternAtom (xvar->display, "WM_PROTOCOLS", False); - mlx_int_deal_shm(xvar); - if (xvar->private_cmap) - xvar->cmap = XCreateColormap(xvar->display,xvar->root, - xvar->visual,AllocNone); - mlx_int_rgb_conversion(xvar); - xvar->end_loop = 0; - return (xvar); -} - - -/* -** pshm_format of -1 : Not XYBitmap|XYPixmap|ZPixmap -** alpha libX need a check of the DISPLAY env var, or shm is allowed -** in remote Xserver connections. -*/ - -int mlx_int_deal_shm(t_xvar *xvar) -{ - int use_pshm; - int bidon; - char *dpy; - char buff[33]; - - xvar->use_xshm = XShmQueryVersion(xvar->display,&bidon,&bidon,&(use_pshm)); - if (xvar->use_xshm && use_pshm) - xvar->pshm_format = XShmPixmapFormat(xvar->display); - else - xvar->pshm_format = -1; - gethostname(buff,32); - dpy = getenv(ENV_DISPLAY); - if (dpy && strlen(dpy) && *dpy!=':' && strncmp(dpy,buff,strlen(buff)) && - strncmp(dpy,LOCALHOST,strlen(LOCALHOST)) ) - { - xvar->pshm_format = -1; - xvar->use_xshm = 0; - } -} - -/* -** TrueColor Visual is needed to have *_mask correctly set -*/ - -int mlx_int_rgb_conversion(t_xvar *xvar) -{ - bzero(xvar->decrgb,sizeof(int)*6); - while (!(xvar->visual->red_mask&1)) - { xvar->visual->red_mask >>= 1; xvar->decrgb[0] ++; } - while (xvar->visual->red_mask&1) - { xvar->visual->red_mask >>= 1; xvar->decrgb[1] ++; } - while (!(xvar->visual->green_mask&1)) - { xvar->visual->green_mask >>= 1; xvar->decrgb[2] ++; } - while (xvar->visual->green_mask&1) - { xvar->visual->green_mask >>= 1; xvar->decrgb[3] ++; } - while (!(xvar->visual->blue_mask&1)) - { xvar->visual->blue_mask >>= 1; xvar->decrgb[4] ++; } - while (xvar->visual->blue_mask&1) - { xvar->visual->blue_mask >>= 1; xvar->decrgb[5] ++; } -} diff --git a/mlx/mlx_int.h b/mlx/mlx_int.h deleted file mode 100644 index c49d1b7..0000000 --- a/mlx/mlx_int.h +++ /dev/null @@ -1,140 +0,0 @@ -/* -** mlx_int.h for mlx in -** -** Made by Charlie Root -** Login -** -** Started on Mon Jul 31 16:45:48 2000 Charlie Root -** Last update Wed May 25 16:44:16 2011 Olivier Crouzet -*/ - - - -/* -** Internal settings for MiniLibX -*/ - -#ifndef MLX_INT_H - -# define MLX_INT_H - -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -/* #include */ - - -# define MLX_TYPE_SHM_PIXMAP 3 -# define MLX_TYPE_SHM 2 -# define MLX_TYPE_XIMAGE 1 - -# define MLX_MAX_EVENT LASTEvent - - -# define ENV_DISPLAY "DISPLAY" -# define LOCALHOST "localhost" -# define ERR_NO_TRUECOLOR "MinilibX Error : No TrueColor Visual available.\n" -# define WARN_SHM_ATTACH "MinilibX Warning : X server can't attach shared memory.\n" - - -typedef struct s_xpm_col -{ - int name; - int col; -} t_xpm_col; - - -struct s_col_name -{ - char *name; - int color; -}; - -typedef struct s_event_list -{ - int mask; - int (*hook)(); - void *param; -} t_event_list; - - -typedef struct s_win_list -{ - Window window; - GC gc; - struct s_win_list *next; - int (*mouse_hook)(); - int (*key_hook)(); - int (*expose_hook)(); - void *mouse_param; - void *key_param; - void *expose_param; - t_event_list hooks[MLX_MAX_EVENT]; -} t_win_list; - - -typedef struct s_img -{ - XImage *image; - Pixmap pix; - GC gc; - int size_line; - int bpp; - int width; - int height; - int type; - int format; - char *data; - XShmSegmentInfo shm; -} t_img; - -typedef struct s_xvar -{ - Display *display; - Window root; - int screen; - int depth; - Visual *visual; - Colormap cmap; - int private_cmap; - t_win_list *win_list; - int (*loop_hook)(); - void *loop_param; - int use_xshm; - int pshm_format; - int do_flush; - int decrgb[6]; - Atom wm_delete_window; - Atom wm_protocols; - int end_loop; -} t_xvar; - - -int mlx_int_do_nothing(); -int mlx_get_color_value(); -int mlx_int_get_good_color(); -int mlx_int_find_in_pcm(); -int mlx_int_anti_resize_win(); -int mlx_int_wait_first_expose(); -int mlx_int_rgb_conversion(); -int mlx_int_deal_shm(); -void *mlx_int_new_xshm_image(); -char **mlx_int_str_to_wordtab(); -void *mlx_new_image(); -int shm_att_pb(); -int mlx_int_get_visual(t_xvar *xvar); -int mlx_int_set_win_event_mask(t_xvar *xvar); -int mlx_int_str_str_cote(char *str,char *find,int len); -int mlx_int_str_str(char *str,char *find,int len); - - -#endif diff --git a/mlx/mlx_int_anti_resize_win.c b/mlx/mlx_int_anti_resize_win.c deleted file mode 100644 index 2f20b44..0000000 --- a/mlx/mlx_int_anti_resize_win.c +++ /dev/null @@ -1,28 +0,0 @@ -/* -** mlx_int_anti_resize_win.c for MiniLibX in -** -** Made by Charlie Root -** Login -** -** Started on Tue Aug 8 14:31:05 2000 Charlie Root -** Last update Tue Sep 25 15:56:58 2001 Charlie Root -*/ - -#include "mlx_int.h" - - -int mlx_int_anti_resize_win(t_xvar *xvar,Window win,int w,int h) -{ - XSizeHints hints; - long toto; - - XGetWMNormalHints(xvar->display,win,&hints,&toto); - hints.width = w; - hints.height = h; - hints.min_width = w; - hints.min_height = h; - hints.max_width = w; - hints.max_height = h; - hints.flags = PPosition | PSize | PMinSize | PMaxSize; - XSetWMNormalHints(xvar->display,win,&hints); -} diff --git a/mlx/mlx_int_do_nothing.c b/mlx/mlx_int_do_nothing.c deleted file mode 100644 index 49524e4..0000000 --- a/mlx/mlx_int_do_nothing.c +++ /dev/null @@ -1,16 +0,0 @@ -/* -** mlx_int_do_nothing.c for MiniLibX in -** -** Made by Charlie Root -** Login -** -** Started on Tue Aug 8 12:58:24 2000 Charlie Root -** Last update Tue Sep 25 15:56:22 2001 Charlie Root -*/ - - - -int mlx_int_do_nothing(void *param) -{ - -} diff --git a/mlx/mlx_int_get_visual.c b/mlx/mlx_int_get_visual.c deleted file mode 100644 index 440a7ca..0000000 --- a/mlx/mlx_int_get_visual.c +++ /dev/null @@ -1,39 +0,0 @@ -/* -** mlx_int_get_visual.c for MinilibX in -** -** Made by Charlie Root -** Login -** -** Started on Wed Oct 3 17:01:51 2001 Charlie Root -** Last update Thu Oct 4 15:00:45 2001 Charlie Root -*/ - - - -#include "mlx_int.h" - - -/* -** We need a private colormap for non-default Visual. -*/ - - -int mlx_int_get_visual(t_xvar *xvar) -{ - XVisualInfo *vi; - XVisualInfo template; - int nb_item; - - xvar->private_cmap = 0; - xvar->visual = DefaultVisual(xvar->display,xvar->screen); - if (xvar->visual->class == TrueColor) - return (0); - template.class = TrueColor; - template.depth = xvar->depth; - if (!(vi = XGetVisualInfo(xvar->display,VisualDepthMask|VisualClassMask, - &template,&nb_item)) ) - return (-1); - xvar->visual = vi->visual; - xvar->private_cmap = 1; - return (0); -} diff --git a/mlx/mlx_int_param_event.c b/mlx/mlx_int_param_event.c deleted file mode 100644 index 8756a22..0000000 --- a/mlx/mlx_int_param_event.c +++ /dev/null @@ -1,100 +0,0 @@ -/* -** mlx_int_param_event.c for MinilibX in -** -** Made by Charlie Root -** Login -** -** Started on Mon Jul 31 16:37:50 2000 Charlie Root -** Last update Wed Oct 6 13:14:52 2004 Olivier Crouzet -*/ - -#include "mlx_int.h" - -int mlx_int_param_undef() -{ -} - -int mlx_int_param_KeyPress(t_xvar *xvar, XEvent *ev, t_win_list *win) -{ - win->hooks[KeyPress].hook(XkbKeycodeToKeysym(xvar->display, - ev->xkey.keycode, 0, 0), - win->hooks[KeyPress].param); -} - -int mlx_int_param_KeyRelease(t_xvar *xvar, XEvent *ev, t_win_list *win) -{ - win->hooks[KeyRelease].hook(XkbKeycodeToKeysym(xvar->display, - ev->xkey.keycode, 0, 0), - win->hooks[KeyRelease].param); -} - -int mlx_int_param_ButtonPress(t_xvar *xvar, XEvent *ev, t_win_list *win) -{ - win->hooks[ButtonPress].hook(ev->xbutton.button,ev->xbutton.x,ev->xbutton.y, - win->hooks[ButtonPress].param); -} - -int mlx_int_param_ButtonRelease(t_xvar *xvar, XEvent *ev, t_win_list *win) -{ - win->hooks[ButtonRelease].hook(ev->xbutton.button, - ev->xbutton.x, ev->xbutton.y, - win->hooks[ButtonRelease].param); -} - -int mlx_int_param_MotionNotify(t_xvar *xvar, XEvent *ev, t_win_list *win) -{ - win->hooks[MotionNotify].hook(ev->xbutton.x,ev->xbutton.y, - win->hooks[MotionNotify].param); -} - -int mlx_int_param_Expose(t_xvar *xvar, XEvent *ev, t_win_list *win) -{ - if (!ev->xexpose.count) - win->hooks[Expose].hook(win->hooks[Expose].param); -} - - -int mlx_int_param_generic(t_xvar *xvar, XEvent *ev, t_win_list *win) -{ - win->hooks[ev->type].hook(win->hooks[ev->type].param); -} - -int (*(mlx_int_param_event[]))() = -{ - mlx_int_param_undef, /* 0 */ - mlx_int_param_undef, - mlx_int_param_KeyPress, - mlx_int_param_KeyRelease, /* 3 */ - mlx_int_param_ButtonPress, - mlx_int_param_ButtonRelease, - mlx_int_param_MotionNotify, /* 6 */ - mlx_int_param_generic, - mlx_int_param_generic, - mlx_int_param_generic, - mlx_int_param_generic, - mlx_int_param_generic, - mlx_int_param_Expose, /* 12 */ - mlx_int_param_generic, - mlx_int_param_generic, - mlx_int_param_generic, - mlx_int_param_generic, - mlx_int_param_generic, - mlx_int_param_generic, - mlx_int_param_generic, - mlx_int_param_generic, - mlx_int_param_generic, - mlx_int_param_generic, - mlx_int_param_generic, - mlx_int_param_generic, - mlx_int_param_generic, - mlx_int_param_generic, - mlx_int_param_generic, - mlx_int_param_generic, - mlx_int_param_generic, - mlx_int_param_generic, - mlx_int_param_generic, - mlx_int_param_generic, - mlx_int_param_generic, - mlx_int_param_generic, - mlx_int_param_generic -}; diff --git a/mlx/mlx_int_set_win_event_mask.c b/mlx/mlx_int_set_win_event_mask.c deleted file mode 100644 index 55650cd..0000000 --- a/mlx/mlx_int_set_win_event_mask.c +++ /dev/null @@ -1,34 +0,0 @@ -/* -** mlx_int_set_win_event_mask.c for MiniLibX in -** -** Made by Charlie Root -** Login -** -** Started on Thu Aug 3 11:49:06 2000 Charlie Root -** Last update Fri Feb 23 17:07:42 2001 Charlie Root -*/ - - -#include "mlx_int.h" - - - - -int mlx_int_set_win_event_mask(t_xvar *xvar) -{ - t_win_list *win; - int mask; - int i; - XSetWindowAttributes xwa; - - win = xvar->win_list; - while (win) - { - xwa.event_mask = 0; - i = MLX_MAX_EVENT; - while (i--) - xwa.event_mask |= win->hooks[i].mask; - XChangeWindowAttributes(xvar->display, win->window, CWEventMask, &xwa); - win = win->next; - } -} diff --git a/mlx/mlx_int_str_to_wordtab.c b/mlx/mlx_int_str_to_wordtab.c deleted file mode 100644 index 7f92089..0000000 --- a/mlx/mlx_int_str_to_wordtab.c +++ /dev/null @@ -1,113 +0,0 @@ -/* -** mlx_int_str_to_wordtab.c for MinilibX in -** -** Made by Charlie Root -** Login -** -** Started on Wed Sep 13 11:36:09 2000 Charlie Root -** Last update Fri Dec 14 11:02:09 2001 Charlie Root -*/ - - -#include "mlx_int.h" - - -int mlx_int_str_str(char *str,char *find,int len) -{ - int len_f; - int pos; - char *s; - char *f; - - len_f = strlen(find); - if (len_f>len) - return (-1); - pos = 0; - while (*(str+len_f-1)) - { - s = str; - f = find; - while (*(f++) == *(s++)) - if (!*f) - return (pos); - str ++; - pos ++; - } - return (-1); -} - - - -int mlx_int_str_str_cote(char *str,char *find,int len) -{ - int len_f; - int pos; - char *s; - char *f; - int cote; - - len_f = strlen(find); - if (len_f>len) - return (-1); - cote = 0; - pos = 0; - while (*(str+len_f-1)) - { - if (*str=='"') - cote = 1-cote; - if (!cote) - { - s = str; - f = find; - while (*(f++) == *(s++)) - if (!*f) - return (pos); - } - str ++; - pos ++; - } - return (-1); -} - - -char **mlx_int_str_to_wordtab(char *str) -{ - char **tab; - int pos; - int nb_word; - int len; - - len = strlen(str); - nb_word = 0; - pos = 0; - while (pos -** -** Started on Tue Oct 17 09:26:45 2000 olivier crouzet -** Last update Fri Feb 23 17:27:10 2001 Charlie Root -*/ - - - -#include "mlx_int.h" - - - -int mlx_int_wait_first_expose(t_xvar *xvar,Window win) -{ - XEvent ev; - - XWindowEvent(xvar->display,win,ExposureMask,&ev); - XPutBackEvent(xvar->display,&ev); -} diff --git a/mlx/mlx_key_hook.c b/mlx/mlx_key_hook.c deleted file mode 100644 index eea6484..0000000 --- a/mlx/mlx_key_hook.c +++ /dev/null @@ -1,22 +0,0 @@ -/* -** mlx_key_hook.c for MiniLibX in -** -** Made by Charlie Root -** Login -** -** Started on Thu Aug 3 11:49:06 2000 Charlie Root -** Last update Fri Feb 23 17:10:09 2001 Charlie Root -*/ - - -#include "mlx_int.h" - - - - -int mlx_key_hook(t_win_list *win,int (*funct)(),void *param) -{ - win->hooks[KeyRelease].hook = funct; - win->hooks[KeyRelease].param = param; - win->hooks[KeyRelease].mask = KeyReleaseMask; -} diff --git a/mlx/mlx_lib_xpm.c b/mlx/mlx_lib_xpm.c deleted file mode 100644 index b8cf184..0000000 --- a/mlx/mlx_lib_xpm.c +++ /dev/null @@ -1,96 +0,0 @@ -/* -** mlx_xpm.c for minilibX in -** -** Made by Charlie Root -** Login -** -** Started on Fri Dec 8 11:07:24 2000 Charlie Root -** Last update Thu Oct 4 16:00:22 2001 Charlie Root -*/ - - -#include "mlx_int.h" - - - - -void *mlx_int_xpm_f_image(t_xvar *xvar,int *width,int *height, - int (*xpm_func)(),void *param) -{ - XImage *img1; - XImage *img2; - t_img *im2; - XpmAttributes xpm_att; - - xpm_att.visual = xvar->visual; - xpm_att.colormap = xvar->cmap; - xpm_att.depth = xvar->depth; - xpm_att.bitmap_format = ZPixmap; - xpm_att.valuemask = XpmDepth|XpmBitmapFormat|XpmVisual|XpmColormap; - if (xpm_func(xvar->display,param,&img1,&img2,&xpm_att)) - return ((void *)0); - if (img2) - XDestroyImage(img2); - - if (!(im2 = (void *)mlx_new_image(xvar,img1->width,img1->height))) - { - XDestroyImage(img1); - return ((void *)0); - } - *width = img1->width; - *height = img1->height; - if (mlx_int_egal_img(im2->image,img1)) - { - bcopy(img1->data,im2->data,img1->height*img1->bytes_per_line); - XDestroyImage(img1); - return (im2); - } - if (im2->type==MLX_TYPE_SHM_PIXMAP) - { - XFreePixmap(xvar->display,im2->pix); - im2->pix = XCreatePixmap(xvar->display,xvar->root, - *width,*height,xvar->depth); - } - if (im2->type>MLX_TYPE_XIMAGE) - { - XShmDetach(xvar->display,&(im2->shm)); - shmdt(im2->data); - } - XDestroyImage(im2->image); - im2->image = img1; - im2->data = img1->data; - im2->type = MLX_TYPE_XIMAGE; - im2->size_line = img1->bytes_per_line; - im2->bpp = img1->bits_per_pixel; - return (im2); -} - - -int mlx_int_egal_img(XImage *img1,XImage *img2) -{ - if (img1->width!=img2->width || img1->height!=img2->height || - img1->xoffset!=img2->xoffset || img1->format!=img2->format || - img1->byte_order!=img2->byte_order || - img1->bitmap_unit!=img2->bitmap_unit || - img1->bitmap_bit_order!=img2->bitmap_bit_order || - img1->bitmap_pad!=img2->bitmap_pad || img1->depth!=img2->depth || - img1->bytes_per_line!=img2->bytes_per_line || - img1->bits_per_pixel!=img2->bits_per_pixel || - img1->red_mask!=img2->red_mask || img1->green_mask!=img2->green_mask || - img1->blue_mask!=img2->blue_mask ) - return (0); - return (1); -} - - -void *mlx_xpm_file_to_image(t_xvar *xvar,char *filename, - int *width,int *height) -{ - return (mlx_int_xpm_f_image(xvar,width,height,XpmReadFileToImage,filename)); -} - - -void *mlx_xpm_to_image(t_xvar *xvar,char **data,int *width,int *height) -{ - return (mlx_int_xpm_f_image(xvar,width,height,XpmCreateImageFromData,(void *)data)); -} diff --git a/mlx/mlx_loop.c b/mlx/mlx_loop.c deleted file mode 100644 index cc4e119..0000000 --- a/mlx/mlx_loop.c +++ /dev/null @@ -1,63 +0,0 @@ -/* -** mlx_loop.c for MiniLibX in -** -** Made by Charlie Root -** Login -** -** Started on Wed Aug 2 18:58:11 2000 Charlie Root -** Last update Fri Sep 30 14:47:41 2005 Olivier Crouzet -*/ - - -#include "mlx_int.h" - -extern int (*(mlx_int_param_event[]))(); - -static int win_count(t_xvar *xvar) -{ - int i; - t_win_list *win; - - i = 0; - win = xvar->win_list; - while (win) - { - win = win->next; - ++i; - } - return (i); -} - -int mlx_loop_end(t_xvar *xvar) -{ - xvar->end_loop = 1; - return (1); -} - -int mlx_loop(t_xvar *xvar) -{ - XEvent ev; - t_win_list *win; - - mlx_int_set_win_event_mask(xvar); - xvar->do_flush = 0; - while (win_count(xvar) && !xvar->end_loop) - { - while (!xvar->end_loop && (!xvar->loop_hook || XPending(xvar->display))) - { - XNextEvent(xvar->display,&ev); - win = xvar->win_list; - while (win && (win->window!=ev.xany.window)) - win = win->next; - - if (win && ev.type == ClientMessage && ev.xclient.message_type == xvar->wm_protocols && ev.xclient.data.l[0] == xvar->wm_delete_window && win->hooks[DestroyNotify].hook) - win->hooks[DestroyNotify].hook(win->hooks[DestroyNotify].param); - if (win && ev.type < MLX_MAX_EVENT && win->hooks[ev.type].hook) - mlx_int_param_event[ev.type](xvar, &ev, win); - } - XSync(xvar->display, False); - if (xvar->loop_hook) - xvar->loop_hook(xvar->loop_param); - } - return (0); -} diff --git a/mlx/mlx_loop_hook.c b/mlx/mlx_loop_hook.c deleted file mode 100644 index 1f8b9ed..0000000 --- a/mlx/mlx_loop_hook.c +++ /dev/null @@ -1,21 +0,0 @@ -/* -** mlx_loop_hook.c for MiniLibX in -** -** Made by Charlie Root -** Login -** -** Started on Thu Aug 3 11:49:06 2000 Charlie Root -** Last update Fri Feb 23 17:11:39 2001 Charlie Root -*/ - - -#include "mlx_int.h" - - - - -int mlx_loop_hook(t_xvar *xvar,int (*funct)(),void *param) -{ - xvar->loop_hook = funct; - xvar->loop_param = param; -} diff --git a/mlx/mlx_mouse.c b/mlx/mlx_mouse.c deleted file mode 100644 index ce0d4c9..0000000 --- a/mlx/mlx_mouse.c +++ /dev/null @@ -1,48 +0,0 @@ -#include "mlx_int.h" - -int mlx_mouse_move(t_xvar *xvar, t_win_list *win, int x, int y) -{ - XWarpPointer(xvar->display, None, win->window, 0, 0, 0, 0, x, y); - return (0); -} - -int mlx_mouse_hide(t_xvar *xvar, t_win_list *win) -{ - static char data[1] = {0}; - Cursor cursor; - Pixmap blank; - XColor dummy; - - blank = XCreateBitmapFromData(xvar->display, win->window, data, 1, 1); - cursor = XCreatePixmapCursor(xvar->display, blank, blank, &dummy, &dummy, 0, 0); - XDefineCursor(xvar->display, win->window, cursor); - XFreePixmap(xvar->display, blank); - XFreeCursor(xvar->display, cursor); -} - -int mlx_mouse_show(t_xvar *xvar, t_win_list *win) -{ - XUndefineCursor(xvar->display, win->window); -} - -/* -** Queries the position of the mouse pointer relative to the origin of the -** specified window and saves it to the provided location. -** -** If the pointer is not on the same screen as the specified window, both -** win_x_return and win_y_return are set to zero and the function returns 0. -*/ - -int mlx_mouse_get_pos(t_xvar *xvar, t_win_list *win, \ - int *win_x_return, int *win_y_return) -{ - Window root_return; - Window child_return; - int root_x_return; - int root_y_return; - unsigned mask_return; - - return (XQueryPointer(xvar->display, win->window, \ - &root_return, &child_return, &root_x_return, &root_y_return, \ - win_x_return, win_y_return, &mask_return)); -} diff --git a/mlx/mlx_mouse_hook.c b/mlx/mlx_mouse_hook.c deleted file mode 100644 index cb567ab..0000000 --- a/mlx/mlx_mouse_hook.c +++ /dev/null @@ -1,22 +0,0 @@ -/* -** mlx_mouse_hook.c for MiniLibX in -** -** Made by Charlie Root -** Login -** -** Started on Thu Aug 3 11:49:06 2000 Charlie Root -** Last update Fri Feb 23 17:11:05 2001 Charlie Root -*/ - - -#include "mlx_int.h" - - - - -int mlx_mouse_hook(t_win_list *win,int (*funct)(),void *param) -{ - win->hooks[ButtonPress].hook = funct; - win->hooks[ButtonPress].param = param; - win->hooks[ButtonPress].mask = ButtonPressMask; -} diff --git a/mlx/mlx_new_image.c b/mlx/mlx_new_image.c deleted file mode 100644 index d2cbfc1..0000000 --- a/mlx/mlx_new_image.c +++ /dev/null @@ -1,159 +0,0 @@ -/* -** mlx_new_image.c for MiniLibX in raytraceur -** -** Made by Charlie Root -** Login -** -** Started on Mon Aug 14 15:29:14 2000 Charlie Root -** Last update Wed May 25 16:46:31 2011 Olivier Crouzet -*/ - - - - -#include "mlx_int.h" - -/* -** To handle X errors -*/ - -#define X_ShmAttach 1 - -int mlx_X_error; - -int shm_att_pb(Display *d,XErrorEvent *ev) -{ - if (ev->request_code==146 && ev->minor_code==X_ShmAttach) - write(2,WARN_SHM_ATTACH,strlen(WARN_SHM_ATTACH)); - mlx_X_error = 1; -} - - -/* -** Data malloc : width+32 ( bitmap_pad=32 ), *4 = *32 / 8bit -*/ - - -void *mlx_int_new_xshm_image(t_xvar *xvar,int width,int height,int format) -{ - t_img *img; - int (*save_handler)(); - - if (!(img = malloc(sizeof(*img)))) - return ((void *)0); - bzero(img,sizeof(*img)); - img->data = 0; - img->image = XShmCreateImage(xvar->display,xvar->visual,xvar->depth, - format,img->data,&(img->shm),width,height); - if (!img->image) - { - free(img); - return ((void *)0); - } - img->width = width; - img->height = height; - img->size_line = img->image->bytes_per_line; - img->bpp = img->image->bits_per_pixel; - img->format = format; - img->shm.shmid = shmget(IPC_PRIVATE,(width+32)*height*4,IPC_CREAT|0777); - if (img->shm.shmid==-1) - { - XDestroyImage(img->image); - free(img); - return ((void *)0); - } - img->data = img->shm.shmaddr = img->image->data = shmat(img->shm.shmid,0,0); - if (img->data==(void *)-1) - { - shmctl(img->shm.shmid,IPC_RMID,0); - XDestroyImage(img->image); - free(img); - return ((void *)0); - } - img->shm.readOnly = False; - mlx_X_error = 0; - save_handler = XSetErrorHandler(shm_att_pb); - if (!XShmAttach(xvar->display,&(img->shm)) || - 0&XSync(xvar->display,False) || mlx_X_error) - { - XSetErrorHandler(save_handler); - shmdt(img->data); - shmctl(img->shm.shmid,IPC_RMID,0); - XDestroyImage(img->image); - free(img); - return ((void *)0); - } - XSetErrorHandler(save_handler); - shmctl(img->shm.shmid,IPC_RMID,0); - if (xvar->pshm_format==format) - { - img->pix = XShmCreatePixmap(xvar->display,xvar->root,img->shm.shmaddr, - &(img->shm),width,height,xvar->depth); - img->type = MLX_TYPE_SHM_PIXMAP; - } - else - { - img->pix = XCreatePixmap(xvar->display,xvar->root, - width,height,xvar->depth); - img->type = MLX_TYPE_SHM; - } - if (xvar->do_flush) - XFlush(xvar->display); - return (img); -} - - - -void *mlx_int_new_image(t_xvar *xvar,int width, int height,int format) -{ - t_img *img; - - if (!(img = malloc(sizeof(*img)))) - return ((void *)0); - if (!(img->data = malloc((width+32)*height*4))) - { - free(img); - return ((void *)0); - } - bzero(img->data,(width+32)*height*4); - img->image = XCreateImage(xvar->display,xvar->visual,xvar->depth,format,0, - img->data,width,height,32,0); - if (!img->image) - { - free(img->data); - free(img); - return ((void *)0); - } - img->gc = 0; - img->size_line = img->image->bytes_per_line; - img->bpp = img->image->bits_per_pixel; - img->width = width; - img->height = height; - img->pix = XCreatePixmap(xvar->display,xvar->root,width,height,xvar->depth); - img->format = format; - img->type = MLX_TYPE_XIMAGE; - if (xvar->do_flush) - XFlush(xvar->display); - return (img); -} - - -void *mlx_new_image(t_xvar *xvar,int width, int height) -{ - t_img *img; - - if (xvar->use_xshm) - if (img = mlx_int_new_xshm_image(xvar,width,height,ZPixmap)) - return (img); - return (mlx_int_new_image(xvar,width,height,ZPixmap)); -} - -void *mlx_new_image2(t_xvar *xvar,int width, int height) -{ - t_img *img; - - if (xvar->use_xshm) - if (img = mlx_int_new_xshm_image(xvar,width,height,XYPixmap)) - return (img); - return (mlx_int_new_image(xvar,width,height,XYPixmap)); -} diff --git a/mlx/mlx_new_window.c b/mlx/mlx_new_window.c deleted file mode 100644 index 3f05914..0000000 --- a/mlx/mlx_new_window.c +++ /dev/null @@ -1,62 +0,0 @@ -/* -** mlx_new_window.c for MiniLibX in -** -** Made by Charlie Root -** Login -** -** Started on Mon Jul 31 17:29:02 2000 Charlie Root -** Last update Thu Oct 4 15:44:43 2001 Charlie Root -*/ - - -/* -** We do not use White/BlackPixel macro, TrueColor Visual make sure -** 0 is black & -1 is white -** -** With mlx_int_wait_first_expose, no flush is needed. -*/ - -#include "mlx_int.h" - - -void *mlx_new_window(t_xvar *xvar,int size_x,int size_y,char *title) -{ - t_win_list *new_win; - XSetWindowAttributes xswa; - XGCValues xgcv; - - xswa.background_pixel = 0; - xswa.border_pixel = -1; - xswa.colormap = xvar->cmap; - /* - xswa.event_mask = ButtonPressMask | ButtonReleaseMask | ExposureMask | - KeyPressMask | KeyReleaseMask | StructureNotifyMask; - */ - /* xswa.event_mask = ExposureMask; */ - xswa.event_mask = 0xFFFFFF; /* all events */ - if (!(new_win = malloc(sizeof(*new_win)))) - return ((void *)0); - new_win->window = XCreateWindow(xvar->display,xvar->root,0,0,size_x,size_y, - 0,CopyFromParent,InputOutput,xvar->visual, - CWEventMask|CWBackPixel|CWBorderPixel| - CWColormap,&xswa); - mlx_int_anti_resize_win(xvar,new_win->window,size_x,size_y); - XStoreName(xvar->display,new_win->window,title); - XSetWMProtocols(xvar->display, new_win->window, &(xvar->wm_delete_window), 1); - xgcv.foreground = -1; - xgcv.function = GXcopy; - xgcv.plane_mask = AllPlanes; - new_win->gc = XCreateGC(xvar->display,new_win->window, - GCFunction|GCPlaneMask|GCForeground,&xgcv); - new_win->next = xvar->win_list; - xvar->win_list = new_win; - /* - new_win->mouse_hook = mlx_int_do_nothing; - new_win->key_hook = mlx_int_do_nothing; - new_win->expose_hook = mlx_int_do_nothing; - */ - bzero(&(new_win->hooks), sizeof(new_win->hooks)); - XMapRaised(xvar->display,new_win->window); - mlx_int_wait_first_expose(xvar,new_win->window); - return (new_win); -} diff --git a/mlx/mlx_pixel_put.c b/mlx/mlx_pixel_put.c deleted file mode 100644 index c411f36..0000000 --- a/mlx/mlx_pixel_put.c +++ /dev/null @@ -1,26 +0,0 @@ -/* - ** mlx_pixel_put.c for MiniLibX in - ** - ** Made by Charlie Root - ** Login - ** - ** Started on Mon Jul 31 19:01:33 2000 Charlie Root -** Last update Tue Sep 25 17:09:49 2001 Charlie Root - */ - - -#include "mlx_int.h" - - - -int mlx_pixel_put(t_xvar *xvar,t_win_list *win, - int x,int y,int color) -{ - XGCValues xgcv; - - xgcv.foreground = mlx_int_get_good_color(xvar,color); - XChangeGC(xvar->display,win->gc,GCForeground,&xgcv); - XDrawPoint(xvar->display,win->window,win->gc,x,y); - if (xvar->do_flush) - XFlush(xvar->display); -} diff --git a/mlx/mlx_put_image_to_window.c b/mlx/mlx_put_image_to_window.c deleted file mode 100644 index 86ba3f4..0000000 --- a/mlx/mlx_put_image_to_window.c +++ /dev/null @@ -1,37 +0,0 @@ -/* -** mlx_put_image_to_window.c for MiniLibX in raytraceur -** -** Made by Charlie Root -** Login -** -** Started on Mon Aug 14 15:55:49 2000 Charlie Root -** Last update Sun Oct 2 09:53:00 2005 Olivier Crouzet -*/ - - - -#include "mlx_int.h" - - -int mlx_put_image_to_window(t_xvar *xvar,t_win_list *win,t_img *img, - int x,int y) -{ - GC gc; - - gc = win->gc; - if (img->gc) - { - gc = img->gc; - XSetClipOrigin(xvar->display, gc, x, y); - } - if (img->type==MLX_TYPE_SHM) - XShmPutImage(xvar->display,img->pix, win->gc, img->image,0,0,0,0, - img->width,img->height,False); - if (img->type==MLX_TYPE_XIMAGE) - XPutImage(xvar->display,img->pix, win->gc, img->image,0,0,0,0, - img->width,img->height); - XCopyArea(xvar->display,img->pix,win->window, gc, - 0,0,img->width,img->height,x,y); - if (xvar->do_flush) - XFlush(xvar->display); -} diff --git a/mlx/mlx_rgb.c b/mlx/mlx_rgb.c deleted file mode 100644 index 0cfccf6..0000000 --- a/mlx/mlx_rgb.c +++ /dev/null @@ -1,764 +0,0 @@ -/* -** This is a generated file with rgb2c.pl and rgb.txt from -** the XFree86 distribution. -*/ - -#include "mlx_int.h" - -struct s_col_name mlx_col_name[] = -{ - { "snow" , 0xfffafa }, - { "ghost white" , 0xf8f8ff }, - { "ghostwhite" , 0xf8f8ff }, - { "white smoke" , 0xf5f5f5 }, - { "whitesmoke" , 0xf5f5f5 }, - { "gainsboro" , 0xdcdcdc }, - { "floral white" , 0xfffaf0 }, - { "floralwhite" , 0xfffaf0 }, - { "old lace" , 0xfdf5e6 }, - { "oldlace" , 0xfdf5e6 }, - { "linen" , 0xfaf0e6 }, - { "antique white" , 0xfaebd7 }, - { "antiquewhite" , 0xfaebd7 }, - { "papaya whip" , 0xffefd5 }, - { "papayawhip" , 0xffefd5 }, - { "blanched almond" , 0xffebcd }, - { "blanchedalmond" , 0xffebcd }, - { "bisque" , 0xffe4c4 }, - { "peach puff" , 0xffdab9 }, - { "peachpuff" , 0xffdab9 }, - { "navajo white" , 0xffdead }, - { "navajowhite" , 0xffdead }, - { "moccasin" , 0xffe4b5 }, - { "cornsilk" , 0xfff8dc }, - { "ivory" , 0xfffff0 }, - { "lemon chiffon" , 0xfffacd }, - { "lemonchiffon" , 0xfffacd }, - { "seashell" , 0xfff5ee }, - { "honeydew" , 0xf0fff0 }, - { "mint cream" , 0xf5fffa }, - { "mintcream" , 0xf5fffa }, - { "azure" , 0xf0ffff }, - { "alice blue" , 0xf0f8ff }, - { "aliceblue" , 0xf0f8ff }, - { "lavender" , 0xe6e6fa }, - { "lavender blush" , 0xfff0f5 }, - { "lavenderblush" , 0xfff0f5 }, - { "misty rose" , 0xffe4e1 }, - { "mistyrose" , 0xffe4e1 }, - { "white" , 0xffffff }, - { "black" , 0x0 }, - { "dark slate" , 0x2f4f4f }, - { "darkslategray" , 0x2f4f4f }, - { "dark slate" , 0x2f4f4f }, - { "darkslategrey" , 0x2f4f4f }, - { "dim gray" , 0x696969 }, - { "dimgray" , 0x696969 }, - { "dim grey" , 0x696969 }, - { "dimgrey" , 0x696969 }, - { "slate gray" , 0x708090 }, - { "slategray" , 0x708090 }, - { "slate grey" , 0x708090 }, - { "slategrey" , 0x708090 }, - { "light slate" , 0x778899 }, - { "lightslategray" , 0x778899 }, - { "light slate" , 0x778899 }, - { "lightslategrey" , 0x778899 }, - { "gray" , 0xbebebe }, - { "grey" , 0xbebebe }, - { "light grey" , 0xd3d3d3 }, - { "lightgrey" , 0xd3d3d3 }, - { "light gray" , 0xd3d3d3 }, - { "lightgray" , 0xd3d3d3 }, - { "midnight blue" , 0x191970 }, - { "midnightblue" , 0x191970 }, - { "navy" , 0x80 }, - { "navy blue" , 0x80 }, - { "navyblue" , 0x80 }, - { "cornflower blue" , 0x6495ed }, - { "cornflowerblue" , 0x6495ed }, - { "dark slate" , 0x483d8b }, - { "darkslateblue" , 0x483d8b }, - { "slate blue" , 0x6a5acd }, - { "slateblue" , 0x6a5acd }, - { "medium slate" , 0x7b68ee }, - { "mediumslateblue" , 0x7b68ee }, - { "light slate" , 0x8470ff }, - { "lightslateblue" , 0x8470ff }, - { "medium blue" , 0xcd }, - { "mediumblue" , 0xcd }, - { "royal blue" , 0x4169e1 }, - { "royalblue" , 0x4169e1 }, - { "blue" , 0xff }, - { "dodger blue" , 0x1e90ff }, - { "dodgerblue" , 0x1e90ff }, - { "deep sky" , 0xbfff }, - { "deepskyblue" , 0xbfff }, - { "sky blue" , 0x87ceeb }, - { "skyblue" , 0x87ceeb }, - { "light sky" , 0x87cefa }, - { "lightskyblue" , 0x87cefa }, - { "steel blue" , 0x4682b4 }, - { "steelblue" , 0x4682b4 }, - { "light steel" , 0xb0c4de }, - { "lightsteelblue" , 0xb0c4de }, - { "light blue" , 0xadd8e6 }, - { "lightblue" , 0xadd8e6 }, - { "powder blue" , 0xb0e0e6 }, - { "powderblue" , 0xb0e0e6 }, - { "pale turquoise" , 0xafeeee }, - { "paleturquoise" , 0xafeeee }, - { "dark turquoise" , 0xced1 }, - { "darkturquoise" , 0xced1 }, - { "medium turquoise" , 0x48d1cc }, - { "mediumturquoise" , 0x48d1cc }, - { "turquoise" , 0x40e0d0 }, - { "cyan" , 0xffff }, - { "light cyan" , 0xe0ffff }, - { "lightcyan" , 0xe0ffff }, - { "cadet blue" , 0x5f9ea0 }, - { "cadetblue" , 0x5f9ea0 }, - { "medium aquamarine" , 0x66cdaa }, - { "mediumaquamarine" , 0x66cdaa }, - { "aquamarine" , 0x7fffd4 }, - { "dark green" , 0x6400 }, - { "darkgreen" , 0x6400 }, - { "dark olive" , 0x556b2f }, - { "darkolivegreen" , 0x556b2f }, - { "dark sea" , 0x8fbc8f }, - { "darkseagreen" , 0x8fbc8f }, - { "sea green" , 0x2e8b57 }, - { "seagreen" , 0x2e8b57 }, - { "medium sea" , 0x3cb371 }, - { "mediumseagreen" , 0x3cb371 }, - { "light sea" , 0x20b2aa }, - { "lightseagreen" , 0x20b2aa }, - { "pale green" , 0x98fb98 }, - { "palegreen" , 0x98fb98 }, - { "spring green" , 0xff7f }, - { "springgreen" , 0xff7f }, - { "lawn green" , 0x7cfc00 }, - { "lawngreen" , 0x7cfc00 }, - { "green" , 0xff00 }, - { "chartreuse" , 0x7fff00 }, - { "medium spring" , 0xfa9a }, - { "mediumspringgreen" , 0xfa9a }, - { "green yellow" , 0xadff2f }, - { "greenyellow" , 0xadff2f }, - { "lime green" , 0x32cd32 }, - { "limegreen" , 0x32cd32 }, - { "yellow green" , 0x9acd32 }, - { "yellowgreen" , 0x9acd32 }, - { "forest green" , 0x228b22 }, - { "forestgreen" , 0x228b22 }, - { "olive drab" , 0x6b8e23 }, - { "olivedrab" , 0x6b8e23 }, - { "dark khaki" , 0xbdb76b }, - { "darkkhaki" , 0xbdb76b }, - { "khaki" , 0xf0e68c }, - { "pale goldenrod" , 0xeee8aa }, - { "palegoldenrod" , 0xeee8aa }, - { "light goldenrod" , 0xfafad2 }, - { "lightgoldenrodyellow" , 0xfafad2 }, - { "light yellow" , 0xffffe0 }, - { "lightyellow" , 0xffffe0 }, - { "yellow" , 0xffff00 }, - { "gold" , 0xffd700 }, - { "light goldenrod" , 0xeedd82 }, - { "lightgoldenrod" , 0xeedd82 }, - { "goldenrod" , 0xdaa520 }, - { "dark goldenrod" , 0xb8860b }, - { "darkgoldenrod" , 0xb8860b }, - { "rosy brown" , 0xbc8f8f }, - { "rosybrown" , 0xbc8f8f }, - { "indian red" , 0xcd5c5c }, - { "indianred" , 0xcd5c5c }, - { "saddle brown" , 0x8b4513 }, - { "saddlebrown" , 0x8b4513 }, - { "sienna" , 0xa0522d }, - { "peru" , 0xcd853f }, - { "burlywood" , 0xdeb887 }, - { "beige" , 0xf5f5dc }, - { "wheat" , 0xf5deb3 }, - { "sandy brown" , 0xf4a460 }, - { "sandybrown" , 0xf4a460 }, - { "tan" , 0xd2b48c }, - { "chocolate" , 0xd2691e }, - { "firebrick" , 0xb22222 }, - { "brown" , 0xa52a2a }, - { "dark salmon" , 0xe9967a }, - { "darksalmon" , 0xe9967a }, - { "salmon" , 0xfa8072 }, - { "light salmon" , 0xffa07a }, - { "lightsalmon" , 0xffa07a }, - { "orange" , 0xffa500 }, - { "dark orange" , 0xff8c00 }, - { "darkorange" , 0xff8c00 }, - { "coral" , 0xff7f50 }, - { "light coral" , 0xf08080 }, - { "lightcoral" , 0xf08080 }, - { "tomato" , 0xff6347 }, - { "orange red" , 0xff4500 }, - { "orangered" , 0xff4500 }, - { "red" , 0xff0000 }, - { "hot pink" , 0xff69b4 }, - { "hotpink" , 0xff69b4 }, - { "deep pink" , 0xff1493 }, - { "deeppink" , 0xff1493 }, - { "pink" , 0xffc0cb }, - { "light pink" , 0xffb6c1 }, - { "lightpink" , 0xffb6c1 }, - { "pale violet" , 0xdb7093 }, - { "palevioletred" , 0xdb7093 }, - { "maroon" , 0xb03060 }, - { "medium violet" , 0xc71585 }, - { "mediumvioletred" , 0xc71585 }, - { "violet red" , 0xd02090 }, - { "violetred" , 0xd02090 }, - { "magenta" , 0xff00ff }, - { "violet" , 0xee82ee }, - { "plum" , 0xdda0dd }, - { "orchid" , 0xda70d6 }, - { "medium orchid" , 0xba55d3 }, - { "mediumorchid" , 0xba55d3 }, - { "dark orchid" , 0x9932cc }, - { "darkorchid" , 0x9932cc }, - { "dark violet" , 0x9400d3 }, - { "darkviolet" , 0x9400d3 }, - { "blue violet" , 0x8a2be2 }, - { "blueviolet" , 0x8a2be2 }, - { "purple" , 0xa020f0 }, - { "medium purple" , 0x9370db }, - { "mediumpurple" , 0x9370db }, - { "thistle" , 0xd8bfd8 }, - { "snow1" , 0xfffafa }, - { "snow2" , 0xeee9e9 }, - { "snow3" , 0xcdc9c9 }, - { "snow4" , 0x8b8989 }, - { "seashell1" , 0xfff5ee }, - { "seashell2" , 0xeee5de }, - { "seashell3" , 0xcdc5bf }, - { "seashell4" , 0x8b8682 }, - { "antiquewhite1" , 0xffefdb }, - { "antiquewhite2" , 0xeedfcc }, - { "antiquewhite3" , 0xcdc0b0 }, - { "antiquewhite4" , 0x8b8378 }, - { "bisque1" , 0xffe4c4 }, - { "bisque2" , 0xeed5b7 }, - { "bisque3" , 0xcdb79e }, - { "bisque4" , 0x8b7d6b }, - { "peachpuff1" , 0xffdab9 }, - { "peachpuff2" , 0xeecbad }, - { "peachpuff3" , 0xcdaf95 }, - { "peachpuff4" , 0x8b7765 }, - { "navajowhite1" , 0xffdead }, - { "navajowhite2" , 0xeecfa1 }, - { "navajowhite3" , 0xcdb38b }, - { "navajowhite4" , 0x8b795e }, - { "lemonchiffon1" , 0xfffacd }, - { "lemonchiffon2" , 0xeee9bf }, - { "lemonchiffon3" , 0xcdc9a5 }, - { "lemonchiffon4" , 0x8b8970 }, - { "cornsilk1" , 0xfff8dc }, - { "cornsilk2" , 0xeee8cd }, - { "cornsilk3" , 0xcdc8b1 }, - { "cornsilk4" , 0x8b8878 }, - { "ivory1" , 0xfffff0 }, - { "ivory2" , 0xeeeee0 }, - { "ivory3" , 0xcdcdc1 }, - { "ivory4" , 0x8b8b83 }, - { "honeydew1" , 0xf0fff0 }, - { "honeydew2" , 0xe0eee0 }, - { "honeydew3" , 0xc1cdc1 }, - { "honeydew4" , 0x838b83 }, - { "lavenderblush1" , 0xfff0f5 }, - { "lavenderblush2" , 0xeee0e5 }, - { "lavenderblush3" , 0xcdc1c5 }, - { "lavenderblush4" , 0x8b8386 }, - { "mistyrose1" , 0xffe4e1 }, - { "mistyrose2" , 0xeed5d2 }, - { "mistyrose3" , 0xcdb7b5 }, - { "mistyrose4" , 0x8b7d7b }, - { "azure1" , 0xf0ffff }, - { "azure2" , 0xe0eeee }, - { "azure3" , 0xc1cdcd }, - { "azure4" , 0x838b8b }, - { "slateblue1" , 0x836fff }, - { "slateblue2" , 0x7a67ee }, - { "slateblue3" , 0x6959cd }, - { "slateblue4" , 0x473c8b }, - { "royalblue1" , 0x4876ff }, - { "royalblue2" , 0x436eee }, - { "royalblue3" , 0x3a5fcd }, - { "royalblue4" , 0x27408b }, - { "blue1" , 0xff }, - { "blue2" , 0xee }, - { "blue3" , 0xcd }, - { "blue4" , 0x8b }, - { "dodgerblue1" , 0x1e90ff }, - { "dodgerblue2" , 0x1c86ee }, - { "dodgerblue3" , 0x1874cd }, - { "dodgerblue4" , 0x104e8b }, - { "steelblue1" , 0x63b8ff }, - { "steelblue2" , 0x5cacee }, - { "steelblue3" , 0x4f94cd }, - { "steelblue4" , 0x36648b }, - { "deepskyblue1" , 0xbfff }, - { "deepskyblue2" , 0xb2ee }, - { "deepskyblue3" , 0x9acd }, - { "deepskyblue4" , 0x688b }, - { "skyblue1" , 0x87ceff }, - { "skyblue2" , 0x7ec0ee }, - { "skyblue3" , 0x6ca6cd }, - { "skyblue4" , 0x4a708b }, - { "lightskyblue1" , 0xb0e2ff }, - { "lightskyblue2" , 0xa4d3ee }, - { "lightskyblue3" , 0x8db6cd }, - { "lightskyblue4" , 0x607b8b }, - { "slategray1" , 0xc6e2ff }, - { "slategray2" , 0xb9d3ee }, - { "slategray3" , 0x9fb6cd }, - { "slategray4" , 0x6c7b8b }, - { "lightsteelblue1" , 0xcae1ff }, - { "lightsteelblue2" , 0xbcd2ee }, - { "lightsteelblue3" , 0xa2b5cd }, - { "lightsteelblue4" , 0x6e7b8b }, - { "lightblue1" , 0xbfefff }, - { "lightblue2" , 0xb2dfee }, - { "lightblue3" , 0x9ac0cd }, - { "lightblue4" , 0x68838b }, - { "lightcyan1" , 0xe0ffff }, - { "lightcyan2" , 0xd1eeee }, - { "lightcyan3" , 0xb4cdcd }, - { "lightcyan4" , 0x7a8b8b }, - { "paleturquoise1" , 0xbbffff }, - { "paleturquoise2" , 0xaeeeee }, - { "paleturquoise3" , 0x96cdcd }, - { "paleturquoise4" , 0x668b8b }, - { "cadetblue1" , 0x98f5ff }, - { "cadetblue2" , 0x8ee5ee }, - { "cadetblue3" , 0x7ac5cd }, - { "cadetblue4" , 0x53868b }, - { "turquoise1" , 0xf5ff }, - { "turquoise2" , 0xe5ee }, - { "turquoise3" , 0xc5cd }, - { "turquoise4" , 0x868b }, - { "cyan1" , 0xffff }, - { "cyan2" , 0xeeee }, - { "cyan3" , 0xcdcd }, - { "cyan4" , 0x8b8b }, - { "darkslategray1" , 0x97ffff }, - { "darkslategray2" , 0x8deeee }, - { "darkslategray3" , 0x79cdcd }, - { "darkslategray4" , 0x528b8b }, - { "aquamarine1" , 0x7fffd4 }, - { "aquamarine2" , 0x76eec6 }, - { "aquamarine3" , 0x66cdaa }, - { "aquamarine4" , 0x458b74 }, - { "darkseagreen1" , 0xc1ffc1 }, - { "darkseagreen2" , 0xb4eeb4 }, - { "darkseagreen3" , 0x9bcd9b }, - { "darkseagreen4" , 0x698b69 }, - { "seagreen1" , 0x54ff9f }, - { "seagreen2" , 0x4eee94 }, - { "seagreen3" , 0x43cd80 }, - { "seagreen4" , 0x2e8b57 }, - { "palegreen1" , 0x9aff9a }, - { "palegreen2" , 0x90ee90 }, - { "palegreen3" , 0x7ccd7c }, - { "palegreen4" , 0x548b54 }, - { "springgreen1" , 0xff7f }, - { "springgreen2" , 0xee76 }, - { "springgreen3" , 0xcd66 }, - { "springgreen4" , 0x8b45 }, - { "green1" , 0xff00 }, - { "green2" , 0xee00 }, - { "green3" , 0xcd00 }, - { "green4" , 0x8b00 }, - { "chartreuse1" , 0x7fff00 }, - { "chartreuse2" , 0x76ee00 }, - { "chartreuse3" , 0x66cd00 }, - { "chartreuse4" , 0x458b00 }, - { "olivedrab1" , 0xc0ff3e }, - { "olivedrab2" , 0xb3ee3a }, - { "olivedrab3" , 0x9acd32 }, - { "olivedrab4" , 0x698b22 }, - { "darkolivegreen1" , 0xcaff70 }, - { "darkolivegreen2" , 0xbcee68 }, - { "darkolivegreen3" , 0xa2cd5a }, - { "darkolivegreen4" , 0x6e8b3d }, - { "khaki1" , 0xfff68f }, - { "khaki2" , 0xeee685 }, - { "khaki3" , 0xcdc673 }, - { "khaki4" , 0x8b864e }, - { "lightgoldenrod1" , 0xffec8b }, - { "lightgoldenrod2" , 0xeedc82 }, - { "lightgoldenrod3" , 0xcdbe70 }, - { "lightgoldenrod4" , 0x8b814c }, - { "lightyellow1" , 0xffffe0 }, - { "lightyellow2" , 0xeeeed1 }, - { "lightyellow3" , 0xcdcdb4 }, - { "lightyellow4" , 0x8b8b7a }, - { "yellow1" , 0xffff00 }, - { "yellow2" , 0xeeee00 }, - { "yellow3" , 0xcdcd00 }, - { "yellow4" , 0x8b8b00 }, - { "gold1" , 0xffd700 }, - { "gold2" , 0xeec900 }, - { "gold3" , 0xcdad00 }, - { "gold4" , 0x8b7500 }, - { "goldenrod1" , 0xffc125 }, - { "goldenrod2" , 0xeeb422 }, - { "goldenrod3" , 0xcd9b1d }, - { "goldenrod4" , 0x8b6914 }, - { "darkgoldenrod1" , 0xffb90f }, - { "darkgoldenrod2" , 0xeead0e }, - { "darkgoldenrod3" , 0xcd950c }, - { "darkgoldenrod4" , 0x8b6508 }, - { "rosybrown1" , 0xffc1c1 }, - { "rosybrown2" , 0xeeb4b4 }, - { "rosybrown3" , 0xcd9b9b }, - { "rosybrown4" , 0x8b6969 }, - { "indianred1" , 0xff6a6a }, - { "indianred2" , 0xee6363 }, - { "indianred3" , 0xcd5555 }, - { "indianred4" , 0x8b3a3a }, - { "sienna1" , 0xff8247 }, - { "sienna2" , 0xee7942 }, - { "sienna3" , 0xcd6839 }, - { "sienna4" , 0x8b4726 }, - { "burlywood1" , 0xffd39b }, - { "burlywood2" , 0xeec591 }, - { "burlywood3" , 0xcdaa7d }, - { "burlywood4" , 0x8b7355 }, - { "wheat1" , 0xffe7ba }, - { "wheat2" , 0xeed8ae }, - { "wheat3" , 0xcdba96 }, - { "wheat4" , 0x8b7e66 }, - { "tan1" , 0xffa54f }, - { "tan2" , 0xee9a49 }, - { "tan3" , 0xcd853f }, - { "tan4" , 0x8b5a2b }, - { "chocolate1" , 0xff7f24 }, - { "chocolate2" , 0xee7621 }, - { "chocolate3" , 0xcd661d }, - { "chocolate4" , 0x8b4513 }, - { "firebrick1" , 0xff3030 }, - { "firebrick2" , 0xee2c2c }, - { "firebrick3" , 0xcd2626 }, - { "firebrick4" , 0x8b1a1a }, - { "brown1" , 0xff4040 }, - { "brown2" , 0xee3b3b }, - { "brown3" , 0xcd3333 }, - { "brown4" , 0x8b2323 }, - { "salmon1" , 0xff8c69 }, - { "salmon2" , 0xee8262 }, - { "salmon3" , 0xcd7054 }, - { "salmon4" , 0x8b4c39 }, - { "lightsalmon1" , 0xffa07a }, - { "lightsalmon2" , 0xee9572 }, - { "lightsalmon3" , 0xcd8162 }, - { "lightsalmon4" , 0x8b5742 }, - { "orange1" , 0xffa500 }, - { "orange2" , 0xee9a00 }, - { "orange3" , 0xcd8500 }, - { "orange4" , 0x8b5a00 }, - { "darkorange1" , 0xff7f00 }, - { "darkorange2" , 0xee7600 }, - { "darkorange3" , 0xcd6600 }, - { "darkorange4" , 0x8b4500 }, - { "coral1" , 0xff7256 }, - { "coral2" , 0xee6a50 }, - { "coral3" , 0xcd5b45 }, - { "coral4" , 0x8b3e2f }, - { "tomato1" , 0xff6347 }, - { "tomato2" , 0xee5c42 }, - { "tomato3" , 0xcd4f39 }, - { "tomato4" , 0x8b3626 }, - { "orangered1" , 0xff4500 }, - { "orangered2" , 0xee4000 }, - { "orangered3" , 0xcd3700 }, - { "orangered4" , 0x8b2500 }, - { "red1" , 0xff0000 }, - { "red2" , 0xee0000 }, - { "red3" , 0xcd0000 }, - { "red4" , 0x8b0000 }, - { "deeppink1" , 0xff1493 }, - { "deeppink2" , 0xee1289 }, - { "deeppink3" , 0xcd1076 }, - { "deeppink4" , 0x8b0a50 }, - { "hotpink1" , 0xff6eb4 }, - { "hotpink2" , 0xee6aa7 }, - { "hotpink3" , 0xcd6090 }, - { "hotpink4" , 0x8b3a62 }, - { "pink1" , 0xffb5c5 }, - { "pink2" , 0xeea9b8 }, - { "pink3" , 0xcd919e }, - { "pink4" , 0x8b636c }, - { "lightpink1" , 0xffaeb9 }, - { "lightpink2" , 0xeea2ad }, - { "lightpink3" , 0xcd8c95 }, - { "lightpink4" , 0x8b5f65 }, - { "palevioletred1" , 0xff82ab }, - { "palevioletred2" , 0xee799f }, - { "palevioletred3" , 0xcd6889 }, - { "palevioletred4" , 0x8b475d }, - { "maroon1" , 0xff34b3 }, - { "maroon2" , 0xee30a7 }, - { "maroon3" , 0xcd2990 }, - { "maroon4" , 0x8b1c62 }, - { "violetred1" , 0xff3e96 }, - { "violetred2" , 0xee3a8c }, - { "violetred3" , 0xcd3278 }, - { "violetred4" , 0x8b2252 }, - { "magenta1" , 0xff00ff }, - { "magenta2" , 0xee00ee }, - { "magenta3" , 0xcd00cd }, - { "magenta4" , 0x8b008b }, - { "orchid1" , 0xff83fa }, - { "orchid2" , 0xee7ae9 }, - { "orchid3" , 0xcd69c9 }, - { "orchid4" , 0x8b4789 }, - { "plum1" , 0xffbbff }, - { "plum2" , 0xeeaeee }, - { "plum3" , 0xcd96cd }, - { "plum4" , 0x8b668b }, - { "mediumorchid1" , 0xe066ff }, - { "mediumorchid2" , 0xd15fee }, - { "mediumorchid3" , 0xb452cd }, - { "mediumorchid4" , 0x7a378b }, - { "darkorchid1" , 0xbf3eff }, - { "darkorchid2" , 0xb23aee }, - { "darkorchid3" , 0x9a32cd }, - { "darkorchid4" , 0x68228b }, - { "purple1" , 0x9b30ff }, - { "purple2" , 0x912cee }, - { "purple3" , 0x7d26cd }, - { "purple4" , 0x551a8b }, - { "mediumpurple1" , 0xab82ff }, - { "mediumpurple2" , 0x9f79ee }, - { "mediumpurple3" , 0x8968cd }, - { "mediumpurple4" , 0x5d478b }, - { "thistle1" , 0xffe1ff }, - { "thistle2" , 0xeed2ee }, - { "thistle3" , 0xcdb5cd }, - { "thistle4" , 0x8b7b8b }, - { "gray0" , 0x0 }, - { "grey0" , 0x0 }, - { "gray1" , 0x30303 }, - { "grey1" , 0x30303 }, - { "gray2" , 0x50505 }, - { "grey2" , 0x50505 }, - { "gray3" , 0x80808 }, - { "grey3" , 0x80808 }, - { "gray4" , 0xa0a0a }, - { "grey4" , 0xa0a0a }, - { "gray5" , 0xd0d0d }, - { "grey5" , 0xd0d0d }, - { "gray6" , 0xf0f0f }, - { "grey6" , 0xf0f0f }, - { "gray7" , 0x121212 }, - { "grey7" , 0x121212 }, - { "gray8" , 0x141414 }, - { "grey8" , 0x141414 }, - { "gray9" , 0x171717 }, - { "grey9" , 0x171717 }, - { "gray10" , 0x1a1a1a }, - { "grey10" , 0x1a1a1a }, - { "gray11" , 0x1c1c1c }, - { "grey11" , 0x1c1c1c }, - { "gray12" , 0x1f1f1f }, - { "grey12" , 0x1f1f1f }, - { "gray13" , 0x212121 }, - { "grey13" , 0x212121 }, - { "gray14" , 0x242424 }, - { "grey14" , 0x242424 }, - { "gray15" , 0x262626 }, - { "grey15" , 0x262626 }, - { "gray16" , 0x292929 }, - { "grey16" , 0x292929 }, - { "gray17" , 0x2b2b2b }, - { "grey17" , 0x2b2b2b }, - { "gray18" , 0x2e2e2e }, - { "grey18" , 0x2e2e2e }, - { "gray19" , 0x303030 }, - { "grey19" , 0x303030 }, - { "gray20" , 0x333333 }, - { "grey20" , 0x333333 }, - { "gray21" , 0x363636 }, - { "grey21" , 0x363636 }, - { "gray22" , 0x383838 }, - { "grey22" , 0x383838 }, - { "gray23" , 0x3b3b3b }, - { "grey23" , 0x3b3b3b }, - { "gray24" , 0x3d3d3d }, - { "grey24" , 0x3d3d3d }, - { "gray25" , 0x404040 }, - { "grey25" , 0x404040 }, - { "gray26" , 0x424242 }, - { "grey26" , 0x424242 }, - { "gray27" , 0x454545 }, - { "grey27" , 0x454545 }, - { "gray28" , 0x474747 }, - { "grey28" , 0x474747 }, - { "gray29" , 0x4a4a4a }, - { "grey29" , 0x4a4a4a }, - { "gray30" , 0x4d4d4d }, - { "grey30" , 0x4d4d4d }, - { "gray31" , 0x4f4f4f }, - { "grey31" , 0x4f4f4f }, - { "gray32" , 0x525252 }, - { "grey32" , 0x525252 }, - { "gray33" , 0x545454 }, - { "grey33" , 0x545454 }, - { "gray34" , 0x575757 }, - { "grey34" , 0x575757 }, - { "gray35" , 0x595959 }, - { "grey35" , 0x595959 }, - { "gray36" , 0x5c5c5c }, - { "grey36" , 0x5c5c5c }, - { "gray37" , 0x5e5e5e }, - { "grey37" , 0x5e5e5e }, - { "gray38" , 0x616161 }, - { "grey38" , 0x616161 }, - { "gray39" , 0x636363 }, - { "grey39" , 0x636363 }, - { "gray40" , 0x666666 }, - { "grey40" , 0x666666 }, - { "gray41" , 0x696969 }, - { "grey41" , 0x696969 }, - { "gray42" , 0x6b6b6b }, - { "grey42" , 0x6b6b6b }, - { "gray43" , 0x6e6e6e }, - { "grey43" , 0x6e6e6e }, - { "gray44" , 0x707070 }, - { "grey44" , 0x707070 }, - { "gray45" , 0x737373 }, - { "grey45" , 0x737373 }, - { "gray46" , 0x757575 }, - { "grey46" , 0x757575 }, - { "gray47" , 0x787878 }, - { "grey47" , 0x787878 }, - { "gray48" , 0x7a7a7a }, - { "grey48" , 0x7a7a7a }, - { "gray49" , 0x7d7d7d }, - { "grey49" , 0x7d7d7d }, - { "gray50" , 0x7f7f7f }, - { "grey50" , 0x7f7f7f }, - { "gray51" , 0x828282 }, - { "grey51" , 0x828282 }, - { "gray52" , 0x858585 }, - { "grey52" , 0x858585 }, - { "gray53" , 0x878787 }, - { "grey53" , 0x878787 }, - { "gray54" , 0x8a8a8a }, - { "grey54" , 0x8a8a8a }, - { "gray55" , 0x8c8c8c }, - { "grey55" , 0x8c8c8c }, - { "gray56" , 0x8f8f8f }, - { "grey56" , 0x8f8f8f }, - { "gray57" , 0x919191 }, - { "grey57" , 0x919191 }, - { "gray58" , 0x949494 }, - { "grey58" , 0x949494 }, - { "gray59" , 0x969696 }, - { "grey59" , 0x969696 }, - { "gray60" , 0x999999 }, - { "grey60" , 0x999999 }, - { "gray61" , 0x9c9c9c }, - { "grey61" , 0x9c9c9c }, - { "gray62" , 0x9e9e9e }, - { "grey62" , 0x9e9e9e }, - { "gray63" , 0xa1a1a1 }, - { "grey63" , 0xa1a1a1 }, - { "gray64" , 0xa3a3a3 }, - { "grey64" , 0xa3a3a3 }, - { "gray65" , 0xa6a6a6 }, - { "grey65" , 0xa6a6a6 }, - { "gray66" , 0xa8a8a8 }, - { "grey66" , 0xa8a8a8 }, - { "gray67" , 0xababab }, - { "grey67" , 0xababab }, - { "gray68" , 0xadadad }, - { "grey68" , 0xadadad }, - { "gray69" , 0xb0b0b0 }, - { "grey69" , 0xb0b0b0 }, - { "gray70" , 0xb3b3b3 }, - { "grey70" , 0xb3b3b3 }, - { "gray71" , 0xb5b5b5 }, - { "grey71" , 0xb5b5b5 }, - { "gray72" , 0xb8b8b8 }, - { "grey72" , 0xb8b8b8 }, - { "gray73" , 0xbababa }, - { "grey73" , 0xbababa }, - { "gray74" , 0xbdbdbd }, - { "grey74" , 0xbdbdbd }, - { "gray75" , 0xbfbfbf }, - { "grey75" , 0xbfbfbf }, - { "gray76" , 0xc2c2c2 }, - { "grey76" , 0xc2c2c2 }, - { "gray77" , 0xc4c4c4 }, - { "grey77" , 0xc4c4c4 }, - { "gray78" , 0xc7c7c7 }, - { "grey78" , 0xc7c7c7 }, - { "gray79" , 0xc9c9c9 }, - { "grey79" , 0xc9c9c9 }, - { "gray80" , 0xcccccc }, - { "grey80" , 0xcccccc }, - { "gray81" , 0xcfcfcf }, - { "grey81" , 0xcfcfcf }, - { "gray82" , 0xd1d1d1 }, - { "grey82" , 0xd1d1d1 }, - { "gray83" , 0xd4d4d4 }, - { "grey83" , 0xd4d4d4 }, - { "gray84" , 0xd6d6d6 }, - { "grey84" , 0xd6d6d6 }, - { "gray85" , 0xd9d9d9 }, - { "grey85" , 0xd9d9d9 }, - { "gray86" , 0xdbdbdb }, - { "grey86" , 0xdbdbdb }, - { "gray87" , 0xdedede }, - { "grey87" , 0xdedede }, - { "gray88" , 0xe0e0e0 }, - { "grey88" , 0xe0e0e0 }, - { "gray89" , 0xe3e3e3 }, - { "grey89" , 0xe3e3e3 }, - { "gray90" , 0xe5e5e5 }, - { "grey90" , 0xe5e5e5 }, - { "gray91" , 0xe8e8e8 }, - { "grey91" , 0xe8e8e8 }, - { "gray92" , 0xebebeb }, - { "grey92" , 0xebebeb }, - { "gray93" , 0xededed }, - { "grey93" , 0xededed }, - { "gray94" , 0xf0f0f0 }, - { "grey94" , 0xf0f0f0 }, - { "gray95" , 0xf2f2f2 }, - { "grey95" , 0xf2f2f2 }, - { "gray96" , 0xf5f5f5 }, - { "grey96" , 0xf5f5f5 }, - { "gray97" , 0xf7f7f7 }, - { "grey97" , 0xf7f7f7 }, - { "gray98" , 0xfafafa }, - { "grey98" , 0xfafafa }, - { "gray99" , 0xfcfcfc }, - { "grey99" , 0xfcfcfc }, - { "gray100" , 0xffffff }, - { "grey100" , 0xffffff }, - { "dark grey" , 0xa9a9a9 }, - { "darkgrey" , 0xa9a9a9 }, - { "dark gray" , 0xa9a9a9 }, - { "darkgray" , 0xa9a9a9 }, - { "dark blue" , 0x8b }, - { "darkblue" , 0x8b }, - { "dark cyan" , 0x8b8b }, - { "darkcyan" , 0x8b8b }, - { "dark magenta" , 0x8b008b }, - { "darkmagenta" , 0x8b008b }, - { "dark red" , 0x8b0000 }, - { "darkred" , 0x8b0000 }, - { "light green" , 0x90ee90 }, - { "lightgreen" , 0x90ee90 }, - { "none", -1 }, - { 0, 0 } -}; diff --git a/mlx/mlx_screen_size.c b/mlx/mlx_screen_size.c deleted file mode 100644 index 835730d..0000000 --- a/mlx/mlx_screen_size.c +++ /dev/null @@ -1,13 +0,0 @@ -#include "mlx_int.h" - -int mlx_get_screen_size(void *mlx_ptr, int *sizex, int *sizey) -{ - XWindowAttributes xwAttr; - Status ret; - t_xvar *xvar; - - xvar = mlx_ptr; - ret = XGetWindowAttributes(xvar->display, xvar->root, &xwAttr); - (*sizex) = xwAttr.width; - (*sizey) = xwAttr.height; -} diff --git a/mlx/mlx_set_font.c b/mlx/mlx_set_font.c deleted file mode 100644 index 111e3b8..0000000 --- a/mlx/mlx_set_font.c +++ /dev/null @@ -1,30 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* mlx_set_font.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: amalliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2020/09/30 13:30:47 by amalliar #+# #+# */ -/* Updated: 2020/09/30 17:08:36 by amalliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "mlx_int.h" - -/* -** Allows to specify the font that will be used by mlx_string_put. -** -** Note: only fixed-width bitmap fonts are supported by Xlib, refer to xfontsel -** utility to get valid font names for this function. -*/ - -void mlx_set_font(t_xvar *xvar, t_win_list *win, char *name) -{ - static Font font = 0; - - if (font) - XUnloadFont(xvar->display, font); - font = XLoadFont(xvar->display, name); - XSetFont(xvar->display, win->gc, font); -} diff --git a/mlx/mlx_string_put.c b/mlx/mlx_string_put.c deleted file mode 100644 index 8492a09..0000000 --- a/mlx/mlx_string_put.c +++ /dev/null @@ -1,26 +0,0 @@ -/* - ** mlx_string_put.c for MiniLibX in - ** - ** Made by Charlie Root - ** Login - ** - ** Started on Mon Jul 31 19:01:33 2000 Charlie Root -** Last update Tue Sep 25 17:11:47 2001 Charlie Root - */ - - -#include "mlx_int.h" - - - -int mlx_string_put(t_xvar *xvar,t_win_list *win, - int x,int y,int color,char *string) -{ - XGCValues xgcv; - - xgcv.foreground = mlx_int_get_good_color(xvar,color); - XChangeGC(xvar->display,win->gc,GCForeground,&xgcv); - XDrawString(xvar->display,win->window,win->gc,x,y,string,strlen(string)); - if (xvar->do_flush) - XFlush(xvar->display); -} diff --git a/mlx/mlx_xpm.c b/mlx/mlx_xpm.c deleted file mode 100644 index 688cc94..0000000 --- a/mlx/mlx_xpm.c +++ /dev/null @@ -1,345 +0,0 @@ -/* - ** xpm-read.c for MinilibX in - ** - ** Made by Charlie Root - ** Login - ** - ** Started on Tue Dec 11 15:25:27 2001 olivier crouzet - ** Last update Sat Oct 1 14:56:13 2005 Olivier Crouzet - */ - - -#include "mlx_int.h" - -extern struct s_col_name mlx_col_name[]; - - -#define RETURN { if (colors) free(colors); if (tab) free(tab); \ - tab = (void *)0; if (colors_direct) free(colors_direct); \ - if (img) {XDestroyImage(img->image); \ - XFreePixmap(xvar->display,img->pix);free(img);} \ - return ((void *)0);} - - - - -char *mlx_int_get_line(char *ptr,int *pos,int size) -{ - int pos2; - int pos3; - int pos4; - - if ((pos2 = mlx_int_str_str(ptr+*pos,"\"",size-*pos))==-1) - return ((char *)0); - if ((pos3 = mlx_int_str_str(ptr+*pos+pos2+1,"\"",size-*pos-pos2-1))==-1) - return ((char *)0); - *(ptr+*pos+pos2) = 0; - *(ptr+*pos+pos2+1+pos3) = 0; - pos4 = *pos+pos2+1; - *pos += pos2+pos3+2; - return (ptr+pos4); -} - - -unsigned int strlcpy_is_not_posix(char *dest, char *src, unsigned int size) -{ - unsigned count; - unsigned i; - - count = 0; - while (src[count] != '\0') - ++count; - i = 0; - while (src[i] != '\0' && i < (size - 1)) - { - dest[i] = src[i]; - ++i; - } - dest[i] = '\0'; - return (count); -} - -char *mlx_int_static_line(char **xpm_data,int *pos,int size) -{ - static char *copy = 0; - static int len = 0; - int len2; - char *str; - - str = xpm_data[(*pos)++]; - if ((len2 = strlen(str))>len) - { - if (copy) - free(copy); - if (!(copy = malloc(len2+1))) - return ((char *)0); - len = len2; - } - strlcpy_is_not_posix(copy, str, len2); - - return (copy); -} - - -int mlx_int_get_col_name(char *str,int size) -{ - int result; - - result = 0; - while (size--) - result = (result<<8)+*(str++); - - return (result); -} - -int mlx_int_get_text_rgb(char *name, char *end) -{ - int i; - char buff[64]; - - if (*name == '#') - return (strtol(name+1,0,16)); - if (end) - { - snprintf(buff, 64, "%s %s", name, end); - name = buff; - } - i = 0; - while (mlx_col_name[i].name) - { - if (!strcasecmp(mlx_col_name[i].name, name)) - return (mlx_col_name[i].color); - i ++; - } - return (0); -} - - -int mlx_int_xpm_set_pixel(t_img *img, char *data, int opp, int col, int x) -{ - int dec; - - dec = opp; - while (dec--) - { - if (img->image->byte_order) - *(data+x*opp+dec) = col&0xFF; - else - *(data+x*opp+opp-dec-1) = col&0xFF; - col >>= 8; - } -} - - -void *mlx_int_parse_xpm(t_xvar *xvar,void *info,int info_size,char *(*f)()) -{ - int pos; - char *line; - char **tab; - char *data; - char *clip_data; - int nc; - int opp; - int cpp; - int col; - int rgb_col; - int col_name; - int method; - int x; - int i; - int j; - t_img *img; - t_xpm_col *colors; - int *colors_direct; - int width; - int height; - XImage *clip_img; - XGCValues xgcv; - Pixmap clip_pix; - - colors = 0; - colors_direct = 0; - img = 0; - tab = 0; - pos = 0; - if (!(line = f(info,&pos,info_size)) || - !(tab = mlx_int_str_to_wordtab(line)) || !(width = atoi(tab[0])) || - !(height = atoi(tab[1])) || !(nc = atoi(tab[2])) || - !(cpp = atoi(tab[3])) ) - RETURN; - free(tab); - tab = 0; - - method = 0; - if (cpp<=2) - { - method = 1; - if (!(colors_direct = malloc((cpp==2?65536:256)*sizeof(int)))) - RETURN; - } - else - if (!(colors = malloc(nc*sizeof(*colors)))) - RETURN; - - clip_data = 0; - - i = nc; - while (i--) - { - if (!(line = f(info,&pos,info_size)) || - !(tab = mlx_int_str_to_wordtab(line+cpp)) ) - RETURN; - j = 0; - while (tab[j] && strcmp(tab[j++],"c")); - - if (!tab[j]) - RETURN; - rgb_col = mlx_int_get_text_rgb(tab[j], tab[j+1]); - /* - if ((rgb_col = mlx_int_get_text_rgb(tab[j], tab[j+1]))==-1) - { - if (!(clip_data = malloc(4*width*height)) || ok, nice size .. - !(clip_img = XCreateImage(xvar->display, xvar->visual, - 1, XYPixmap, 0, clip_data, - width, height, 8, (width+7)/8)) ) - RETURN; - memset(clip_data, 0xFF, 4*width*height); - } - */ - if (method) - colors_direct[mlx_int_get_col_name(line,cpp)] = rgb_col; - // rgb_col>=0?mlx_get_color_value(xvar, rgb_col):rgb_col; - else - { - colors[i].name = mlx_int_get_col_name(line,cpp); - colors[i].col = rgb_col; //rgb_col>=0?mlx_get_color_value(xvar,rgb_col):rgb_col; - } - free(tab); - tab = (void *)0; - } - - if (!(img = mlx_new_image(xvar,width,height))) - RETURN; - opp = img->bpp/8; - - - i = height; - data = img->data; - while (i--) - { - if (!(line = f(info,&pos,info_size))) - RETURN; - x = 0; - while (xsize_line; - } - /* - if (clip_data) - { - if (!(clip_pix = XCreatePixmap(xvar->display, xvar->root, - width, height, 1)) ) - RETURN; - img->gc = XCreateGC(xvar->display, clip_pix, 0, &xgcv); - XPutImage(xvar->display, clip_pix, img->gc, clip_img, - 0, 0, 0, 0, width, height); - XFreeGC(xvar->display, img->gc); - xgcv.clip_mask = clip_pix; - xgcv.function = GXcopy; - xgcv.plane_mask = AllPlanes; - img->gc = XCreateGC(xvar->display, xvar->root, GCClipMask|GCFunction| - GCPlaneMask, &xgcv); - XSync(xvar->display, False); - XDestroyImage(clip_img); - } - */ - if (colors) - free(colors); - if (colors_direct) - free(colors_direct); - return (img); -} - - -int mlx_int_file_get_rid_comment(char *ptr, int size) -{ - int com_begin; - int com_end; - - while ((com_begin = mlx_int_str_str_cote(ptr,"/*",size))!=-1) - { - com_end = mlx_int_str_str(ptr+com_begin+2,"*/",size-com_begin-2); - memset(ptr+com_begin,' ',com_end+4); - } - while ((com_begin = mlx_int_str_str_cote(ptr,"//",size))!=-1) - { - com_end = mlx_int_str_str(ptr+com_begin+2,"\n",size-com_begin-2); - memset(ptr+com_begin,' ',com_end+3); - } -} - - -void *mlx_xpm_file_to_image(t_xvar *xvar,char *file,int *width,int *height) -{ - int fd; - int size; - char *ptr; - t_img *img; - - fd = -1; - if ((fd = open(file,O_RDONLY))==-1 || (size = lseek(fd,0,SEEK_END))==-1 || - (ptr = mmap(0,size,PROT_WRITE|PROT_READ,MAP_PRIVATE,fd,0))== - (void *)MAP_FAILED) - { - if (fd>=0) - close(fd); - return ((void *)0); - } - mlx_int_file_get_rid_comment(ptr, size); - if (img = mlx_int_parse_xpm(xvar,ptr,size,mlx_int_get_line)) - { - *width = img->width; - *height = img->height; - } - munmap(ptr,size); - close(fd); - return (img); -} - -void *mlx_xpm_to_image(t_xvar *xvar,char **xpm_data,int *width,int *height) -{ - t_img *img; - - if (img = mlx_int_parse_xpm(xvar,xpm_data,0,mlx_int_static_line)) - { - *width = img->width; - *height = img->height; - } - return (img); -} diff --git a/mlx/mlx_xpm.c.ok b/mlx/mlx_xpm.c.ok deleted file mode 100644 index 225ea3c..0000000 --- a/mlx/mlx_xpm.c.ok +++ /dev/null @@ -1,310 +0,0 @@ -/* -** xpm-read.c for MinilibX in -** -** Made by Charlie Root -** Login -** -** Started on Tue Dec 11 15:25:27 2001 olivier crouzet -** Last update Sat Oct 1 14:40:55 2005 Olivier Crouzet -*/ - - -#include "mlx_int.h" - -extern struct s_col_name mlx_col_name[]; - - -#define RETURN { if (colors) free(colors); if (tab) free(tab); \ - if (colors_direct) free(colors_direct); \ - if (img) {XDestroyImage(img->image); \ - XFreePixmap(xvar->display,img->pix);free(img);} \ - return ((void *)0);} - - - - -char *mlx_int_get_line(char *ptr,int *pos,int size) -{ - int pos2; - int pos3; - int pos4; - - if ((pos2 = mlx_int_str_str(ptr+*pos,"\"",size-*pos))==-1) - return ((char *)0); - if ((pos3 = mlx_int_str_str(ptr+*pos+pos2+1,"\"",size-*pos-pos2-1))==-1) - return ((char *)0); - *(ptr+*pos+pos2) = 0; - *(ptr+*pos+pos2+1+pos3) = 0; - pos4 = *pos+pos2+1; - *pos += pos2+pos3+2; - return (ptr+pos4); -} - - - -char *mlx_int_static_line(char **xpm_data,int *pos,int size) -{ - static char *copy = 0; - static int len = 0; - int len2; - char *str; - - str = xpm_data[(*pos)++]; - if ((len2 = strlen(str))>len) - { - if (copy) - free(copy); - if (!(copy = malloc(len2+1))) - return ((char *)0); - len = len2; - } - /* strcpy(copy,str); */ - strlcpy(copy, str, len2+1); - return (copy); -} - - -int mlx_int_get_col_name(char *str,int size) -{ - int result; - - result = 0; - while (size--) - result = (result<<8)+*(str++); - return (result); -} - -int mlx_int_get_text_rgb(char *name) -{ - int i; - - if (*name == '#') - return (strtol(name+1,0,16)); - i = 0; - while (mlx_col_name[i].name) - { - if (!strcasecmp(mlx_col_name[i].name, name)) - return (mlx_col_name[i].color); - i ++; - } - return (0); -} - - -int mlx_int_xpm_set_pixel(t_img *img, char *data, int opp, int col, int x) -{ - int dec; - - dec = opp; - while (dec--) - { - if (img->image->byte_order) - *(data+x*opp+dec) = col&0xFF; - else - *(data+x*opp+opp-dec-1) = col&0xFF; - col >>= 8; - } -} - - -void *mlx_int_parse_xpm(t_xvar *xvar,void *info,int info_size,char *(*f)()) -{ - int pos; - char *line; - char **tab; - char *data; - char *clip_data; - int nc; - int opp; - int cpp; - int col; - int rgb_col; - int col_name; - int method; - int x; - int i; - int j; - t_img *img; - t_xpm_col *colors; - int *colors_direct; - int width; - int height; - XImage *clip_img; - XGCValues xgcv; - Pixmap clip_pix; - - colors = 0; - colors_direct = 0; - img = 0; - tab = 0; - pos = 0; - if (!(line = f(info,&pos,info_size)) || - !(tab = mlx_int_str_to_wordtab(line)) || !(width = atoi(tab[0])) || - !(height = atoi(tab[1])) || !(nc = atoi(tab[2])) || - !(cpp = atoi(tab[3])) ) - RETURN; - free(tab); - tab = 0; - - method = 0; - if (cpp<=2) - { - method = 1; - if (!(colors_direct = malloc((cpp==2?65536:256)*sizeof(int)))) - RETURN; - } - else - if (!(colors = malloc(nc*sizeof(*colors)))) - RETURN; - - clip_data = 0; - - i = nc; - while (i--) - { - if (!(line = f(info,&pos,info_size)) || - !(tab = mlx_int_str_to_wordtab(line+cpp)) ) - RETURN; - j = 0; - while (tab[j] && strcmp(tab[j++],"c")); - if (!tab[j]) - RETURN; - - if ((rgb_col = mlx_int_get_text_rgb(tab[j]))==-1) - { - if (!(clip_data = malloc(4*width*height)) || /* ok, nice size .. */ - !(clip_img = XCreateImage(xvar->display, xvar->visual, - 1, XYPixmap, 0, clip_data, - width, height, 8, (width+7)/8)) ) - RETURN; - memset(clip_data, 0xFF, 4*width*height); - } - - if (method) - colors_direct[mlx_int_get_col_name(line,cpp)] = - rgb_col>=0?mlx_get_color_value(xvar, rgb_col):rgb_col; - else - { - colors[i].name = mlx_int_get_col_name(line,cpp); - colors[i].col = rgb_col>=0?mlx_get_color_value(xvar,rgb_col):rgb_col; - } - free(tab); - } - - if (!(img = mlx_new_image(xvar,width,height))) - RETURN; - opp = img->bpp/8; - - - i = height; - data = img->data; - while (i--) - { - if (!(line = f(info,&pos,info_size))) - RETURN; - x = 0; - while (xsize_line; - } - if (clip_data) - { - if (!(clip_pix = XCreatePixmap(xvar->display, xvar->root, - width, height, 1)) ) - RETURN; - img->gc = XCreateGC(xvar->display, clip_pix, 0, &xgcv); - XPutImage(xvar->display, clip_pix, img->gc, clip_img, - 0, 0, 0, 0, width, height); - XFreeGC(xvar->display, img->gc); - xgcv.clip_mask = clip_pix; - xgcv.function = GXcopy; - xgcv.plane_mask = AllPlanes; - img->gc = XCreateGC(xvar->display, xvar->root, GCClipMask|GCFunction| - GCPlaneMask, &xgcv); - XSync(xvar->display, False); - XDestroyImage(clip_img); - } - if (colors) - free(colors); - if (colors_direct) - free(colors_direct); - return (img); -} - - -int mlx_int_file_get_rid_comment(char *ptr, int size) -{ - int com_begin; - int com_end; - - while ((com_begin = mlx_int_str_str_cote(ptr,"/*",size))!=-1) - { - com_end = mlx_int_str_str(ptr+com_begin+2,"*/",size-com_begin-2); - memset(ptr+com_begin,' ',com_end+4); - } - while ((com_begin = mlx_int_str_str_cote(ptr,"//",size))!=-1) - { - com_end = mlx_int_str_str(ptr+com_begin+2,"\n",size-com_begin-2); - memset(ptr+com_begin,' ',com_end+3); - } -} - - -void *mlx_xpm_file_to_image(t_xvar *xvar,char *file,int *width,int *height) -{ - int fd; - int size; - char *ptr; - t_img *img; - - fd = -1; - if ((fd = open(file,O_RDONLY))==-1 || (size = lseek(fd,0,SEEK_END))==-1 || - (ptr = mmap(0,size,PROT_WRITE|PROT_READ,MAP_PRIVATE,fd,0))== - (void *)MAP_FAILED) - { - if (fd>=0) - close(fd); - return ((void *)0); - } - mlx_int_file_get_rid_comment(ptr, size); - if (img = mlx_int_parse_xpm(xvar,ptr,size,mlx_int_get_line)) - { - *width = img->width; - *height = img->height; - } - munmap(ptr,size); - close(fd); - return (img); -} - -void *mlx_xpm_to_image(t_xvar *xvar,char **xpm_data,int *width,int *height) -{ - t_img *img; - - if (img = mlx_int_parse_xpm(xvar,xpm_data,0,mlx_int_static_line)) - { - *width = img->width; - *height = img->height; - } - return (img); -} diff --git a/mlx/rgb2c.pl b/mlx/rgb2c.pl deleted file mode 100755 index 9ef39a0..0000000 --- a/mlx/rgb2c.pl +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/perl -# -## rgb2c.pl for MiniLibX in /home/boulon/work/c/raytraceur/minilibx -## -## Made by Olivier Crouzet -## Login -## -## Started on Tue Oct 5 16:33:46 2004 Olivier Crouzet -## Last update Tue Oct 5 16:36:11 2004 Olivier Crouzet -## - - -# -# Generate a .c file with encoded colors, from the XFree86 rgb.txt file. -# - -open(RGB, "/usr/X11/lib/X11/rgb.txt"); - - -printf("/*\n** This is a generated file with rgb2c.pl and rgb.txt from\n"); -printf("** the XFree86 distribution.\n*/\n\n"); -printf("struct s_col_name mlx_col_name[] =\n{\n"); - -while () -{ - @tab = split; - if ($tab[0] ne "!") - { - $color = $tab[3]; - if ("$tab[4]" ne "") - { - $color = "$tab[3] $tab[4]"; - } - printf(" { \"%s\" , 0x%x },\n", $color, $tab[0]*65536+$tab[1]*256+$tab[2]); - } -} - -printf(" { 0, 0 }\n};\n"); diff --git a/mlx/test/Makefile.mk b/mlx/test/Makefile.mk deleted file mode 100644 index 256235b..0000000 --- a/mlx/test/Makefile.mk +++ /dev/null @@ -1,45 +0,0 @@ - -INC=%%%% - -INCLIB=$(INC)/../lib - -UNAME := $(shell uname) - -CFLAGS= -I$(INC) -O3 -I.. -g - -NAME= mlx-test -SRC = main.c -OBJ = $(SRC:%.c=%.o) - -LFLAGS = -L.. -lmlx -L$(INCLIB) -lXext -lX11 -lm - -ifeq ($(UNAME), Darwin) - # mac - CC = clang -else ifeq ($(UNAME), FreeBSD) - # FreeBSD - CC = clang -else - #Linux and others... - CC = gcc - LFLAGS += -lbsd -endif - -all: $(NAME) - -$(NAME): $(OBJ) - $(CC) -o $(NAME) $(OBJ) $(LFLAGS) - -show: - @printf "UNAME : $(UNAME)\n" - @printf "NAME : $(NAME)\n" - @printf "CC : $(CC)\n" - @printf "CFLAGS : $(CFLAGS)\n" - @printf "LFLAGS : $(LFLAGS)\n" - @printf "SRC :\n $(SRC)\n" - @printf "OBJ :\n $(OBJ)\n" - -clean: - rm -f $(NAME) $(OBJ) *~ core *.core - -re: clean all diff --git a/mlx/test/main.c b/mlx/test/main.c deleted file mode 100644 index 578eaae..0000000 --- a/mlx/test/main.c +++ /dev/null @@ -1,287 +0,0 @@ - -#include "mlx.h" -#include "mlx_int.h" - -#define WIN1_SX 242 -#define WIN1_SY 242 -#define IM1_SX 42 -#define IM1_SY 42 -#define IM3_SX 242 -#define IM3_SY 242 - -void *mlx; -void *win1; -void *win2; -void *win3; -void *im1; -void *im2; -void *im3; -void *im4; -int bpp1; -int bpp2; -int bpp3; -int bpp4; -int sl1; -int sl2; -int sl3; -int sl4; -int endian1; -int endian2; -int endian3; -int endian4; -char *data1; -char *data2; -char *data3; -char *data4; -int xpm1_x; -int xpm1_y; - -int local_endian; - -int color_map_1(void *win,int w,int h); -int color_map_2(unsigned char *data,int bpp,int sl,int w,int h,int endian, int type); - -int expose_win1(void *p) -{ - mlx_put_image_to_window(mlx,win1,im3,0,0); -} - -int expose_win2(void *p) -{ - mlx_put_image_to_window(mlx,win2,im4,0,0); - mlx_put_image_to_window(mlx,win2,im2,0,0); -} - -int key_win1(int key,void *p) -{ - printf("Key in Win1 : %d\n",key); - if (key==0xFF1B) - exit(0); -} - -int key_win2(int key,void *p) -{ - printf("Key in Win2 : %d\n",key); - if (key==0xFF1B) - exit(0); -} - -int key_win3(int key,void *p) -{ - printf("Key in Win3 : %d\n",key); - if (key==0xFF1B) - mlx_destroy_window(mlx,win3); -} - -int mouse_win1(int button,int x,int y, void *p) -{ - printf("Mouse in Win1, button %d at %dx%d.\n",button,x,y); -} - -int mouse_win2(int button,int x,int y, void *p) -{ - printf("Mouse in Win2, button %d at %dx%d.\n",button,x,y); -} - -int mouse_win3(int x,int y, void *p) -{ - printf("Mouse moving in Win3, at %dx%d.\n",x,y); -} - - -int main() -{ - int a; - - printf("MinilibX Test Program\n"); - a = 0x11223344; - if (((unsigned char *)&a)[0] == 0x11) - local_endian = 1; - else - local_endian = 0; - printf(" => Local Endian : %d\n",local_endian); - - printf(" => Connection ..."); - if (!(mlx = mlx_init())) - { - printf(" !! KO !!\n"); - exit(1); - } - printf("OK (use_xshm %d pshm_format %d)\n",((t_xvar *)mlx)->use_xshm,((t_xvar *)mlx)->pshm_format); - - printf(" => Window1 %dx%d \"Title 1\" ...",WIN1_SX,WIN1_SY); - if (!(win1 = mlx_new_window(mlx,WIN1_SX,WIN1_SY,"Title1"))) - { - printf(" !! KO !!\n"); - exit(1); - } - printf("OK\n"); - - printf(" => Colormap sans event ..."); - color_map_1(win1,WIN1_SX,WIN1_SY); - printf("OK\n"); - sleep(2); - - printf(" => Clear Window ..."); - mlx_clear_window(mlx,win1); - printf("OK\n"); - sleep(2); - - printf(" => Image1 ZPixmap %dx%d ...",IM1_SX,IM1_SY); - if (!(im1 = mlx_new_image(mlx,IM1_SX,IM1_SY))) - { - printf(" !! KO !!\n"); - exit(1); - } - data1 = mlx_get_data_addr(im1,&bpp1,&sl1,&endian1); - printf("OK (bpp1: %d, sizeline1: %d endian: %d type: %d)\n",bpp1,sl1,endian1, - ((t_img *)im1)->type); - - printf(" => Fill Image1 ..."); - color_map_2(data1,bpp1,sl1,IM1_SX,IM1_SY,endian1, 1); - printf("OK (pixmap : %d)\n",(int)((t_img *)im1)->pix); - - printf(" => Put Image1 ..."); - mlx_put_image_to_window(mlx,win1,im1,20,20); - printf("OK\n"); - sleep(2); - - printf(" => Destroy Image1 ... "); - mlx_destroy_image(mlx, im1); - printf("OK\n"); - sleep(2); - - printf(" => Image3 ZPixmap %dx%d ...",IM3_SX,IM3_SY); - if (!(im3 = mlx_new_image(mlx,IM3_SX,IM3_SY))) - { - printf(" !! KO !!\n"); - exit(1); - } - data3 = mlx_get_data_addr(im3,&bpp3,&sl3,&endian3); - printf("OK (bpp3 %d, sizeline3 %d endian3 %d type %d)\n",bpp3,sl3,endian3, - ((t_img *)im3)->type); - - printf(" => Fill Image3 ..."); - color_map_2(data3,bpp3,sl3,IM3_SX,IM3_SY,endian3, 1); - printf("OK (pixmap : %d)\n",(int)((t_img *)im3)->pix); - - printf(" => Put Image3 ..."); - mlx_put_image_to_window(mlx,win1,im3,20,20); - printf("OK\n"); - sleep(2); - - printf(" => String ..."); - mlx_string_put(mlx,win1,5,WIN1_SY/2,0xFF99FF,"String output"); - mlx_string_put(mlx,win1,15,WIN1_SY/2+20,0x00FFFF,"MinilibX test"); - printf("OK\n"); - sleep(2); - - printf(" => Xpm from file ..."); - if (!(im2 = mlx_xpm_file_to_image(mlx,"open.xpm",&xpm1_x,&xpm1_y))) - { - printf(" !! KO !!\n"); - exit(1); - } - data2 = mlx_get_data_addr(im2,&bpp2,&sl2,&endian2); - printf("OK (xpm %dx%d)(img bpp2: %d, sizeline2: %d endian: %d type: %d)\n", - xpm1_x,xpm1_y,bpp2,sl2,endian2,((t_img *)im2)->type); - sleep(2); - - printf(" => Put xpm ..."); - mlx_put_image_to_window(mlx,win1,im2,0,0); - mlx_put_image_to_window(mlx,win1,im2,100,100); - printf("OK\n"); - sleep(2); - - printf(" => 2nd window,"); - win2 = mlx_new_window(mlx,WIN1_SX,WIN1_SY,"Title2"); - if (!(im4 = mlx_new_image(mlx,IM3_SX, IM3_SY))) - { - printf(" !! KO !!\n"); - exit(1); - } - data4 = mlx_get_data_addr(im4,&bpp4,&sl4,&endian4); - color_map_2(data4,bpp4,sl4,IM3_SX,IM3_SY,endian4, 2); - - printf(" 3rd window, Installing hooks ..."); - win3 = mlx_new_window(mlx,WIN1_SX,WIN1_SY,"Title3"); - mlx_expose_hook(win1,expose_win1,0); - mlx_mouse_hook(win1,mouse_win1,0); - mlx_key_hook(win1,key_win1,0); - mlx_expose_hook(win2,expose_win2,0); - mlx_mouse_hook(win2,mouse_win2,0); - mlx_key_hook(win2,key_win2,0); - mlx_key_hook(win3,key_win3,0); - - mlx_hook(win3, MotionNotify, PointerMotionMask, mouse_win3, 0); - - printf("OK\nNow in Loop. Just play. Esc in 3 to destroy, 1&2 to quit.\n"); - - mlx_loop(mlx); -} - - -int color_map_1(void *win,int w,int h) -{ - int x; - int y; - int color; - - x = w; - while (x--) - { - y = h; - while (y--) - { - color = (x*255)/w+((((w-x)*255)/w)<<16)+(((y*255)/h)<<8); - mlx_pixel_put(mlx,win,x,y,color); - } - } -} - - -int color_map_2(unsigned char *data,int bpp,int sl,int w,int h,int endian, int type) -{ - int x; - int y; - int opp; - int dec; - int color; - int color2; - unsigned char *ptr; - - opp = bpp/8; - printf("(opp : %d) ",opp); - y = h; - while (y--) - { - ptr = data+y*sl; - x = w; - while (x--) - { - if (type==2) - color = (y*255)/w+((((w-x)*255)/w)<<16) - +(((y*255)/h)<<8); - else - color = (x*255)/w+((((w-x)*255)/w)<<16)+(((y*255)/h)<<8); - color2 = mlx_get_color_value(mlx,color); - dec = opp; - while (dec--) - if (endian==local_endian) - { - if (endian) - *(ptr+x*opp+dec) = ((unsigned char *)(&color2))[4-opp+dec]; - else - *(ptr+x*opp+dec) = ((unsigned char *)(&color2))[dec]; - } - else - { - if (endian) - *(ptr+x*opp+dec) = ((unsigned char *)(&color2))[opp-1-dec]; - else - *(ptr+x*opp+dec) = ((unsigned char *)(&color2))[3-dec]; - } - } - } - -} diff --git a/mlx/test/new_win.c b/mlx/test/new_win.c deleted file mode 100644 index 62bed4b..0000000 --- a/mlx/test/new_win.c +++ /dev/null @@ -1,31 +0,0 @@ - - - -#include "mlx.h" - - -void *mlx; -void *win1; -void *win2; - - - -int gere_mouse(int x,int y,int button,void*toto) -{ - printf("Mouse event - new win\n"); - mlx_destroy_window(mlx,win1); - win1 = mlx_new_window(mlx,random()%500,random()%500,"new win"); - mlx_mouse_hook(win1,gere_mouse,0); -} - - -int main() -{ - srandom(time(0)); - mlx = mlx_init(); - win1 = mlx_new_window(mlx,300,300,"win1"); - win2 = mlx_new_window(mlx,600,600,"win2"); - mlx_mouse_hook(win1,gere_mouse,0); - mlx_mouse_hook(win2,gere_mouse,0); - mlx_loop(mlx); -} diff --git a/mlx/test/open.xpm b/mlx/test/open.xpm deleted file mode 100644 index 87be371..0000000 --- a/mlx/test/open.xpm +++ /dev/null @@ -1,1439 +0,0 @@ -/* XPM */ -static char * open30_2_xpm[] = { -"64 64 1372 2", -" c None", -". c #08090D", -"+ c #1A1E23", -"@ c #1F2124", -"# c #060809", -"$ c #1A1E21", -"% c #4F606C", -"& c #3D4145", -"* c #868D93", -"= c #454E56", -"- c #627481", -"; c #667C8A", -"> c #2D3031", -", c #D7E1E7", -"' c #4D5157", -") c #8997A5", -"! c #282E31", -"~ c #333B41", -"{ c #A5C6DB", -"] c #718C9B", -"^ c #000000", -"/ c #181B1F", -"( c #262828", -"_ c #D2DEE7", -": c #B8C5D0", -"< c #151719", -"[ c #08090B", -"} c #272B30", -"| c #2D3037", -"1 c #26282C", -"2 c #1A1D1F", -"3 c #B1CADB", -"4 c #56646E", -"5 c #080809", -"6 c #080A0C", -"7 c #1E2126", -"8 c #98B7C9", -"9 c #A2CAE2", -"0 c #7FA1B5", -"a c #06080A", -"b c #252729", -"c c #A7ADB2", -"d c #272B2E", -"e c #1E2023", -"f c #C8D8E5", -"g c #C9DDED", -"h c #8996A3", -"i c #6B7782", -"j c #C7DFF0", -"k c #CCE0F0", -"l c #AFC1CF", -"m c #47535B", -"n c #B0D3E8", -"o c #7E99A9", -"p c #738493", -"q c #97B4C7", -"r c #53606A", -"s c #6E8996", -"t c #A1CBE3", -"u c #9CC6DE", -"v c #90B5CB", -"w c #171D22", -"x c #1E2629", -"y c #020202", -"z c #ABB3BA", -"A c #BBC4C8", -"B c #222323", -"C c #141617", -"D c #5D6164", -"E c #ACB5BC", -"F c #676D74", -"G c #BDD4E5", -"H c #B3D1E7", -"I c #B0D1E7", -"J c #728A99", -"K c #94AEBF", -"L c #B1D1E7", -"M c #505C64", -"N c #7B98A9", -"O c #A1CBE0", -"P c #99C3D9", -"Q c #475863", -"R c #A0C9DE", -"S c #9CC6DA", -"T c #9ECAE1", -"U c #9CC5DD", -"V c #9AC4DC", -"W c #263137", -"X c #3C4A55", -"Y c #658190", -"Z c #66686B", -"` c #7D8085", -" . c #363839", -".. c #797E81", -"+. c #D2DBE1", -"@. c #DDE9F4", -"#. c #CADEEF", -"$. c #778593", -"%. c #AED0E5", -"&. c #9EC9DE", -"*. c #9EC8DF", -"=. c #9BC1D8", -"-. c #9EC8DE", -";. c #6B8596", -">. c #9BC5DC", -",. c #9BC6DF", -"'. c #9CC5DC", -"). c #688595", -"!. c #6B8698", -"~. c #9CC4DC", -"{. c #9BC4DC", -"]. c #9DC5DD", -"^. c #647D8C", -"/. c #485864", -"(. c #161A1D", -"_. c #36444C", -":. c #95BDD5", -"<. c #566E7E", -"[. c #A4AAAD", -"}. c #E9F2F7", -"|. c #DEEAF6", -"1. c #B5D4E9", -"2. c #A9CFE3", -"3. c #90B3C9", -"4. c #9FCAE1", -"5. c #9BC4DD", -"6. c #7490A2", -"7. c #99C2DB", -"8. c #81A5BA", -"9. c #9CC5DE", -"0. c #98C1DA", -"a. c #5F7889", -"b. c #96BFD8", -"c. c #44545F", -"d. c #565A5E", -"e. c #DFE6EC", -"f. c #E6EEF7", -"g. c #D6E4F2", -"h. c #BFD6E9", -"i. c #A9CCE3", -"j. c #9FC8DD", -"k. c #9DC6DD", -"l. c #9CC4DD", -"m. c #7D9FB0", -"n. c #98C0D6", -"o. c #9AC5DD", -"p. c #97BFD8", -"q. c #9BC5DF", -"r. c #2D3840", -"s. c #626567", -"t. c #E7ECF5", -"u. c #E1EAF5", -"v. c #CEE3F3", -"w. c #B7D6EA", -"x. c #A4CBE0", -"y. c #8AAFC5", -"z. c #647F90", -"A. c #648092", -"B. c #89B0C7", -"C. c #9CC6DF", -"D. c #5D7486", -"E. c #7B9BAF", -"F. c #84A8BF", -"G. c #9BC5DD", -"H. c #96BED5", -"I. c #4B5D69", -"J. c #9BC5DE", -"K. c #536B77", -"L. c #2E3B41", -"M. c #1B2124", -"N. c #3F4F58", -"O. c #4D5152", -"P. c #E7EEF3", -"Q. c #E2EAF5", -"R. c #CEE2F2", -"S. c #BAD5E9", -"T. c #9DC2D7", -"U. c #5C7281", -"V. c #232A31", -"W. c #08090A", -"X. c #121418", -"Y. c #131619", -"Z. c #131719", -"`. c #87ACC3", -" + c #7B9BAE", -".+ c #87ADC3", -"++ c #8FB5CB", -"@+ c #678295", -"#+ c #96C0D8", -"$+ c #607787", -"%+ c #6B8595", -"&+ c #96C1DB", -"*+ c #6A8595", -"=+ c #35424A", -"-+ c #7090A1", -";+ c #15191C", -">+ c #2D3033", -",+ c #DDE5EB", -"'+ c #D2E3F1", -")+ c #BAD7EB", -"!+ c #A9CFE5", -"~+ c #272F35", -"{+ c #1C2227", -"]+ c #4F697B", -"^+ c #6B8FA9", -"/+ c #759CB6", -"(+ c #7BA0BB", -"_+ c #80A5BC", -":+ c #88B0C8", -"<+ c #96C3DB", -"[+ c #8FB6CD", -"}+ c #80A1B3", -"|+ c #556876", -"1+ c #96BFD7", -"2+ c #566B77", -"3+ c #93B8CD", -"4+ c #637A8D", -"5+ c #9DC6DE", -"6+ c #8FB4CA", -"7+ c #55697A", -"8+ c #6F8F9F", -"9+ c #91BDD5", -"0+ c #283239", -"a+ c #050406", -"b+ c #767B80", -"c+ c #BDC6CE", -"d+ c #D4E5F3", -"e+ c #C1D7EA", -"f+ c #A7CDE4", -"g+ c #9FC9DE", -"h+ c #668596", -"i+ c #6D90AA", -"j+ c #5C7994", -"k+ c #60849F", -"l+ c #6286A1", -"m+ c #688CA8", -"n+ c #7298B2", -"o+ c #82A8C2", -"p+ c #8FBAD5", -"q+ c #96C2DB", -"r+ c #89ADC4", -"s+ c #96BED6", -"t+ c #99C2DA", -"u+ c #6C899A", -"v+ c #92BBD2", -"w+ c #9AC4DD", -"x+ c #5B717D", -"y+ c #9EC6DE", -"z+ c #8BB1C9", -"A+ c #718EA0", -"B+ c #94C3DB", -"C+ c #536B78", -"D+ c #3E505F", -"E+ c #4E6373", -"F+ c #2C333C", -"G+ c #070708", -"H+ c #040404", -"I+ c #1A1C1E", -"J+ c #202326", -"K+ c #050606", -"L+ c #23292E", -"M+ c #A1C0D4", -"N+ c #9FC9DD", -"O+ c #97C2DB", -"P+ c #80A8C1", -"Q+ c #668AA6", -"R+ c #4B5D72", -"S+ c #4C647A", -"T+ c #5F80A0", -"U+ c #60859E", -"V+ c #678AA6", -"W+ c #739BB5", -"X+ c #85AEC7", -"Y+ c #92BDD7", -"Z+ c #96BFD5", -"`+ c #627B8A", -" @ c #89B1C9", -".@ c #2B353C", -"+@ c #7597B2", -"@@ c #779CB8", -"#@ c #52697C", -"$@ c #1D2328", -"%@ c #445663", -"&@ c #5E7A8D", -"*@ c #252F37", -"=@ c #090909", -"-@ c #859BB2", -";@ c #859DB8", -">@ c #6E8396", -",@ c #252C33", -"'@ c #9CC4D7", -")@ c #92C0D9", -"!@ c #79A0BA", -"~@ c #6487A3", -"{@ c #566979", -"]@ c #8CB0C2", -"^@ c #51697C", -"/@ c #60849D", -"(@ c #6D8EAC", -"_@ c #7BA0BC", -":@ c #8AB4CE", -"<@ c #95C2DB", -"[@ c #9AC5DC", -"}@ c #95C1DA", -"|@ c #607B8C", -"1@ c #597488", -"2@ c #7EA6BF", -"3@ c #597587", -"4@ c #455664", -"5@ c #668598", -"6@ c #82A9C4", -"7@ c #617F92", -"8@ c #1A2328", -"9@ c #2B3137", -"0@ c #728FAC", -"a@ c #51657B", -"b@ c #6B8AA8", -"c@ c #8EAEC7", -"d@ c #A8C8E2", -"e@ c #92BDD6", -"f@ c #769DBA", -"g@ c #526E87", -"h@ c #7490A0", -"i@ c #A6CDE4", -"j@ c #97BFD4", -"k@ c #55697D", -"l@ c #6286A0", -"m@ c #7399B3", -"n@ c #84ACC5", -"o@ c #92BFD9", -"p@ c #99C4DC", -"q@ c #94C0DA", -"r@ c #4F6575", -"s@ c #7DA5BF", -"t@ c #7FA2BC", -"u@ c #8FB6CE", -"v@ c #95C3DB", -"w@ c #8EB8D2", -"x@ c #6A879D", -"y@ c #111318", -"z@ c #252A30", -"A@ c #81868C", -"B@ c #A5ABAD", -"C@ c #70767C", -"D@ c #38434F", -"E@ c #637F9B", -"F@ c #516980", -"G@ c #799AB5", -"H@ c #A5C3D9", -"I@ c #93BDD6", -"J@ c #779EBA", -"K@ c #445A6B", -"L@ c #93B5C9", -"M@ c #B6D3E8", -"N@ c #AECFE4", -"O@ c #95BDD2", -"P@ c #52687A", -"Q@ c #6486A3", -"R@ c #7092B0", -"S@ c #90BCD6", -"T@ c #97C4DC", -"U@ c #A0C9E0", -"V@ c #99C5DD", -"W@ c #86AEC6", -"X@ c #8FBAD4", -"Y@ c #91BDD6", -"Z@ c #7094AC", -"`@ c #2A353E", -" # c #0B0E10", -".# c #888D90", -"+# c #787D82", -"@# c #465360", -"## c #56697F", -"$# c #A6CADD", -"%# c #5A7382", -"&# c #6C8CAA", -"*# c #A5BED3", -"=# c #A7CAE0", -"-# c #94C1DA", -";# c #7EA4BF", -"># c #415160", -",# c #9DC3D5", -"'# c #B3CFE1", -")# c #AAC3D4", -"!# c #A8CDE4", -"~# c #89ACBE", -"{# c #567088", -"]# c #6C91AC", -"^# c #81A7C2", -"/# c #96C4DC", -"(# c #85A9BD", -"_# c #708C9B", -":# c #5A6E7B", -"<# c #6C8695", -"[# c #97C3DB", -"}# c #8BB5CE", -"|# c #425461", -"1# c #63819E", -"2# c #415465", -"3# c #0B0D0E", -"4# c #607387", -"5# c #687D8C", -"6# c #B8D6E9", -"7# c #7893A2", -"8# c #576F85", -"9# c #A7BACF", -"0# c #B0CEE5", -"a# c #98C4DC", -"b# c #88B1CA", -"c# c #36444E", -"d# c #8FA0AD", -"e# c #73818D", -"f# c #596D81", -"g# c #B4D0E4", -"h# c #A3CDE2", -"i# c #658296", -"j# c #6A8DAB", -"k# c #7BA5C0", -"l# c #94BAD2", -"m# c #6D899B", -"n# c #99C3DC", -"o# c #8EB9D2", -"p# c #7AA0BA", -"q# c #6C8FAB", -"r# c #6484A1", -"s# c #1F252C", -"t# c #121619", -"u# c #7E96B0", -"v# c #7A8A96", -"w# c #BCD7EA", -"x# c #A0C5D9", -"y# c #3C4B57", -"z# c #A9BACD", -"A# c #BCD5E8", -"B# c #84A6BA", -"C# c #8EA1AE", -"D# c #CFD1D4", -"E# c #ECF6FA", -"F# c #ABB7C2", -"G# c #556F84", -"H# c #57626A", -"I# c #5C7078", -"J# c #6C8AA7", -"K# c #80A6C0", -"L# c #91B8D0", -"M# c #94BFD8", -"N# c #87B0CA", -"O# c #7CA2BB", -"P# c #7097AF", -"Q# c #495E6F", -"R# c #0C0E11", -"S# c #3A3F43", -"T# c #8AA3BB", -"U# c #778592", -"V# c #C0D8EB", -"W# c #B3D5E9", -"X# c #404A53", -"Y# c #B2C2D3", -"Z# c #96A1AC", -"`# c #9DB2C3", -" $ c #AEBECE", -".$ c #EDEFF3", -"+$ c #F7FAFC", -"@$ c #B6BFC7", -"#$ c #556E85", -"$$ c #121314", -"%$ c #2B2E2F", -"&$ c #555A5E", -"*$ c #3B4C5B", -"=$ c #6F8EA4", -"-$ c #92BED8", -";$ c #9DC7DF", -">$ c #87ACC1", -",$ c #546A78", -"'$ c #516874", -")$ c #4E6570", -"!$ c #4D6271", -"~$ c #4C6271", -"{$ c #4E677A", -"]$ c #38454E", -"^$ c #6C7278", -"/$ c #86A1B6", -"($ c #5C656C", -"_$ c #A4B0BA", -":$ c #555D64", -"<$ c #657178", -"[$ c #A6B0B5", -"}$ c #939CA1", -"|$ c #D4E4F1", -"1$ c #A0BACE", -"2$ c #B9C7D7", -"3$ c #F6F7F9", -"4$ c #C6CED1", -"5$ c #506A7C", -"6$ c #060607", -"7$ c #676A6B", -"8$ c #91999F", -"9$ c #7CA3BE", -"0$ c #96BCD4", -"a$ c #5B717E", -"b$ c #4B5F6C", -"c$ c #455864", -"d$ c #5B717F", -"e$ c #81A5B9", -"f$ c #98C4DD", -"g$ c #93BFD8", -"h$ c #87B1CA", -"i$ c #7BA1BC", -"j$ c #5A7489", -"k$ c #222A33", -"l$ c #838A92", -"m$ c #9DADBC", -"n$ c #ECF0F5", -"o$ c #F1F9FB", -"p$ c #818A8D", -"q$ c #4A5155", -"r$ c #6A6F72", -"s$ c #7E898F", -"t$ c #E6F1F7", -"u$ c #CADCED", -"v$ c #A0B7CC", -"w$ c #C6D1DF", -"x$ c #AFB3B4", -"y$ c #5F707D", -"z$ c #CBCFD1", -"A$ c #F4F5F6", -"B$ c #66737F", -"C$ c #87B2CB", -"D$ c #90B7CD", -"E$ c #596E7B", -"F$ c #586F7E", -"G$ c #8BB0C8", -"H$ c #91BED6", -"I$ c #83ADC7", -"J$ c #6D8EA7", -"K$ c #3F5161", -"L$ c #2D3A45", -"M$ c #1F2020", -"N$ c #BDC5CC", -"O$ c #E0EDF5", -"P$ c #BBCAD8", -"Q$ c #E1E4E7", -"R$ c #5E6368", -"S$ c #5B5F62", -"T$ c #D9E7F3", -"U$ c #A4C3D6", -"V$ c #89A3B3", -"W$ c #7B91A1", -"X$ c #627990", -"Y$ c #42505A", -"Z$ c #CACCCE", -"`$ c #F9F9F9", -" % c #FDFDFD", -".% c #BCBEC0", -"+% c #5C7689", -"@% c #8DB9D3", -"#% c #8FB5CC", -"$% c #536471", -"%% c #98C1D9", -"&% c #91BED7", -"*% c #81AAC5", -"=% c #597386", -"-% c #41535F", -";% c #6486A2", -">% c #4D667D", -",% c #070809", -"'% c #44484E", -")% c #BEC8D0", -"!% c #8096A6", -"~% c #516473", -"{% c #A9ACAF", -"]% c #8B8F91", -"^% c #A8B3BD", -"/% c #C5DAEB", -"(% c #9FC8E1", -"_% c #8FBCD6", -":% c #81A8C2", -"<% c #6C90AC", -"[% c #56728C", -"}% c #585B5F", -"|% c #CBCDCD", -"1% c #C1C3C6", -"2% c #4F565F", -"3% c #82ABC3", -"4% c #93BCD3", -"5% c #95BED7", -"6% c #8EB9D3", -"7% c #5B788B", -"8% c #627E91", -"9% c #7FA7C1", -"0% c #6C91AB", -"a% c #546F87", -"b% c #6F7376", -"c% c #D5E2EF", -"d% c #A9C4D8", -"e% c #81A1BA", -"f% c #333940", -"g% c #5F6B76", -"h% c #C0D5E8", -"i% c #AACCE2", -"j% c #8EB8D3", -"k% c #7FA5BF", -"l% c #7095B0", -"m% c #4E697E", -"n% c #07090A", -"o% c #0D0F10", -"p% c #7193A6", -"q% c #96C3DC", -"r% c #8EBCD7", -"s% c #91BDD7", -"t% c #8FBBD6", -"u% c #7699AD", -"v% c #4D626F", -"w% c #252D33", -"x% c #101215", -"y% c #0C0D0E", -"z% c #0A0C0E", -"A% c #06090A", -"B% c #7F8488", -"C% c #D7E3F1", -"D% c #B6D0E4", -"E% c #A3C2D7", -"F% c #596872", -"G% c #A9BED0", -"H% c #B4D0E5", -"I% c #9EC8DC", -"J% c #8FB9D4", -"K% c #85ADC7", -"L% c #7FA4BE", -"M% c #4B606F", -"N% c #4E6372", -"O% c #89B6D0", -"P% c #92C1DA", -"Q% c #9DC7DD", -"R% c #95C0DA", -"S% c #94BED8", -"T% c #8BB8D1", -"U% c #7AA0B9", -"V% c #4E667A", -"W% c #344151", -"X% c #0C0D0F", -"Y% c #8A8F92", -"Z% c #D4E6F5", -"`% c #BCD5E9", -" & c #8599A5", -".& c #939DA6", -"+& c #C4DAEB", -"@& c #89A6B9", -"#& c #7D9FB5", -"$& c #98C3DC", -"%& c #95C0D9", -"&& c #7CA2B9", -"*& c #7697AE", -"=& c #698498", -"-& c #7394A8", -";& c #9EC7DF", -">& c #8DB1C4", -",& c #6B8594", -"'& c #50636C", -")& c #50626C", -"!& c #7F9FB1", -"~& c #93B8D0", -"{& c #627A88", -"]& c #90B6CC", -"^& c #93BDD7", -"/& c #87AFC9", -"(& c #7291A7", -"_& c #384651", -":& c #121618", -"<& c #12171B", -"[& c #4F6986", -"}& c #597998", -"|& c #324052", -"1& c #969CA1", -"2& c #D6E6F5", -"3& c #C6DCEE", -"4& c #505A64", -"5& c #82929F", -"6& c #99ABBB", -"7& c #A1B9CA", -"8& c #87A0B0", -"9& c #718EA1", -"0& c #8DB2C9", -"a& c #8BAEC4", -"b& c #586D7D", -"c& c #97C0D9", -"d& c #8DB3C9", -"e& c #95B8CD", -"f& c #9DC0D6", -"g& c #6F8B9C", -"h& c #354249", -"i& c #464E54", -"j& c #8A98A5", -"k& c #AABAC7", -"l& c #86939E", -"m& c #41494F", -"n& c #4A5861", -"o& c #97C1DA", -"p& c #5E7888", -"q& c #5C7482", -"r& c #88ACC2", -"s& c #91BFD7", -"t& c #799CB5", -"u& c #47596A", -"v& c #0D0F12", -"w& c #1A2127", -"x& c #56778D", -"y& c #688BA9", -"z& c #5D7F9E", -"A& c #547391", -"B& c #0E1013", -"C& c #9DA6AB", -"D& c #C8DCED", -"E& c #7A8996", -"F& c #B5CEE0", -"G& c #BCDBEC", -"H& c #B9D5EA", -"I& c #8BA2B2", -"J& c #6C8A9D", -"K& c #97BFD7", -"L& c #3E4E59", -"M& c #92B5CB", -"N& c #535F68", -"O& c #454F56", -"P& c #6F7C87", -"Q& c #ABC0D1", -"R& c #C7DCEE", -"S& c #C5DBED", -"T& c #C2D7EA", -"U& c #BFD8EA", -"V& c #BCD7EB", -"W& c #62717B", -"X& c #5B6F7B", -"Y& c #95C3DC", -"Z& c #8BB2C9", -"`& c #485761", -" * c #42525F", -".* c #6686A1", -"+* c #587896", -"@* c #1B2129", -"#* c #5C7A94", -"$* c #7DA2BD", -"%* c #84AEC7", -"&* c #749BB5", -"** c #5C7E9C", -"=* c #27343F", -"-* c #A4A9B2", -";* c #D9E7F4", -">* c #C8DBEC", -",* c #B1C8DA", -"'* c #5D6C76", -")* c #A8C5D8", -"!* c #A6BDD0", -"~* c #B9D6EA", -"{* c #B9D4E9", -"]* c #8198A8", -"^* c #8AADC3", -"/* c #8CB1CA", -"(* c #96C2D8", -"_* c #A3C7DF", -":* c #ADCDE3", -"<* c #ABD0E4", -"[* c #ADCFE3", -"}* c #AACEE4", -"|* c #A4CDE3", -"1* c #A1CBE1", -"2* c #A3CCE3", -"3* c #A2C9DF", -"4* c #41515A", -"5* c #81A2B5", -"6* c #94C0D7", -"7* c #5E7789", -"8* c #526777", -"9* c #516777", -"0* c #6B8CA5", -"a* c #759CBA", -"b* c #658AA5", -"c* c #587798", -"d* c #1B242B", -"e* c #0E1110", -"f* c #101214", -"g* c #202931", -"h* c #59758E", -"i* c #799FBB", -"j* c #84B1CA", -"k* c #86ACC6", -"l* c #354758", -"m* c #A0A6AE", -"n* c #DAE6F2", -"o* c #C4DCEE", -"p* c #B4D2E8", -"q* c #3E4A53", -"r* c #698091", -"s* c #5D7581", -"t* c #A3CAE0", -"u* c #A6CFE5", -"v* c #A5CCE5", -"w* c #718A9C", -"x* c #98C3DB", -"y* c #83ABC7", -"z* c #2E3B46", -"A* c #33414A", -"B* c #678398", -"C* c #8AB3CE", -"D* c #93BED7", -"E* c #97C4DB", -"F* c #42525E", -"G* c #88ACC0", -"H* c #789EB9", -"I* c #7A9FBB", -"J* c #7EA2BD", -"K* c #779DB5", -"L* c #577081", -"M* c #5B7B9B", -"N* c #1D2229", -"O* c #547390", -"P* c #54728D", -"Q* c #6082A0", -"R* c #688EA9", -"S* c #6689A7", -"T* c #6086A0", -"U* c #6285A1", -"V* c #6B8DAA", -"W* c #718FAB", -"X* c #3E5568", -"Y* c #969DA1", -"Z* c #DBE8F4", -"`* c #95ACBD", -" = c #758B9A", -".= c #A4C9DE", -"+= c #698190", -"@= c #667E8A", -"#= c #7D99AA", -"$= c #7B9BAD", -"%= c #6F8C9A", -"&= c #536976", -"*= c #84ADC6", -"== c #6D92AD", -"-= c #62829E", -";= c #43576A", -">= c #2F3B46", -",= c #5C788A", -"'= c #86AFC8", -")= c #93BED8", -"!= c #93BAD5", -"~= c #93BAD2", -"{= c #92BCD4", -"]= c #7EA2B6", -"^= c #3D4D56", -"/= c #485B67", -"(= c #7596A9", -"_= c #8CBBD4", -":= c #90BCD5", -"<= c #91BFD9", -"[= c #789BAD", -"}= c #465B6A", -"|= c #59789A", -"1= c #5D7F9D", -"2= c #5E839C", -"3= c #59799A", -"4= c #415569", -"5= c #2D3A46", -"6= c #2E3B49", -"7= c #4A647C", -"8= c #587690", -"9= c #39485A", -"0= c #7F8589", -"a= c #D9E8F5", -"b= c #CCDEEE", -"c= c #8597A5", -"d= c #B3D2E3", -"e= c #9BB3C4", -"f= c #B2CEE1", -"g= c #B2D1E7", -"h= c #ABCFE6", -"i= c #94B7CB", -"j= c #495C6A", -"k= c #688498", -"l= c #617B8A", -"m= c #85ADC8", -"n= c #78A0B9", -"o= c #62819B", -"p= c #2E3843", -"q= c #485A6C", -"r= c #67889C", -"s= c #8AB5CF", -"t= c #8EB9D1", -"u= c #6C899B", -"v= c #6E91A7", -"w= c #678399", -"x= c #6888A1", -"y= c #323E48", -"z= c #5B7585", -"A= c #98C5DD", -"B= c #83ACC1", -"C= c #2D373F", -"D= c #4B637C", -"E= c #567694", -"F= c #26313C", -"G= c #15191F", -"H= c #4D647A", -"I= c #252F39", -"J= c #5D6163", -"K= c #DDE9F5", -"L= c #CEDFEE", -"M= c #8898A5", -"N= c #B0CBDC", -"O= c #BFDAEC", -"P= c #BFDBEC", -"Q= c #BBDAEC", -"R= c #BAD7EA", -"S= c #6B808F", -"T= c #7297B0", -"U= c #8CB8D1", -"V= c #95C1D9", -"W= c #91BCD6", -"X= c #86AEC8", -"Y= c #7496B3", -"Z= c #6587A2", -"`= c #384958", -" - c #323F4B", -".- c #546A7C", -"+- c #6C88A1", -"@- c #779AB1", -"#- c #658297", -"$- c #3B4A58", -"%- c #33404B", -"&- c #202830", -"*- c #577287", -"=- c #86B1CC", -"-- c #86ACC0", -";- c #6E8797", -">- c #9CC7DF", -",- c #92BCD5", -"'- c #91BCD5", -")- c #8EB6CE", -"!- c #344453", -"~- c #263039", -"{- c #364452", -"]- c #2B3643", -"^- c #2A2D2E", -"/- c #E1EBF4", -"(- c #D2E4F3", -"_- c #A0B2C3", -":- c #8094A1", -"<- c #BAD8EB", -"[- c #B8D6EA", -"}- c #485A6A", -"|- c #789FB9", -"1- c #90BBD3", -"2- c #94C4DC", -"3- c #88B3CD", -"4- c #7A9EB9", -"5- c #698BA8", -"6- c #4D677C", -"7- c #151A1E", -"8- c #1A2125", -"9- c #171C21", -"0- c #1D2329", -"a- c #1D262E", -"b- c #486073", -"c- c #6A8CAA", -"d- c #7CA2BE", -"e- c #90BDD7", -"f- c #9AC5DE", -"g- c #7493A2", -"h- c #708B99", -"i- c #8CB7D1", -"j- c #7494AB", -"k- c #68889F", -"l- c #6A8FA5", -"m- c #7BA2BC", -"n- c #171D21", -"o- c #1D262F", -"p- c #212B36", -"q- c #09090B", -"r- c #BBC2C9", -"s- c #D4E4F2", -"t- c #C1D9EB", -"u- c #44515A", -"v- c #92B5C9", -"w- c #6B8795", -"x- c #4E687E", -"y- c #7EA6C0", -"z- c #91BED8", -"A- c #93BFD9", -"B- c #8CB5D0", -"C- c #7DA4BE", -"D- c #6F92AE", -"E- c #6687A5", -"F- c #526C85", -"G- c #415669", -"H- c #384655", -"I- c #6589A4", -"J- c #6E92AE", -"K- c #80A8C2", -"L- c #92BCD6", -"M- c #91BFD8", -"N- c #799AAF", -"O- c #6A8796", -"P- c #81AAC3", -"Q- c #577187", -"R- c #1F2930", -"S- c #192027", -"T- c #1B2227", -"U- c #0D1010", -"V- c #0E1012", -"W- c #070709", -"X- c #5C6062", -"Y- c #DCE8F3", -"Z- c #C4DCEF", -"`- c #9BB3C6", -" ; c #3A424F", -".; c #313A44", -"+; c #35424C", -"@; c #374655", -"#; c #6E91AD", -"$; c #87B2CC", -"%; c #799EBA", -"&; c #618298", -"*; c #7095AF", -"=; c #435663", -"-; c #80A7C0", -";; c #95C4DC", -">; c #779CB3", -",; c #526D7E", -"'; c #516A7A", -"); c #526B7B", -"!; c #465764", -"~; c #34414E", -"{; c #5C7E9A", -"]; c #2B3741", -"^; c #4B657F", -"/; c #5C7D9C", -"(; c #557088", -"_; c #0F0F10", -":; c #B9C2CA", -"<; c #CCDFEF", -"[; c #B4CDE1", -"}; c #8DAEC8", -"|; c #6F93AE", -"1; c #678CA6", -"2; c #6E92AF", -"3; c #81A8C1", -"4; c #8FBBD5", -"5; c #8DB9D2", -"6; c #6D8FA2", -"7; c #586F82", -"8; c #394851", -"9; c #86B0C6", -"0; c #85AFC8", -"a; c #6F94AF", -"b; c #698DA8", -"c; c #6889A7", -"d; c #5E7E9F", -"e; c #475D75", -"f; c #2E3C4A", -"g; c #5D7E9D", -"h; c #405465", -"i; c #36393B", -"j; c #D7E5F1", -"k; c #A4C5DC", -"l; c #668496", -"m; c #7595AB", -"n; c #7798AE", -"o; c #97C2DA", -"p; c #789DB3", -"q; c #8BB1C8", -"r; c #93C0D9", -"s; c #8BB5CF", -"t; c #85AFC9", -"u; c #82AAC6", -"v; c #5F7C95", -"w; c #1E252C", -"x; c #54728E", -"y; c #587899", -"z; c #5A7B9B", -"A; c #2D3843", -"B; c #798086", -"C; c #D1E3F1", -"D; c #B7D3E8", -"E; c #7E98AB", -"F; c #181C1F", -"G; c #46525F", -"H; c #80A1B8", -"I; c #99C3DB", -"J; c #85ACC2", -"K; c #21272D", -"L; c #0A0B0D", -"M; c #53718C", -"N; c #577797", -"O; c #1B2229", -"P; c #0D0E0F", -"Q; c #B3BDC4", -"R; c #CADDED", -"S; c #B4D3E7", -"T; c #2B3339", -"U; c #2F3840", -"V; c #7899AC", -"W; c #93C1D9", -"X; c #8FBCD5", -"Y; c #8BB6D1", -"Z; c #8DB8D2", -"`; c #92BFD8", -" > c #678092", -".> c #547089", -"+> c #5C7F9B", -"@> c #1F262E", -"#> c #202223", -"$> c #B1BECB", -"%> c #C3D9EB", -"&> c #7B8D99", -"*> c #708B9A", -"=> c #85ABC1", -"-> c #7FA3BA", -";> c #92BBD3", -">> c #7CA0B4", -",> c #97BDD4", -"'> c #657E8F", -")> c #93BDD4", -"!> c #88ADC7", -"~> c #6F94AE", -"{> c #526A7E", -"]> c #65849B", -"^> c #799DBB", -"/> c #84AFC9", -"(> c #8FB9D2", -"_> c #323C45", -":> c #516C84", -"<> c #658AA4", -"[> c #5B7C9B", -"}> c #2E3A49", -"|> c #2A3038", -"1> c #252D3A", -"2> c #1B1E20", -"3> c #ADBFCF", -"4> c #C0D6E7", -"5> c #B0CDE2", -"6> c #8EB3C9", -"7> c #526975", -"8> c #6B899D", -"9> c #597183", -"0> c #90BAD5", -"a> c #94C2DA", -"b> c #82ABC5", -"c> c #495E6E", -"d> c #82A8C3", -"e> c #81A4BA", -"f> c #7594A5", -"g> c #87ABC3", -"h> c #4D6573", -"i> c #6689A6", -"j> c #526E85", -"k> c #243037", -"l> c #607B96", -"m> c #7699B6", -"n> c #789EB5", -"o> c #303D48", -"p> c #7498B4", -"q> c #7094AF", -"r> c #597792", -"s> c #242F39", -"t> c #1A1D25", -"u> c #374553", -"v> c #4D677D", -"w> c #14191E", -"x> c #040505", -"y> c #171A1D", -"z> c #8A9FAD", -"A> c #BCD9EC", -"B> c #B5D3E7", -"C> c #A2CAE1", -"D> c #9DC7DE", -"E> c #9EC7DD", -"F> c #3B4A57", -"G> c #455867", -"H> c #98C2DB", -"I> c #85B0CC", -"J> c #7496B2", -"K> c #4C606F", -"L> c #6E8EA3", -"M> c #7EA0B6", -"N> c #91BBD3", -"O> c #8DB7D1", -"P> c #90BAD4", -"Q> c #96C1DA", -"R> c #3B4853", -"S> c #688AA5", -"T> c #4C657A", -"U> c #1B2026", -"V> c #2B3C44", -"W> c #5F7A90", -"X> c #587284", -"Y> c #536978", -"Z> c #88B1CC", -"`> c #759AB8", -" , c #617E9A", -"., c #556F85", -"+, c #20272E", -"@, c #323D48", -"#, c #333E4A", -"$, c #060707", -"%, c #4A5159", -"&, c #ACC3D5", -"*, c #ACCFE5", -"=, c #5A6874", -"-, c #AACDE1", -";, c #9CC6DC", -">, c #35414C", -",, c #769AB2", -"', c #80AAC5", -"), c #6F92AB", -"!, c #38464F", -"~, c #7EA4B9", -"{, c #97C3DC", -"], c #7A9FB6", -"^, c #3F505C", -"/, c #6D8DA6", -"(, c #1E282E", -"_, c #080909", -":, c #090A0C", -"<, c #344452", -"[, c #3B4857", -"}, c #7799AE", -"|, c #8DB6D1", -"1, c #66869E", -"2, c #3D4957", -"3, c #536C84", -"4, c #353F4C", -"5, c #111215", -"6, c #65727E", -"7, c #A6BCCD", -"8, c #5D6972", -"9, c #AED0E6", -"0, c #99C5DC", -"a, c #8DB5D0", -"b, c #8DB5CE", -"c, c #90BBD5", -"d, c #84AAC5", -"e, c #8EBBD5", -"f, c #80A7C1", -"g, c #6C8DA2", -"h, c #85AFC6", -"i, c #61839B", -"j, c #374352", -"k, c #576D83", -"l, c #80A6C1", -"m, c #81A4BB", -"n, c #111315", -"o, c #111418", -"p, c #4C6378", -"q, c #33424C", -"r, c #37454D", -"s, c #8DB4CF", -"t, c #7397B3", -"u, c #3A495A", -"v, c #0D0F13", -"w, c #27303A", -"x, c #272E36", -"y, c #0F1012", -"z, c #90A4B2", -"A, c #A8CBE2", -"B, c #91BCD4", -"C, c #80ABC3", -"D, c #567083", -"E, c #67899D", -"F, c #94C2DB", -"G, c #95C1DB", -"H, c #779CB2", -"I, c #60849E", -"J, c #64849F", -"K, c #1A1F22", -"L, c #405061", -"M, c #79A1BD", -"N, c #324051", -"O, c #6183A1", -"P, c #6B8FAD", -"Q, c #6485A2", -"R, c #34444F", -"S, c #060606", -"T, c #2D3339", -"U, c #B2CBDF", -"V, c #94BCD5", -"W, c #7DA2BA", -"X, c #3F5264", -"Y, c #5A7991", -"Z, c #7195B3", -"`, c #7BA5BD", -" ' c #81AAC6", -".' c #88B2CC", -"+' c #8EBBD4", -"@' c #8AB2CC", -"#' c #82ADC7", -"$' c #7092A5", -"%' c #95C2DA", -"&' c #41525F", -"*' c #6387A3", -"=' c #475F72", -"-' c #21282F", -";' c #5B7288", -">' c #0D0F11", -",' c #0B0E11", -"'' c #212C36", -")' c #26323C", -"!' c #161B20", -"~' c #55616D", -"{' c #9BB9D0", -"]' c #799EB6", -"^' c #27313A", -"/' c #1A222B", -"(' c #5D7E99", -"_' c #6587A4", -":' c #6789A6", -"<' c #6B8EAB", -"[' c #628097", -"}' c #6D8B9D", -"|' c #769AAF", -"1' c #6E91A9", -"2' c #6C8EAD", -"3' c #6E91AF", -"4' c #3C4D59", -"5' c #8BB1CB", -"6' c #232D32", -"7' c #13171B", -"8' c #232B32", -"9' c #839AAF", -"0' c #789BB3", -"a' c #283138", -"b' c #0C0E0F", -"c' c #242B33", -"d' c #3D4D5B", -"e' c #435768", -"f' c #4B6176", -"g' c #283137", -"h' c #8DB4CC", -"i' c #41535E", -"j' c #405362", -"k' c #3C4F60", -"l' c #3C4E5B", -"m' c #2B353E", -"n' c #526876", -"o' c #92BAD3", -"p' c #1B1F23", -"q' c #31383F", -"r' c #7F9CB6", -"s' c #21292F", -"t' c #29333F", -"u' c #1F252E", -"v' c #090A0E", -"w' c #4D626E", -"x' c #96BDD3", -"y' c #191D20", -"z' c #13181B", -"A' c #80A4BC", -"B' c #1B2027", -"C' c #5D7182", -"D' c #2C383F", -"E' c #364857", -"F' c #1A2028", -"G' c #333F49", -"H' c #7FA2B5", -"I' c #4A5E6E", -"J' c #232E35", -"K' c #252D35", -"L' c #2F3A41", -"M' c #0A0B0E", -"N' c #14191D", -"O' c #5A717F", -"P' c #212931", -"Q' c #222B34", -"R' c #101216", -"S' c #21272B", -" ", -" ", -" ", -" . ", -" + ", -" @ # $ % ", -" & * = - ; ", -" > , ' ) ! ~ { ] ", -" ^ / ( _ : < [ } | 1 2 3 4 5 6 7 8 9 0 a ", -" b c d e f g h i j k l m n o p q r s t u v w x ", -" y z A B C D E F G H I J K L M N O P Q R S T U U V W X Y ", -" Z ` ...+.@.#.$.%.O &.*.=.-.;.>.,.'.).!.~.~.~.{.].^./.(._.:.<. ", -" b [.}.|.#.1.2.3.4.{.~.~.~.~.5.6.5.~.7.8.{.~.~.~.~.9.0.a.b.].c. ", -" d.e.f.g.h.i.j.k.{.~.~.~.~.l.~.m.% n.~.o.{.{.~.~.~.~.p.V 9.~.q.r. ", -" s.t.u.v.w.x.u y.z.A.B.5.~.~.5.C.D.E.F.~.~.G.~.~.~.G.H.I.J.~.~.J.K.L. M.N. ", -" O.P.Q.R.S.T.U.V.W.X.Y.Z.`.~.~.5. +.+++@+U ~.~.~.~.~.#+$+%+,.~.~.G.&+*+=+-+;+ ", -" >+,+Q.'+)+!+~+{+]+^+/+(+_+:+<+~.[+}+U 9.|+5.~.~.~.~.1+2+3+4+5+~.].6+7+8+9+0+ ", -" a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+5.U ~.U r+s+~.~.~.t+u+v+w+x+y+~.z+A+t+B+C+D+E+ F+G+ ", -" H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+V ~.~.~.~.U ~.~.~.o.9.{.Z+`+9.~.~.~.V @.@+@@@#@ $@%@&@*@ ", -" =@-@;@>@,@'@'.)@!@~@{@]@^@/@l+(@_@:@<@~.~.~.U {.~.~.~.{.~.~.{.[@~.~.~.~.}@|@1@2@3@4@5@6@7@8@ ", -" 9@0@a@b@c@d@-.e@f@g@h@i@j@k@l@V+m@n@o@p@~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.q@r@s@t@u@v@w@x@y@ ", -"z@A@B@C@D@E@X F@G@H@R I@J@K@L@M@N@O@P@Q@R@o+S@T@~.~.~.~.~.~.~.~.~.~.~.~.~.~.9.U@V@W@X@<+V Y@Z@`@ # ", -" .#+#@###$#%#&#*#=#-#;#>#,#'#)#!#~#{#]#^#S@/#~.~.~.~.~.~.~.~.~.~.~.~.~.U (#_#:#<#p@{.[#}#|#1#2# ", -" 3#4#5#6#7#8#9#0#a#b#c#d#e#f#g#h#i#j#k#S@/#~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.l#m#9.{.~.n#o#p#q#r#s# ", -" t#u#v#w#x#y#z#A#B#C#D#E#F#G#H#I#% J#K#S@T@~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.L#0.l.~.~.{.M#N#O#P#Q#R# ", -" S#T#U#V#W#X#Y#Z#`# $.$+$@$#$$$%$&$*$=$-$a#~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.o.o.;$9.G.~.>$,$'$)$!$~${$]$ ", -" ^$/$($_$:$<$[$}$|$1$2$3$4$5$6$7$8$9$:+<+~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.G.0$a$b$c$d$e$f$g$h$i$j$k$ ", -" [ l$m$n$o$p$q$r$s$t$u$v$w$x$y$z$A$B$C$M#p@~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.;$D$E$F$G$H$I$J$K$L$ ", -" M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$`$ %.%+%@%<+{.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.#%$%%%p@&%*%=%-%;%>%,% ", -" '%)%!%~%{%]%^%/%(%_%:%<%[%}%|%1%2%3%-$T@~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.4%5%U p@6%7%8%9%0%a%y ", -" b%c%d%e%f%g%h%i%G.[#j%k%l%m%n%o%p%@%q%{.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.~.~.~.~.~.~.V G.}@r%s%t%u%v%w%M.x%y%z%A% ", -" B%C%D%E%F%G%H%I%V o.<@J%K%L%M%N%O%P%p@~.~.~.~.~.~.~.~.~.U ~.~.U 9.Q%{.~.~.~.~.~.{.%%U {.~.~.{.v@R%S%T%U%V%W% X%$ ", -" Y%Z%`% &.&+&@&#&U ~.{.$&%&&&*&=&-&T@~.~.~.~.~.~.~.~.~.~.~.;&>&,&'&)&!&5+~.~.~.~.{.~&{&]&9.~.p@^&/&(&_&:& <&[&}&|& ", -" 1&2&3&4&5&6&7&8&9&l.~.{.V 0&a&b&c&~.~.~.~.~.~.~.5.d&e&f&g&h&i&j&k&l&m&n&~.~.G.~.~.~.o&p&q&r&s&t&u&v& w&x&y&z&A&B& ", -" C&2&D&E&F&G&G&H&I&J&U ~.~.U K&L&,.~.~.~.~.~.~.~.U M&N&O&P&Q&R&S&T&U&V&W&X&].{.~.~.{./#Y&Z&`& *.*+*@* (.#*$*%*&***=* ", -" -*;*>*,*'*)*!*~*{*]*^*~.5.{.5./*U ~.~.~.~.~.~.{.[#(*_*:*<*[*[*}*|*1*2*3*4*5*U ~.~.6*7*8*9*0*a*b*c*d*e*f*g*h*i*%*j*k*<%l* ", -" m*n*o*p*q*r*s*t*u*v*w*1+~.~.~.~.~.~.~.~.~.~.~.x*y*z*A*B*C*D*E*V U ~.G.~.:.F*G*l.{.R%X+H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X* ", -" Y*Z*D&`* =.=+=@=#=$=%=&={.~.~.~.~.~.~.~.~.~.~.<+*===-=;=>=,='=)=[#p@!=~={=]=^=/=(=a#&%_=:=<=-#[=}=k$|=1=2=3=4=5=6=7=8=9= ", -" 0=a=b=c=d=e=f=g=h=i=j=k=l=5.~.~.~.~.~.~.~.~.~.V -$m=n===o=p=q=r=s=t=:+u=v=w=x=y=z=A=J.V U ~.V [#B=C=D=1=E=F= G=H=I= ", -" J=K=L=M=N=O=P=Q=R=S=T=U=V=5.U ~.~.~.~.~.~.~.~.~.{.x*W=X=Y=Z=`= -.-+-@-#-$-%-&-*-=---;->-9.x*)=,-'-)-c.!-~- {-]- ", -" ^-/-(-_-:-<-<-[-%.}-|-1-T@~.{.~.~.~.~.~.~.~.~.~.~.V 2-^&3-4-5-6-7-8-9-0-a-b-c-d-e-f-g-h-V@i-j-k-l-T=m-7@n- o-p- ", -" q-r-s-t-u-v-!+2*w-x-y-z-V ~.~.~.~.~.~.~.~.~.~.~.~.~.~./#A-B-C-D-E-F-G-H-I-J-K-L-<@M-W=N-O-P-Q-R-<&S-T-U-V- W- ", -" X-Y-Z-`- ;.;+;@;#;$;q+~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~./#v@W=N#%;&;*;=;-;s=-#;;>;,;';);!;~;{;];^;/;(;H+ ", -" _;:;<;[;};|;1;2;3;4;{.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.T@-#5;6;7;8;9;[#V <+0;a;b;c;E-d;e;f;|=g;h; ", -" i;j;V#k;F.l;m;n;o;~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.~.{.p@S@s=p;q;~.~.{.r;s;t;u;~$v;w;x;y;z;A; ", -" H+B;C;D;E;F;G;H;~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.U ~.~.V E*E*V ~.~.~.{.T@/#I;J;K;L;M;y;N;O; ", -" P;Q;R;S;T;U;~.{.~.~.~.~.~.~.~.~.l.U {.p@~.~.{.V ~.~.5+V;].~.~.~.~.{.{.p@W;X;Y;Z;`;/# >W..>+>N;@> ", -" #>$>%>&>*>G.~.~.~.~.~.~.~.~.{.`.=>V=->;>~.n##&>>T@,>'>].~.~.~.~.~.)>!>i$~>{>]>^>/>(>_>:><>[>}> |>1> ", -" 2>3>4>5>U@U ~.~.~.~.~.~.~.{.6>7>8>9>0>a#a>b>c>d>e>f>~.~.~.V ~.~.g>h>i>1=j>,%k>l>m>n>o>p>q>r>s>t>u>v>w> ", -" x>y>z>A>B>C>5+D>E>~.~.~.~.{.%&F>G>3;s%{.H>I>J>K>L>M>~.V N>O>P>x*Q>R>S>T>U> X%V>W>X>Y>Z>P-`> ,.,+, ", -" @,#,$,%,&,1.*,=,-,;,{.p@V {.X@>,,,Z;V ~.5.`;',),!,~,~.{,],^,/,/&-$F$(,_, :,<,[,},<@|,1,2, ", -" B&3,4, 5,6,7,8,9,0,`;a,b,B+c,d,s=<+~.~.~.a#e,f,g,h,V -#9$i,j,k,l,m,n, o,p,q,r,s,t,u,v, ", -" w,x, y,z,A,B,C,D,E,o@F,G,<+~.~.~.~.~.;;P>j%}@p@H,]#I,J,K,L,M,=+ N,O,P,Q,R,S, ", -" T,U,V,W,X,Y,Z,`, '.'+'x*~.{.O+@%@'#'$'%'a#&'*'='-' ~;;'>' ,''')'!' ", -" ~'{']'^'/'('_'_':'<'['}'{.V |'1'2'3'4'5'}@6'7' 8'K; ", -" v&9'0'a' b'c'd'e'f'1@g'h'G.i'j'k'l'm'n'o'p' y ", -" q'r's' t'u'H+ v'w'x'y' z'A'B' ", -" C'D' E'F' G'H' I'J' ", -" K'L' M' N'O' P'Q' ", -" R' S' ", -" ", -" ", -" ", -" "}; diff --git a/mlx/test/open24.xpm b/mlx/test/open24.xpm deleted file mode 100644 index f363254..0000000 --- a/mlx/test/open24.xpm +++ /dev/null @@ -1,230 +0,0 @@ -/* XPM */ -static char *open[] = { -/* width height num_colors chars_per_pixel */ -" 45 55 168 2", -/* colors */ -".. s None c None", -".# c #450304", -".a c #ce7e7c", -".b c #b94344", -".c c #b65254", -".d c #780204", -".e c #b04c4c", -".f c #b00204", -".g c #8a8a64", -".h c #969a24", -".i c #b6b60c", -".j c #cac614", -".k c #cece34", -".l c #cace54", -".m c #caca94", -".n c #c24e4c", -".o c #aa0204", -".p c #9e4244", -".q c #bc0204", -".r c #a40204", -".s c #9e262c", -".t c #8c3a3c", -".u c #5c1414", -".v c #5b0204", -".w c #700204", -".x c #722214", -".y c #b52624", -".z c #8e3234", -".A c #b60204", -".B c #c20204", -".C c #860204", -".D c #560304", -".E c #800204", -".F c #9e0204", -".G c #920204", -".H c #620204", -".I c #a41314", -".J c #996a6c", -".K c #920d09", -".L c #c80204", -".M c #690204", -".N c #980204", -".O c #984c4c", -".P c #e2dedc", -".Q c #ae5e5c", -".R c #bc6a6c", -".S c #a21a1c", -".T c #8a0a04", -".U c #671e1c", -".V c #941b1c", -".W c #b8b4b4", -".X c #e8e6e4", -".Y c #ccb4b4", -".Z c #c07c7c", -".0 c #f3f2eb", -".1 c #b49696", -".2 c #521614", -".3 c #9e5a5c", -".4 c #d4d4d4", -".5 c #a7a5a1", -".6 c #dec4c4", -".7 c #e4d6d4", -".8 c #f4f2f4", -".9 c #cccac4", -"#. c #9a161c", -"## c #8c0204", -"#a c #862c2c", -"#b c #7e5e5c", -"#c c #a39694", -"#d c #6b6667", -"#e c #322624", -"#f c #b09e9c", -"#g c #b23234", -"#h c #500304", -"#i c #222224", -"#j c #2e322c", -"#k c #925c5c", -"#l c #721a1c", -"#m c #6e6e6c", -"#n c #0a0a0c", -"#o c #b2b2b4", -"#p c #8e6264", -"#q c #884444", -"#r c #8c5c5c", -"#s c #121214", -"#t c #b2aeac", -"#u c #c21e1c", -"#v c #6e0e0c", -"#w c #623e3c", -"#x c #b64e4c", -"#y c #bc3634", -"#z c #624e1c", -"#A c #6e727c", -"#B c #824e4c", -"#C c #8b8d87", -"#D c #a09674", -"#E c #766844", -"#F c #7a663c", -"#G c #828c90", -"#H c #beb6a4", -"#I c #3a0204", -"#J c #8e9298", -"#K c #562529", -"#L c #7c3838", -"#M c #bab294", -"#N c #7e4644", -"#O c #929a9c", -"#P c #762a2c", -"#Q c #a60e0c", -"#R c #ae1e1c", -"#S c #460a0c", -"#T c #a6aaa4", -"#U c #6a4a4c", -"#V c #784c50", -"#W c #761214", -"#X c #9e1e1c", -"#Y c #988c90", -"#Z c #821e1c", -"#0 c #7a1618", -"#1 c #7a6e74", -"#2 c #7e7a77", -"#3 c #808688", -"#4 c #828284", -"#5 c #828279", -"#6 c #827a64", -"#7 c #7e765c", -"#8 c #864a34", -"#9 c #825a44", -"a. c #766e54", -"a# c #7e7e74", -"aa c #806464", -"ab c #7e724c", -"ac c #766634", -"ad c #765a2c", -"ae c #8e7e54", -"af c #a69e8c", -"ag c #c7c2ac", -"ah c #9a2a1c", -"ai c #aa3a3c", -"aj c #979894", -"ak c #70684c", -"al c #62522c", -"am c #6e5e3c", -"an c #92866c", -"ao c #968e6c", -"ap c #826e54", -"aq c #84765c", -"ar c #86522c", -"as c #7e4624", -"at c #7e3614", -"au c #6e5254", -"av c #712e2c", -"aw c #7a5654", -"ax c #82727c", -"ay c #a63634", -"az c #8a6a6c", -"aA c #863534", -"aB c #5c1a18", -"aC c #6a2c2c", -"aD c #5e0e14", -"aE c #868684", -"aF c #922624", -"aG c #901614", -"aH c #c21614", -"aI c #520e0c", -"aJ c #805654", -"aK c #b00c0c", -"aL c #c2221c", -/* pixels */ -"..........................................................................................", -"..........................................................................................", -".....................................#.a.#................................................", -"...................................#.b.c.#.#.#.#...........#.d............................", -".................................#.e.f.f.#.g.h.i.j.k.l.m...f.n............................", -".................................d.f.o.f.#.#.#.d.d.#.#.#...f.f.d..........................", -".................................p.q.q.r.s.t.u.v.w.x.d.d.#.d.r.y.d........................", -".................................z.A.B.q.C.D.E.F.G.E.H.E.I.F.q.A.d........................", -".................................J.G.f.G.w.K.f.L.B.B.r.M.f.B.L.A.d........................", -".................................d.w.N.M.O.P.Q.B.B.o.R.S.E.q.q.T.d........................", -".................................d.U.M.V.W.X.Y.q.B.Z.0.1.E.r.N.d..........................", -".................................d.2.r.3.4.5.6.A.f.7.8.9#.###a.#..........................", -"................................#b.d.L#c#d#e#f.N.V.5#d.4#g.E.d............................", -"...............................d#h.r.L#f#i#j#k.M#l#m#n#o.b.r.d............................", -"...............................d#h##.q#g#p#q##.q.N#r#s#t#u.q#v.#..........................", -"..............#j................#w.w.C.r.q##.r.B.f.T#x#y.L.r.M.d..........................", -"............#j#z#j#A#A#j.........d.D.r.M.C.f.r.r.r.q.B.C.N.E#B............................", -"..........#j#C#D#E#z#F#G#j.......d.d.#.G##.w.M.M.C.C.d.G.r.u.d............................", -"....................#E#H#C#j.........d#I.w.F.f.o.o.o.N.M.#.d..............................", -"......................#E#j#J#j......#K.M.#.#.v.w.M.v.##h.H#L.d............................", -"..........................#M#j.......v.F.q.r.d.w.w.C.E.M.v.M#N.d..........................", -"..........................#E#O#j#j#K##.f.L.L.L.B.q.f##.M.v.w.w#P.d.#...d.d................", -"............................#C#E.#.v.o.B.L.L.q.q.q.q.N.M.D#h.M.N.r#Q#R#S.H.J.#............", -"............................#j#T#U.C.q.q.o.G.F.f.q.A.N.d.v.v##.o.q.L.r.C.A###k............", -"..............................#C#V.N.A.N.f.q.F.C.E.f.F.E.H#n#W.K.I#X#a.z.V.q.d#p.d........", -"................................#Y.r.K#Z.K.q.A.G.w#0#b#1#2#3#4#5#5#6#6#7#8.q.G#9..........", -"..................#j#oa..5#j..#J#Ja##4#4aa.o.A##.E.xabacadae#Daf#M#Magah.r.qai.#..........", -"................aja#akalamanaoapaqaaarasat.r.o.E.w.T.T.E.H.#...........#.d.d.#............", -"...........E....#j#j#C#M#j#n#naa#V.O.f.N.F.q.G.d.w.r.C.d.H.#...............#..............", -"...........#.F.F.J#n#n#n#n#n#nauav#p.q.N.d.d.w.M.F.F.E.d.U................................", -".........E.F.E.E.d.z#n.d#n#n#naw.Uax.r##.d.w.D.M.r.N.E.w.d................................", -".........E.F.......d.Fay.E.F#naz.2#A.D#h.r.f.w##.r##.d.H.M................................", -".........F.#...........E.E.F.baAaB#A.#.E.f.r.w.N.N.E.waC.#................................", -".........F.#...............d.F.E#K#d.H.G.F.G.w.N##.d.D.#..................................", -".........F.#....................#Aau.v.E##.w.E.E.w.H.d.......d..av.d......................", -".........E.#..................#j#GaC.M.H.M.d.d.w.H.#.d.d.#aC.w.C##.E.d....................", -"...........F.................5#O...#aD.w.d.w.H.D.M######.G.F.o.f.o.N.3....................", -"...........F.E...........5aEakak.....#.##h#h.v.N.o.f.q.L.L.L.L.L.q.faF....................", -"...........E.E......#E#C.5aq#j.....#.v.N.F.d.N.r.F.r.F#Q.I.o.q.L.L.L.y....................", -".............E.....................#.E.B.qaG.d.d.d.....#.#.....d#x.b......................", -".............E.F...................E.w.L.LaG.#............................................", -"...............E.E.................EaA.q.qaG.#............................................", -"...............E.F.E.................E.r.r#Z.#............................................", -".................E.F.E...............E.G.NaA..............................................", -".................E#uaH.................w.dav..............................................", -"...................E.E.............EaI.M.w.v.#............................................", -"...................................E.D.d.E.waJ............................................", -".....................................C.N.N##.M............................................", -"..................................#W.f.q.A.f.G#q..........................................", -".....................................q.L.L.L.q.V.#........................................", -"...................................#.daK.q.qaL.d..........................................", -".......................................#.#.#..............................................", -"..........................................................................................", -"..........................................................................................", -".........................................................................................." -}; diff --git a/mlx/test/open30.xpm b/mlx/test/open30.xpm deleted file mode 100644 index 87be371..0000000 --- a/mlx/test/open30.xpm +++ /dev/null @@ -1,1439 +0,0 @@ -/* XPM */ -static char * open30_2_xpm[] = { -"64 64 1372 2", -" c None", -". c #08090D", -"+ c #1A1E23", -"@ c #1F2124", -"# c #060809", -"$ c #1A1E21", -"% c #4F606C", -"& c #3D4145", -"* c #868D93", -"= c #454E56", -"- c #627481", -"; c #667C8A", -"> c #2D3031", -", c #D7E1E7", -"' c #4D5157", -") c #8997A5", -"! c #282E31", -"~ c #333B41", -"{ c #A5C6DB", -"] c #718C9B", -"^ c #000000", -"/ c #181B1F", -"( c #262828", -"_ c #D2DEE7", -": c #B8C5D0", -"< c #151719", -"[ c #08090B", -"} c #272B30", -"| c #2D3037", -"1 c #26282C", -"2 c #1A1D1F", -"3 c #B1CADB", -"4 c #56646E", -"5 c #080809", -"6 c #080A0C", -"7 c #1E2126", -"8 c #98B7C9", -"9 c #A2CAE2", -"0 c #7FA1B5", -"a c #06080A", -"b c #252729", -"c c #A7ADB2", -"d c #272B2E", -"e c #1E2023", -"f c #C8D8E5", -"g c #C9DDED", -"h c #8996A3", -"i c #6B7782", -"j c #C7DFF0", -"k c #CCE0F0", -"l c #AFC1CF", -"m c #47535B", -"n c #B0D3E8", -"o c #7E99A9", -"p c #738493", -"q c #97B4C7", -"r c #53606A", -"s c #6E8996", -"t c #A1CBE3", -"u c #9CC6DE", -"v c #90B5CB", -"w c #171D22", -"x c #1E2629", -"y c #020202", -"z c #ABB3BA", -"A c #BBC4C8", -"B c #222323", -"C c #141617", -"D c #5D6164", -"E c #ACB5BC", -"F c #676D74", -"G c #BDD4E5", -"H c #B3D1E7", -"I c #B0D1E7", -"J c #728A99", -"K c #94AEBF", -"L c #B1D1E7", -"M c #505C64", -"N c #7B98A9", -"O c #A1CBE0", -"P c #99C3D9", -"Q c #475863", -"R c #A0C9DE", -"S c #9CC6DA", -"T c #9ECAE1", -"U c #9CC5DD", -"V c #9AC4DC", -"W c #263137", -"X c #3C4A55", -"Y c #658190", -"Z c #66686B", -"` c #7D8085", -" . c #363839", -".. c #797E81", -"+. c #D2DBE1", -"@. c #DDE9F4", -"#. c #CADEEF", -"$. c #778593", -"%. c #AED0E5", -"&. c #9EC9DE", -"*. c #9EC8DF", -"=. c #9BC1D8", -"-. c #9EC8DE", -";. c #6B8596", -">. c #9BC5DC", -",. c #9BC6DF", -"'. c #9CC5DC", -"). c #688595", -"!. c #6B8698", -"~. c #9CC4DC", -"{. c #9BC4DC", -"]. c #9DC5DD", -"^. c #647D8C", -"/. c #485864", -"(. c #161A1D", -"_. c #36444C", -":. c #95BDD5", -"<. c #566E7E", -"[. c #A4AAAD", -"}. c #E9F2F7", -"|. c #DEEAF6", -"1. c #B5D4E9", -"2. c #A9CFE3", -"3. c #90B3C9", -"4. c #9FCAE1", -"5. c #9BC4DD", -"6. c #7490A2", -"7. c #99C2DB", -"8. c #81A5BA", -"9. c #9CC5DE", -"0. c #98C1DA", -"a. c #5F7889", -"b. c #96BFD8", -"c. c #44545F", -"d. c #565A5E", -"e. c #DFE6EC", -"f. c #E6EEF7", -"g. c #D6E4F2", -"h. c #BFD6E9", -"i. c #A9CCE3", -"j. c #9FC8DD", -"k. c #9DC6DD", -"l. c #9CC4DD", -"m. c #7D9FB0", -"n. c #98C0D6", -"o. c #9AC5DD", -"p. c #97BFD8", -"q. c #9BC5DF", -"r. c #2D3840", -"s. c #626567", -"t. c #E7ECF5", -"u. c #E1EAF5", -"v. c #CEE3F3", -"w. c #B7D6EA", -"x. c #A4CBE0", -"y. c #8AAFC5", -"z. c #647F90", -"A. c #648092", -"B. c #89B0C7", -"C. c #9CC6DF", -"D. c #5D7486", -"E. c #7B9BAF", -"F. c #84A8BF", -"G. c #9BC5DD", -"H. c #96BED5", -"I. c #4B5D69", -"J. c #9BC5DE", -"K. c #536B77", -"L. c #2E3B41", -"M. c #1B2124", -"N. c #3F4F58", -"O. c #4D5152", -"P. c #E7EEF3", -"Q. c #E2EAF5", -"R. c #CEE2F2", -"S. c #BAD5E9", -"T. c #9DC2D7", -"U. c #5C7281", -"V. c #232A31", -"W. c #08090A", -"X. c #121418", -"Y. c #131619", -"Z. c #131719", -"`. c #87ACC3", -" + c #7B9BAE", -".+ c #87ADC3", -"++ c #8FB5CB", -"@+ c #678295", -"#+ c #96C0D8", -"$+ c #607787", -"%+ c #6B8595", -"&+ c #96C1DB", -"*+ c #6A8595", -"=+ c #35424A", -"-+ c #7090A1", -";+ c #15191C", -">+ c #2D3033", -",+ c #DDE5EB", -"'+ c #D2E3F1", -")+ c #BAD7EB", -"!+ c #A9CFE5", -"~+ c #272F35", -"{+ c #1C2227", -"]+ c #4F697B", -"^+ c #6B8FA9", -"/+ c #759CB6", -"(+ c #7BA0BB", -"_+ c #80A5BC", -":+ c #88B0C8", -"<+ c #96C3DB", -"[+ c #8FB6CD", -"}+ c #80A1B3", -"|+ c #556876", -"1+ c #96BFD7", -"2+ c #566B77", -"3+ c #93B8CD", -"4+ c #637A8D", -"5+ c #9DC6DE", -"6+ c #8FB4CA", -"7+ c #55697A", -"8+ c #6F8F9F", -"9+ c #91BDD5", -"0+ c #283239", -"a+ c #050406", -"b+ c #767B80", -"c+ c #BDC6CE", -"d+ c #D4E5F3", -"e+ c #C1D7EA", -"f+ c #A7CDE4", -"g+ c #9FC9DE", -"h+ c #668596", -"i+ c #6D90AA", -"j+ c #5C7994", -"k+ c #60849F", -"l+ c #6286A1", -"m+ c #688CA8", -"n+ c #7298B2", -"o+ c #82A8C2", -"p+ c #8FBAD5", -"q+ c #96C2DB", -"r+ c #89ADC4", -"s+ c #96BED6", -"t+ c #99C2DA", -"u+ c #6C899A", -"v+ c #92BBD2", -"w+ c #9AC4DD", -"x+ c #5B717D", -"y+ c #9EC6DE", -"z+ c #8BB1C9", -"A+ c #718EA0", -"B+ c #94C3DB", -"C+ c #536B78", -"D+ c #3E505F", -"E+ c #4E6373", -"F+ c #2C333C", -"G+ c #070708", -"H+ c #040404", -"I+ c #1A1C1E", -"J+ c #202326", -"K+ c #050606", -"L+ c #23292E", -"M+ c #A1C0D4", -"N+ c #9FC9DD", -"O+ c #97C2DB", -"P+ c #80A8C1", -"Q+ c #668AA6", -"R+ c #4B5D72", -"S+ c #4C647A", -"T+ c #5F80A0", -"U+ c #60859E", -"V+ c #678AA6", -"W+ c #739BB5", -"X+ c #85AEC7", -"Y+ c #92BDD7", -"Z+ c #96BFD5", -"`+ c #627B8A", -" @ c #89B1C9", -".@ c #2B353C", -"+@ c #7597B2", -"@@ c #779CB8", -"#@ c #52697C", -"$@ c #1D2328", -"%@ c #445663", -"&@ c #5E7A8D", -"*@ c #252F37", -"=@ c #090909", -"-@ c #859BB2", -";@ c #859DB8", -">@ c #6E8396", -",@ c #252C33", -"'@ c #9CC4D7", -")@ c #92C0D9", -"!@ c #79A0BA", -"~@ c #6487A3", -"{@ c #566979", -"]@ c #8CB0C2", -"^@ c #51697C", -"/@ c #60849D", -"(@ c #6D8EAC", -"_@ c #7BA0BC", -":@ c #8AB4CE", -"<@ c #95C2DB", -"[@ c #9AC5DC", -"}@ c #95C1DA", -"|@ c #607B8C", -"1@ c #597488", -"2@ c #7EA6BF", -"3@ c #597587", -"4@ c #455664", -"5@ c #668598", -"6@ c #82A9C4", -"7@ c #617F92", -"8@ c #1A2328", -"9@ c #2B3137", -"0@ c #728FAC", -"a@ c #51657B", -"b@ c #6B8AA8", -"c@ c #8EAEC7", -"d@ c #A8C8E2", -"e@ c #92BDD6", -"f@ c #769DBA", -"g@ c #526E87", -"h@ c #7490A0", -"i@ c #A6CDE4", -"j@ c #97BFD4", -"k@ c #55697D", -"l@ c #6286A0", -"m@ c #7399B3", -"n@ c #84ACC5", -"o@ c #92BFD9", -"p@ c #99C4DC", -"q@ c #94C0DA", -"r@ c #4F6575", -"s@ c #7DA5BF", -"t@ c #7FA2BC", -"u@ c #8FB6CE", -"v@ c #95C3DB", -"w@ c #8EB8D2", -"x@ c #6A879D", -"y@ c #111318", -"z@ c #252A30", -"A@ c #81868C", -"B@ c #A5ABAD", -"C@ c #70767C", -"D@ c #38434F", -"E@ c #637F9B", -"F@ c #516980", -"G@ c #799AB5", -"H@ c #A5C3D9", -"I@ c #93BDD6", -"J@ c #779EBA", -"K@ c #445A6B", -"L@ c #93B5C9", -"M@ c #B6D3E8", -"N@ c #AECFE4", -"O@ c #95BDD2", -"P@ c #52687A", -"Q@ c #6486A3", -"R@ c #7092B0", -"S@ c #90BCD6", -"T@ c #97C4DC", -"U@ c #A0C9E0", -"V@ c #99C5DD", -"W@ c #86AEC6", -"X@ c #8FBAD4", -"Y@ c #91BDD6", -"Z@ c #7094AC", -"`@ c #2A353E", -" # c #0B0E10", -".# c #888D90", -"+# c #787D82", -"@# c #465360", -"## c #56697F", -"$# c #A6CADD", -"%# c #5A7382", -"&# c #6C8CAA", -"*# c #A5BED3", -"=# c #A7CAE0", -"-# c #94C1DA", -";# c #7EA4BF", -"># c #415160", -",# c #9DC3D5", -"'# c #B3CFE1", -")# c #AAC3D4", -"!# c #A8CDE4", -"~# c #89ACBE", -"{# c #567088", -"]# c #6C91AC", -"^# c #81A7C2", -"/# c #96C4DC", -"(# c #85A9BD", -"_# c #708C9B", -":# c #5A6E7B", -"<# c #6C8695", -"[# c #97C3DB", -"}# c #8BB5CE", -"|# c #425461", -"1# c #63819E", -"2# c #415465", -"3# c #0B0D0E", -"4# c #607387", -"5# c #687D8C", -"6# c #B8D6E9", -"7# c #7893A2", -"8# c #576F85", -"9# c #A7BACF", -"0# c #B0CEE5", -"a# c #98C4DC", -"b# c #88B1CA", -"c# c #36444E", -"d# c #8FA0AD", -"e# c #73818D", -"f# c #596D81", -"g# c #B4D0E4", -"h# c #A3CDE2", -"i# c #658296", -"j# c #6A8DAB", -"k# c #7BA5C0", -"l# c #94BAD2", -"m# c #6D899B", -"n# c #99C3DC", -"o# c #8EB9D2", -"p# c #7AA0BA", -"q# c #6C8FAB", -"r# c #6484A1", -"s# c #1F252C", -"t# c #121619", -"u# c #7E96B0", -"v# c #7A8A96", -"w# c #BCD7EA", -"x# c #A0C5D9", -"y# c #3C4B57", -"z# c #A9BACD", -"A# c #BCD5E8", -"B# c #84A6BA", -"C# c #8EA1AE", -"D# c #CFD1D4", -"E# c #ECF6FA", -"F# c #ABB7C2", -"G# c #556F84", -"H# c #57626A", -"I# c #5C7078", -"J# c #6C8AA7", -"K# c #80A6C0", -"L# c #91B8D0", -"M# c #94BFD8", -"N# c #87B0CA", -"O# c #7CA2BB", -"P# c #7097AF", -"Q# c #495E6F", -"R# c #0C0E11", -"S# c #3A3F43", -"T# c #8AA3BB", -"U# c #778592", -"V# c #C0D8EB", -"W# c #B3D5E9", -"X# c #404A53", -"Y# c #B2C2D3", -"Z# c #96A1AC", -"`# c #9DB2C3", -" $ c #AEBECE", -".$ c #EDEFF3", -"+$ c #F7FAFC", -"@$ c #B6BFC7", -"#$ c #556E85", -"$$ c #121314", -"%$ c #2B2E2F", -"&$ c #555A5E", -"*$ c #3B4C5B", -"=$ c #6F8EA4", -"-$ c #92BED8", -";$ c #9DC7DF", -">$ c #87ACC1", -",$ c #546A78", -"'$ c #516874", -")$ c #4E6570", -"!$ c #4D6271", -"~$ c #4C6271", -"{$ c #4E677A", -"]$ c #38454E", -"^$ c #6C7278", -"/$ c #86A1B6", -"($ c #5C656C", -"_$ c #A4B0BA", -":$ c #555D64", -"<$ c #657178", -"[$ c #A6B0B5", -"}$ c #939CA1", -"|$ c #D4E4F1", -"1$ c #A0BACE", -"2$ c #B9C7D7", -"3$ c #F6F7F9", -"4$ c #C6CED1", -"5$ c #506A7C", -"6$ c #060607", -"7$ c #676A6B", -"8$ c #91999F", -"9$ c #7CA3BE", -"0$ c #96BCD4", -"a$ c #5B717E", -"b$ c #4B5F6C", -"c$ c #455864", -"d$ c #5B717F", -"e$ c #81A5B9", -"f$ c #98C4DD", -"g$ c #93BFD8", -"h$ c #87B1CA", -"i$ c #7BA1BC", -"j$ c #5A7489", -"k$ c #222A33", -"l$ c #838A92", -"m$ c #9DADBC", -"n$ c #ECF0F5", -"o$ c #F1F9FB", -"p$ c #818A8D", -"q$ c #4A5155", -"r$ c #6A6F72", -"s$ c #7E898F", -"t$ c #E6F1F7", -"u$ c #CADCED", -"v$ c #A0B7CC", -"w$ c #C6D1DF", -"x$ c #AFB3B4", -"y$ c #5F707D", -"z$ c #CBCFD1", -"A$ c #F4F5F6", -"B$ c #66737F", -"C$ c #87B2CB", -"D$ c #90B7CD", -"E$ c #596E7B", -"F$ c #586F7E", -"G$ c #8BB0C8", -"H$ c #91BED6", -"I$ c #83ADC7", -"J$ c #6D8EA7", -"K$ c #3F5161", -"L$ c #2D3A45", -"M$ c #1F2020", -"N$ c #BDC5CC", -"O$ c #E0EDF5", -"P$ c #BBCAD8", -"Q$ c #E1E4E7", -"R$ c #5E6368", -"S$ c #5B5F62", -"T$ c #D9E7F3", -"U$ c #A4C3D6", -"V$ c #89A3B3", -"W$ c #7B91A1", -"X$ c #627990", -"Y$ c #42505A", -"Z$ c #CACCCE", -"`$ c #F9F9F9", -" % c #FDFDFD", -".% c #BCBEC0", -"+% c #5C7689", -"@% c #8DB9D3", -"#% c #8FB5CC", -"$% c #536471", -"%% c #98C1D9", -"&% c #91BED7", -"*% c #81AAC5", -"=% c #597386", -"-% c #41535F", -";% c #6486A2", -">% c #4D667D", -",% c #070809", -"'% c #44484E", -")% c #BEC8D0", -"!% c #8096A6", -"~% c #516473", -"{% c #A9ACAF", -"]% c #8B8F91", -"^% c #A8B3BD", -"/% c #C5DAEB", -"(% c #9FC8E1", -"_% c #8FBCD6", -":% c #81A8C2", -"<% c #6C90AC", -"[% c #56728C", -"}% c #585B5F", -"|% c #CBCDCD", -"1% c #C1C3C6", -"2% c #4F565F", -"3% c #82ABC3", -"4% c #93BCD3", -"5% c #95BED7", -"6% c #8EB9D3", -"7% c #5B788B", -"8% c #627E91", -"9% c #7FA7C1", -"0% c #6C91AB", -"a% c #546F87", -"b% c #6F7376", -"c% c #D5E2EF", -"d% c #A9C4D8", -"e% c #81A1BA", -"f% c #333940", -"g% c #5F6B76", -"h% c #C0D5E8", -"i% c #AACCE2", -"j% c #8EB8D3", -"k% c #7FA5BF", -"l% c #7095B0", -"m% c #4E697E", -"n% c #07090A", -"o% c #0D0F10", -"p% c #7193A6", -"q% c #96C3DC", -"r% c #8EBCD7", -"s% c #91BDD7", -"t% c #8FBBD6", -"u% c #7699AD", -"v% c #4D626F", -"w% c #252D33", -"x% c #101215", -"y% c #0C0D0E", -"z% c #0A0C0E", -"A% c #06090A", -"B% c #7F8488", -"C% c #D7E3F1", -"D% c #B6D0E4", -"E% c #A3C2D7", -"F% c #596872", -"G% c #A9BED0", -"H% c #B4D0E5", -"I% c #9EC8DC", -"J% c #8FB9D4", -"K% c #85ADC7", -"L% c #7FA4BE", -"M% c #4B606F", -"N% c #4E6372", -"O% c #89B6D0", -"P% c #92C1DA", -"Q% c #9DC7DD", -"R% c #95C0DA", -"S% c #94BED8", -"T% c #8BB8D1", -"U% c #7AA0B9", -"V% c #4E667A", -"W% c #344151", -"X% c #0C0D0F", -"Y% c #8A8F92", -"Z% c #D4E6F5", -"`% c #BCD5E9", -" & c #8599A5", -".& c #939DA6", -"+& c #C4DAEB", -"@& c #89A6B9", -"#& c #7D9FB5", -"$& c #98C3DC", -"%& c #95C0D9", -"&& c #7CA2B9", -"*& c #7697AE", -"=& c #698498", -"-& c #7394A8", -";& c #9EC7DF", -">& c #8DB1C4", -",& c #6B8594", -"'& c #50636C", -")& c #50626C", -"!& c #7F9FB1", -"~& c #93B8D0", -"{& c #627A88", -"]& c #90B6CC", -"^& c #93BDD7", -"/& c #87AFC9", -"(& c #7291A7", -"_& c #384651", -":& c #121618", -"<& c #12171B", -"[& c #4F6986", -"}& c #597998", -"|& c #324052", -"1& c #969CA1", -"2& c #D6E6F5", -"3& c #C6DCEE", -"4& c #505A64", -"5& c #82929F", -"6& c #99ABBB", -"7& c #A1B9CA", -"8& c #87A0B0", -"9& c #718EA1", -"0& c #8DB2C9", -"a& c #8BAEC4", -"b& c #586D7D", -"c& c #97C0D9", -"d& c #8DB3C9", -"e& c #95B8CD", -"f& c #9DC0D6", -"g& c #6F8B9C", -"h& c #354249", -"i& c #464E54", -"j& c #8A98A5", -"k& c #AABAC7", -"l& c #86939E", -"m& c #41494F", -"n& c #4A5861", -"o& c #97C1DA", -"p& c #5E7888", -"q& c #5C7482", -"r& c #88ACC2", -"s& c #91BFD7", -"t& c #799CB5", -"u& c #47596A", -"v& c #0D0F12", -"w& c #1A2127", -"x& c #56778D", -"y& c #688BA9", -"z& c #5D7F9E", -"A& c #547391", -"B& c #0E1013", -"C& c #9DA6AB", -"D& c #C8DCED", -"E& c #7A8996", -"F& c #B5CEE0", -"G& c #BCDBEC", -"H& c #B9D5EA", -"I& c #8BA2B2", -"J& c #6C8A9D", -"K& c #97BFD7", -"L& c #3E4E59", -"M& c #92B5CB", -"N& c #535F68", -"O& c #454F56", -"P& c #6F7C87", -"Q& c #ABC0D1", -"R& c #C7DCEE", -"S& c #C5DBED", -"T& c #C2D7EA", -"U& c #BFD8EA", -"V& c #BCD7EB", -"W& c #62717B", -"X& c #5B6F7B", -"Y& c #95C3DC", -"Z& c #8BB2C9", -"`& c #485761", -" * c #42525F", -".* c #6686A1", -"+* c #587896", -"@* c #1B2129", -"#* c #5C7A94", -"$* c #7DA2BD", -"%* c #84AEC7", -"&* c #749BB5", -"** c #5C7E9C", -"=* c #27343F", -"-* c #A4A9B2", -";* c #D9E7F4", -">* c #C8DBEC", -",* c #B1C8DA", -"'* c #5D6C76", -")* c #A8C5D8", -"!* c #A6BDD0", -"~* c #B9D6EA", -"{* c #B9D4E9", -"]* c #8198A8", -"^* c #8AADC3", -"/* c #8CB1CA", -"(* c #96C2D8", -"_* c #A3C7DF", -":* c #ADCDE3", -"<* c #ABD0E4", -"[* c #ADCFE3", -"}* c #AACEE4", -"|* c #A4CDE3", -"1* c #A1CBE1", -"2* c #A3CCE3", -"3* c #A2C9DF", -"4* c #41515A", -"5* c #81A2B5", -"6* c #94C0D7", -"7* c #5E7789", -"8* c #526777", -"9* c #516777", -"0* c #6B8CA5", -"a* c #759CBA", -"b* c #658AA5", -"c* c #587798", -"d* c #1B242B", -"e* c #0E1110", -"f* c #101214", -"g* c #202931", -"h* c #59758E", -"i* c #799FBB", -"j* c #84B1CA", -"k* c #86ACC6", -"l* c #354758", -"m* c #A0A6AE", -"n* c #DAE6F2", -"o* c #C4DCEE", -"p* c #B4D2E8", -"q* c #3E4A53", -"r* c #698091", -"s* c #5D7581", -"t* c #A3CAE0", -"u* c #A6CFE5", -"v* c #A5CCE5", -"w* c #718A9C", -"x* c #98C3DB", -"y* c #83ABC7", -"z* c #2E3B46", -"A* c #33414A", -"B* c #678398", -"C* c #8AB3CE", -"D* c #93BED7", -"E* c #97C4DB", -"F* c #42525E", -"G* c #88ACC0", -"H* c #789EB9", -"I* c #7A9FBB", -"J* c #7EA2BD", -"K* c #779DB5", -"L* c #577081", -"M* c #5B7B9B", -"N* c #1D2229", -"O* c #547390", -"P* c #54728D", -"Q* c #6082A0", -"R* c #688EA9", -"S* c #6689A7", -"T* c #6086A0", -"U* c #6285A1", -"V* c #6B8DAA", -"W* c #718FAB", -"X* c #3E5568", -"Y* c #969DA1", -"Z* c #DBE8F4", -"`* c #95ACBD", -" = c #758B9A", -".= c #A4C9DE", -"+= c #698190", -"@= c #667E8A", -"#= c #7D99AA", -"$= c #7B9BAD", -"%= c #6F8C9A", -"&= c #536976", -"*= c #84ADC6", -"== c #6D92AD", -"-= c #62829E", -";= c #43576A", -">= c #2F3B46", -",= c #5C788A", -"'= c #86AFC8", -")= c #93BED8", -"!= c #93BAD5", -"~= c #93BAD2", -"{= c #92BCD4", -"]= c #7EA2B6", -"^= c #3D4D56", -"/= c #485B67", -"(= c #7596A9", -"_= c #8CBBD4", -":= c #90BCD5", -"<= c #91BFD9", -"[= c #789BAD", -"}= c #465B6A", -"|= c #59789A", -"1= c #5D7F9D", -"2= c #5E839C", -"3= c #59799A", -"4= c #415569", -"5= c #2D3A46", -"6= c #2E3B49", -"7= c #4A647C", -"8= c #587690", -"9= c #39485A", -"0= c #7F8589", -"a= c #D9E8F5", -"b= c #CCDEEE", -"c= c #8597A5", -"d= c #B3D2E3", -"e= c #9BB3C4", -"f= c #B2CEE1", -"g= c #B2D1E7", -"h= c #ABCFE6", -"i= c #94B7CB", -"j= c #495C6A", -"k= c #688498", -"l= c #617B8A", -"m= c #85ADC8", -"n= c #78A0B9", -"o= c #62819B", -"p= c #2E3843", -"q= c #485A6C", -"r= c #67889C", -"s= c #8AB5CF", -"t= c #8EB9D1", -"u= c #6C899B", -"v= c #6E91A7", -"w= c #678399", -"x= c #6888A1", -"y= c #323E48", -"z= c #5B7585", -"A= c #98C5DD", -"B= c #83ACC1", -"C= c #2D373F", -"D= c #4B637C", -"E= c #567694", -"F= c #26313C", -"G= c #15191F", -"H= c #4D647A", -"I= c #252F39", -"J= c #5D6163", -"K= c #DDE9F5", -"L= c #CEDFEE", -"M= c #8898A5", -"N= c #B0CBDC", -"O= c #BFDAEC", -"P= c #BFDBEC", -"Q= c #BBDAEC", -"R= c #BAD7EA", -"S= c #6B808F", -"T= c #7297B0", -"U= c #8CB8D1", -"V= c #95C1D9", -"W= c #91BCD6", -"X= c #86AEC8", -"Y= c #7496B3", -"Z= c #6587A2", -"`= c #384958", -" - c #323F4B", -".- c #546A7C", -"+- c #6C88A1", -"@- c #779AB1", -"#- c #658297", -"$- c #3B4A58", -"%- c #33404B", -"&- c #202830", -"*- c #577287", -"=- c #86B1CC", -"-- c #86ACC0", -";- c #6E8797", -">- c #9CC7DF", -",- c #92BCD5", -"'- c #91BCD5", -")- c #8EB6CE", -"!- c #344453", -"~- c #263039", -"{- c #364452", -"]- c #2B3643", -"^- c #2A2D2E", -"/- c #E1EBF4", -"(- c #D2E4F3", -"_- c #A0B2C3", -":- c #8094A1", -"<- c #BAD8EB", -"[- c #B8D6EA", -"}- c #485A6A", -"|- c #789FB9", -"1- c #90BBD3", -"2- c #94C4DC", -"3- c #88B3CD", -"4- c #7A9EB9", -"5- c #698BA8", -"6- c #4D677C", -"7- c #151A1E", -"8- c #1A2125", -"9- c #171C21", -"0- c #1D2329", -"a- c #1D262E", -"b- c #486073", -"c- c #6A8CAA", -"d- c #7CA2BE", -"e- c #90BDD7", -"f- c #9AC5DE", -"g- c #7493A2", -"h- c #708B99", -"i- c #8CB7D1", -"j- c #7494AB", -"k- c #68889F", -"l- c #6A8FA5", -"m- c #7BA2BC", -"n- c #171D21", -"o- c #1D262F", -"p- c #212B36", -"q- c #09090B", -"r- c #BBC2C9", -"s- c #D4E4F2", -"t- c #C1D9EB", -"u- c #44515A", -"v- c #92B5C9", -"w- c #6B8795", -"x- c #4E687E", -"y- c #7EA6C0", -"z- c #91BED8", -"A- c #93BFD9", -"B- c #8CB5D0", -"C- c #7DA4BE", -"D- c #6F92AE", -"E- c #6687A5", -"F- c #526C85", -"G- c #415669", -"H- c #384655", -"I- c #6589A4", -"J- c #6E92AE", -"K- c #80A8C2", -"L- c #92BCD6", -"M- c #91BFD8", -"N- c #799AAF", -"O- c #6A8796", -"P- c #81AAC3", -"Q- c #577187", -"R- c #1F2930", -"S- c #192027", -"T- c #1B2227", -"U- c #0D1010", -"V- c #0E1012", -"W- c #070709", -"X- c #5C6062", -"Y- c #DCE8F3", -"Z- c #C4DCEF", -"`- c #9BB3C6", -" ; c #3A424F", -".; c #313A44", -"+; c #35424C", -"@; c #374655", -"#; c #6E91AD", -"$; c #87B2CC", -"%; c #799EBA", -"&; c #618298", -"*; c #7095AF", -"=; c #435663", -"-; c #80A7C0", -";; c #95C4DC", -">; c #779CB3", -",; c #526D7E", -"'; c #516A7A", -"); c #526B7B", -"!; c #465764", -"~; c #34414E", -"{; c #5C7E9A", -"]; c #2B3741", -"^; c #4B657F", -"/; c #5C7D9C", -"(; c #557088", -"_; c #0F0F10", -":; c #B9C2CA", -"<; c #CCDFEF", -"[; c #B4CDE1", -"}; c #8DAEC8", -"|; c #6F93AE", -"1; c #678CA6", -"2; c #6E92AF", -"3; c #81A8C1", -"4; c #8FBBD5", -"5; c #8DB9D2", -"6; c #6D8FA2", -"7; c #586F82", -"8; c #394851", -"9; c #86B0C6", -"0; c #85AFC8", -"a; c #6F94AF", -"b; c #698DA8", -"c; c #6889A7", -"d; c #5E7E9F", -"e; c #475D75", -"f; c #2E3C4A", -"g; c #5D7E9D", -"h; c #405465", -"i; c #36393B", -"j; c #D7E5F1", -"k; c #A4C5DC", -"l; c #668496", -"m; c #7595AB", -"n; c #7798AE", -"o; c #97C2DA", -"p; c #789DB3", -"q; c #8BB1C8", -"r; c #93C0D9", -"s; c #8BB5CF", -"t; c #85AFC9", -"u; c #82AAC6", -"v; c #5F7C95", -"w; c #1E252C", -"x; c #54728E", -"y; c #587899", -"z; c #5A7B9B", -"A; c #2D3843", -"B; c #798086", -"C; c #D1E3F1", -"D; c #B7D3E8", -"E; c #7E98AB", -"F; c #181C1F", -"G; c #46525F", -"H; c #80A1B8", -"I; c #99C3DB", -"J; c #85ACC2", -"K; c #21272D", -"L; c #0A0B0D", -"M; c #53718C", -"N; c #577797", -"O; c #1B2229", -"P; c #0D0E0F", -"Q; c #B3BDC4", -"R; c #CADDED", -"S; c #B4D3E7", -"T; c #2B3339", -"U; c #2F3840", -"V; c #7899AC", -"W; c #93C1D9", -"X; c #8FBCD5", -"Y; c #8BB6D1", -"Z; c #8DB8D2", -"`; c #92BFD8", -" > c #678092", -".> c #547089", -"+> c #5C7F9B", -"@> c #1F262E", -"#> c #202223", -"$> c #B1BECB", -"%> c #C3D9EB", -"&> c #7B8D99", -"*> c #708B9A", -"=> c #85ABC1", -"-> c #7FA3BA", -";> c #92BBD3", -">> c #7CA0B4", -",> c #97BDD4", -"'> c #657E8F", -")> c #93BDD4", -"!> c #88ADC7", -"~> c #6F94AE", -"{> c #526A7E", -"]> c #65849B", -"^> c #799DBB", -"/> c #84AFC9", -"(> c #8FB9D2", -"_> c #323C45", -":> c #516C84", -"<> c #658AA4", -"[> c #5B7C9B", -"}> c #2E3A49", -"|> c #2A3038", -"1> c #252D3A", -"2> c #1B1E20", -"3> c #ADBFCF", -"4> c #C0D6E7", -"5> c #B0CDE2", -"6> c #8EB3C9", -"7> c #526975", -"8> c #6B899D", -"9> c #597183", -"0> c #90BAD5", -"a> c #94C2DA", -"b> c #82ABC5", -"c> c #495E6E", -"d> c #82A8C3", -"e> c #81A4BA", -"f> c #7594A5", -"g> c #87ABC3", -"h> c #4D6573", -"i> c #6689A6", -"j> c #526E85", -"k> c #243037", -"l> c #607B96", -"m> c #7699B6", -"n> c #789EB5", -"o> c #303D48", -"p> c #7498B4", -"q> c #7094AF", -"r> c #597792", -"s> c #242F39", -"t> c #1A1D25", -"u> c #374553", -"v> c #4D677D", -"w> c #14191E", -"x> c #040505", -"y> c #171A1D", -"z> c #8A9FAD", -"A> c #BCD9EC", -"B> c #B5D3E7", -"C> c #A2CAE1", -"D> c #9DC7DE", -"E> c #9EC7DD", -"F> c #3B4A57", -"G> c #455867", -"H> c #98C2DB", -"I> c #85B0CC", -"J> c #7496B2", -"K> c #4C606F", -"L> c #6E8EA3", -"M> c #7EA0B6", -"N> c #91BBD3", -"O> c #8DB7D1", -"P> c #90BAD4", -"Q> c #96C1DA", -"R> c #3B4853", -"S> c #688AA5", -"T> c #4C657A", -"U> c #1B2026", -"V> c #2B3C44", -"W> c #5F7A90", -"X> c #587284", -"Y> c #536978", -"Z> c #88B1CC", -"`> c #759AB8", -" , c #617E9A", -"., c #556F85", -"+, c #20272E", -"@, c #323D48", -"#, c #333E4A", -"$, c #060707", -"%, c #4A5159", -"&, c #ACC3D5", -"*, c #ACCFE5", -"=, c #5A6874", -"-, c #AACDE1", -";, c #9CC6DC", -">, c #35414C", -",, c #769AB2", -"', c #80AAC5", -"), c #6F92AB", -"!, c #38464F", -"~, c #7EA4B9", -"{, c #97C3DC", -"], c #7A9FB6", -"^, c #3F505C", -"/, c #6D8DA6", -"(, c #1E282E", -"_, c #080909", -":, c #090A0C", -"<, c #344452", -"[, c #3B4857", -"}, c #7799AE", -"|, c #8DB6D1", -"1, c #66869E", -"2, c #3D4957", -"3, c #536C84", -"4, c #353F4C", -"5, c #111215", -"6, c #65727E", -"7, c #A6BCCD", -"8, c #5D6972", -"9, c #AED0E6", -"0, c #99C5DC", -"a, c #8DB5D0", -"b, c #8DB5CE", -"c, c #90BBD5", -"d, c #84AAC5", -"e, c #8EBBD5", -"f, c #80A7C1", -"g, c #6C8DA2", -"h, c #85AFC6", -"i, c #61839B", -"j, c #374352", -"k, c #576D83", -"l, c #80A6C1", -"m, c #81A4BB", -"n, c #111315", -"o, c #111418", -"p, c #4C6378", -"q, c #33424C", -"r, c #37454D", -"s, c #8DB4CF", -"t, c #7397B3", -"u, c #3A495A", -"v, c #0D0F13", -"w, c #27303A", -"x, c #272E36", -"y, c #0F1012", -"z, c #90A4B2", -"A, c #A8CBE2", -"B, c #91BCD4", -"C, c #80ABC3", -"D, c #567083", -"E, c #67899D", -"F, c #94C2DB", -"G, c #95C1DB", -"H, c #779CB2", -"I, c #60849E", -"J, c #64849F", -"K, c #1A1F22", -"L, c #405061", -"M, c #79A1BD", -"N, c #324051", -"O, c #6183A1", -"P, c #6B8FAD", -"Q, c #6485A2", -"R, c #34444F", -"S, c #060606", -"T, c #2D3339", -"U, c #B2CBDF", -"V, c #94BCD5", -"W, c #7DA2BA", -"X, c #3F5264", -"Y, c #5A7991", -"Z, c #7195B3", -"`, c #7BA5BD", -" ' c #81AAC6", -".' c #88B2CC", -"+' c #8EBBD4", -"@' c #8AB2CC", -"#' c #82ADC7", -"$' c #7092A5", -"%' c #95C2DA", -"&' c #41525F", -"*' c #6387A3", -"=' c #475F72", -"-' c #21282F", -";' c #5B7288", -">' c #0D0F11", -",' c #0B0E11", -"'' c #212C36", -")' c #26323C", -"!' c #161B20", -"~' c #55616D", -"{' c #9BB9D0", -"]' c #799EB6", -"^' c #27313A", -"/' c #1A222B", -"(' c #5D7E99", -"_' c #6587A4", -":' c #6789A6", -"<' c #6B8EAB", -"[' c #628097", -"}' c #6D8B9D", -"|' c #769AAF", -"1' c #6E91A9", -"2' c #6C8EAD", -"3' c #6E91AF", -"4' c #3C4D59", -"5' c #8BB1CB", -"6' c #232D32", -"7' c #13171B", -"8' c #232B32", -"9' c #839AAF", -"0' c #789BB3", -"a' c #283138", -"b' c #0C0E0F", -"c' c #242B33", -"d' c #3D4D5B", -"e' c #435768", -"f' c #4B6176", -"g' c #283137", -"h' c #8DB4CC", -"i' c #41535E", -"j' c #405362", -"k' c #3C4F60", -"l' c #3C4E5B", -"m' c #2B353E", -"n' c #526876", -"o' c #92BAD3", -"p' c #1B1F23", -"q' c #31383F", -"r' c #7F9CB6", -"s' c #21292F", -"t' c #29333F", -"u' c #1F252E", -"v' c #090A0E", -"w' c #4D626E", -"x' c #96BDD3", -"y' c #191D20", -"z' c #13181B", -"A' c #80A4BC", -"B' c #1B2027", -"C' c #5D7182", -"D' c #2C383F", -"E' c #364857", -"F' c #1A2028", -"G' c #333F49", -"H' c #7FA2B5", -"I' c #4A5E6E", -"J' c #232E35", -"K' c #252D35", -"L' c #2F3A41", -"M' c #0A0B0E", -"N' c #14191D", -"O' c #5A717F", -"P' c #212931", -"Q' c #222B34", -"R' c #101216", -"S' c #21272B", -" ", -" ", -" ", -" . ", -" + ", -" @ # $ % ", -" & * = - ; ", -" > , ' ) ! ~ { ] ", -" ^ / ( _ : < [ } | 1 2 3 4 5 6 7 8 9 0 a ", -" b c d e f g h i j k l m n o p q r s t u v w x ", -" y z A B C D E F G H I J K L M N O P Q R S T U U V W X Y ", -" Z ` ...+.@.#.$.%.O &.*.=.-.;.>.,.'.).!.~.~.~.{.].^./.(._.:.<. ", -" b [.}.|.#.1.2.3.4.{.~.~.~.~.5.6.5.~.7.8.{.~.~.~.~.9.0.a.b.].c. ", -" d.e.f.g.h.i.j.k.{.~.~.~.~.l.~.m.% n.~.o.{.{.~.~.~.~.p.V 9.~.q.r. ", -" s.t.u.v.w.x.u y.z.A.B.5.~.~.5.C.D.E.F.~.~.G.~.~.~.G.H.I.J.~.~.J.K.L. M.N. ", -" O.P.Q.R.S.T.U.V.W.X.Y.Z.`.~.~.5. +.+++@+U ~.~.~.~.~.#+$+%+,.~.~.G.&+*+=+-+;+ ", -" >+,+Q.'+)+!+~+{+]+^+/+(+_+:+<+~.[+}+U 9.|+5.~.~.~.~.1+2+3+4+5+~.].6+7+8+9+0+ ", -" a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+5.U ~.U r+s+~.~.~.t+u+v+w+x+y+~.z+A+t+B+C+D+E+ F+G+ ", -" H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+V ~.~.~.~.U ~.~.~.o.9.{.Z+`+9.~.~.~.V @.@+@@@#@ $@%@&@*@ ", -" =@-@;@>@,@'@'.)@!@~@{@]@^@/@l+(@_@:@<@~.~.~.U {.~.~.~.{.~.~.{.[@~.~.~.~.}@|@1@2@3@4@5@6@7@8@ ", -" 9@0@a@b@c@d@-.e@f@g@h@i@j@k@l@V+m@n@o@p@~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.q@r@s@t@u@v@w@x@y@ ", -"z@A@B@C@D@E@X F@G@H@R I@J@K@L@M@N@O@P@Q@R@o+S@T@~.~.~.~.~.~.~.~.~.~.~.~.~.~.9.U@V@W@X@<+V Y@Z@`@ # ", -" .#+#@###$#%#&#*#=#-#;#>#,#'#)#!#~#{#]#^#S@/#~.~.~.~.~.~.~.~.~.~.~.~.~.U (#_#:#<#p@{.[#}#|#1#2# ", -" 3#4#5#6#7#8#9#0#a#b#c#d#e#f#g#h#i#j#k#S@/#~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.l#m#9.{.~.n#o#p#q#r#s# ", -" t#u#v#w#x#y#z#A#B#C#D#E#F#G#H#I#% J#K#S@T@~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.L#0.l.~.~.{.M#N#O#P#Q#R# ", -" S#T#U#V#W#X#Y#Z#`# $.$+$@$#$$$%$&$*$=$-$a#~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.o.o.;$9.G.~.>$,$'$)$!$~${$]$ ", -" ^$/$($_$:$<$[$}$|$1$2$3$4$5$6$7$8$9$:+<+~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.G.0$a$b$c$d$e$f$g$h$i$j$k$ ", -" [ l$m$n$o$p$q$r$s$t$u$v$w$x$y$z$A$B$C$M#p@~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.;$D$E$F$G$H$I$J$K$L$ ", -" M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$`$ %.%+%@%<+{.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.#%$%%%p@&%*%=%-%;%>%,% ", -" '%)%!%~%{%]%^%/%(%_%:%<%[%}%|%1%2%3%-$T@~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.4%5%U p@6%7%8%9%0%a%y ", -" b%c%d%e%f%g%h%i%G.[#j%k%l%m%n%o%p%@%q%{.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.~.~.~.~.~.~.V G.}@r%s%t%u%v%w%M.x%y%z%A% ", -" B%C%D%E%F%G%H%I%V o.<@J%K%L%M%N%O%P%p@~.~.~.~.~.~.~.~.~.U ~.~.U 9.Q%{.~.~.~.~.~.{.%%U {.~.~.{.v@R%S%T%U%V%W% X%$ ", -" Y%Z%`% &.&+&@&#&U ~.{.$&%&&&*&=&-&T@~.~.~.~.~.~.~.~.~.~.~.;&>&,&'&)&!&5+~.~.~.~.{.~&{&]&9.~.p@^&/&(&_&:& <&[&}&|& ", -" 1&2&3&4&5&6&7&8&9&l.~.{.V 0&a&b&c&~.~.~.~.~.~.~.5.d&e&f&g&h&i&j&k&l&m&n&~.~.G.~.~.~.o&p&q&r&s&t&u&v& w&x&y&z&A&B& ", -" C&2&D&E&F&G&G&H&I&J&U ~.~.U K&L&,.~.~.~.~.~.~.~.U M&N&O&P&Q&R&S&T&U&V&W&X&].{.~.~.{./#Y&Z&`& *.*+*@* (.#*$*%*&***=* ", -" -*;*>*,*'*)*!*~*{*]*^*~.5.{.5./*U ~.~.~.~.~.~.{.[#(*_*:*<*[*[*}*|*1*2*3*4*5*U ~.~.6*7*8*9*0*a*b*c*d*e*f*g*h*i*%*j*k*<%l* ", -" m*n*o*p*q*r*s*t*u*v*w*1+~.~.~.~.~.~.~.~.~.~.~.x*y*z*A*B*C*D*E*V U ~.G.~.:.F*G*l.{.R%X+H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X* ", -" Y*Z*D&`* =.=+=@=#=$=%=&={.~.~.~.~.~.~.~.~.~.~.<+*===-=;=>=,='=)=[#p@!=~={=]=^=/=(=a#&%_=:=<=-#[=}=k$|=1=2=3=4=5=6=7=8=9= ", -" 0=a=b=c=d=e=f=g=h=i=j=k=l=5.~.~.~.~.~.~.~.~.~.V -$m=n===o=p=q=r=s=t=:+u=v=w=x=y=z=A=J.V U ~.V [#B=C=D=1=E=F= G=H=I= ", -" J=K=L=M=N=O=P=Q=R=S=T=U=V=5.U ~.~.~.~.~.~.~.~.~.{.x*W=X=Y=Z=`= -.-+-@-#-$-%-&-*-=---;->-9.x*)=,-'-)-c.!-~- {-]- ", -" ^-/-(-_-:-<-<-[-%.}-|-1-T@~.{.~.~.~.~.~.~.~.~.~.~.V 2-^&3-4-5-6-7-8-9-0-a-b-c-d-e-f-g-h-V@i-j-k-l-T=m-7@n- o-p- ", -" q-r-s-t-u-v-!+2*w-x-y-z-V ~.~.~.~.~.~.~.~.~.~.~.~.~.~./#A-B-C-D-E-F-G-H-I-J-K-L-<@M-W=N-O-P-Q-R-<&S-T-U-V- W- ", -" X-Y-Z-`- ;.;+;@;#;$;q+~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~./#v@W=N#%;&;*;=;-;s=-#;;>;,;';);!;~;{;];^;/;(;H+ ", -" _;:;<;[;};|;1;2;3;4;{.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.T@-#5;6;7;8;9;[#V <+0;a;b;c;E-d;e;f;|=g;h; ", -" i;j;V#k;F.l;m;n;o;~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.~.{.p@S@s=p;q;~.~.{.r;s;t;u;~$v;w;x;y;z;A; ", -" H+B;C;D;E;F;G;H;~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.U ~.~.V E*E*V ~.~.~.{.T@/#I;J;K;L;M;y;N;O; ", -" P;Q;R;S;T;U;~.{.~.~.~.~.~.~.~.~.l.U {.p@~.~.{.V ~.~.5+V;].~.~.~.~.{.{.p@W;X;Y;Z;`;/# >W..>+>N;@> ", -" #>$>%>&>*>G.~.~.~.~.~.~.~.~.{.`.=>V=->;>~.n##&>>T@,>'>].~.~.~.~.~.)>!>i$~>{>]>^>/>(>_>:><>[>}> |>1> ", -" 2>3>4>5>U@U ~.~.~.~.~.~.~.{.6>7>8>9>0>a#a>b>c>d>e>f>~.~.~.V ~.~.g>h>i>1=j>,%k>l>m>n>o>p>q>r>s>t>u>v>w> ", -" x>y>z>A>B>C>5+D>E>~.~.~.~.{.%&F>G>3;s%{.H>I>J>K>L>M>~.V N>O>P>x*Q>R>S>T>U> X%V>W>X>Y>Z>P-`> ,.,+, ", -" @,#,$,%,&,1.*,=,-,;,{.p@V {.X@>,,,Z;V ~.5.`;',),!,~,~.{,],^,/,/&-$F$(,_, :,<,[,},<@|,1,2, ", -" B&3,4, 5,6,7,8,9,0,`;a,b,B+c,d,s=<+~.~.~.a#e,f,g,h,V -#9$i,j,k,l,m,n, o,p,q,r,s,t,u,v, ", -" w,x, y,z,A,B,C,D,E,o@F,G,<+~.~.~.~.~.;;P>j%}@p@H,]#I,J,K,L,M,=+ N,O,P,Q,R,S, ", -" T,U,V,W,X,Y,Z,`, '.'+'x*~.{.O+@%@'#'$'%'a#&'*'='-' ~;;'>' ,''')'!' ", -" ~'{']'^'/'('_'_':'<'['}'{.V |'1'2'3'4'5'}@6'7' 8'K; ", -" v&9'0'a' b'c'd'e'f'1@g'h'G.i'j'k'l'm'n'o'p' y ", -" q'r's' t'u'H+ v'w'x'y' z'A'B' ", -" C'D' E'F' G'H' I'J' ", -" K'L' M' N'O' P'Q' ", -" R' S' ", -" ", -" ", -" ", -" "}; diff --git a/mlx/test/run_tests.sh b/mlx/test/run_tests.sh deleted file mode 100755 index d33cd5e..0000000 --- a/mlx/test/run_tests.sh +++ /dev/null @@ -1,94 +0,0 @@ -#!/usr/bin/env sh - -# This very basic script simulate user inputs for the CI -# Feel free to update, improve or remove it if proper -# intergration tests and/or unit tests are added. - -set -e - -BOLD="\033[1m" -RESET="\033[0m" -LIGHT_RED="\033[91m" -LIGHT_GREEN="\033[92m" -LIGHT_CYAN="\033[96m" - -logging(){ - local type=$1; shift - printf "${LIGHT_CYAN}${BOLD}run_tests${RESET} [%b] : %b\n" "$type" "$*" -} -log_info(){ - logging "${LIGHT_GREEN}info${RESET}" "$@" -} -log_error(){ - logging "${LIGHT_RED}error${RESET}" "$@" >&2 - exit 1 -} - - -PID="" - -# to properly kill child process executed in background on exit -at_exit() { - status=$? - [ $status -eq 0 ] && log_info "Seem all went well" && exit 0 - # Code for non-zero exit: - if ! kill -s TERM "$PID" 2>/dev/null || ! wait "$PID" ; then - log_error "Pid [$PID] died with status $status " - fi - log_error "Something went wrong. Pid [$PID] has been killed. Status code $status" -} -# to properly quit from ctrl+c (SIGINT Signal) -sigint_handler(){ - kill -s TERM "$PID" - wait - log_info "Tests abort" - exit 1 -} - -# look at test/main.c and run ./mlx-test to understand what this function does -test_default_main(){ - ${MAKE} -f Makefile.gen all - ./mlx-test & - PID="$!" - log_info "./mlx-test running in background, pid:" $PID - - i=25 # waiting 25s mlx-test to be ready for inputs. - while [ $i -gt 0 ]; do - if ! ps -p $PID > /dev/null ; then - wait $PID - fi - log_info "countdown" $i - sleep 1 - i=$((i - 1)) - done - log_info "Ready to \"just play\" using xdotool" - wid1=$(xdotool search --name Title1) - wid2=$(xdotool search --name Title2) - wid3=$(xdotool search --name Title3) - - xdotool windowfocus $wid3 - log_info "Focus Win3: Testing move mouse 100 100" - xdotool mousemove 100 100 - log_info "Focus Win3: Testing move mouse 200 200" - xdotool mousemove 200 200 - log_info "Focus Win3: Pressing escape to destroy window \"Win3\"" - xdotool key Escape - - log_info "Focus Win2: Pressing escape to stop program" - xdotool windowfocus $wid2 - xdotool key Escape -} - -main(){ - case $(uname) in - FreeBSD) MAKE=gmake ;; - *) MAKE=make ;; - esac - cd $(dirname $0) - trap at_exit EXIT - trap sigint_handler INT - - test_default_main -} - -main "$@" diff --git a/src/main.c b/src/main.c index 26f2c3e..353c1df 100644 --- a/src/main.c +++ b/src/main.c @@ -6,7 +6,7 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/05/21 19:22:50 by narnaud #+# #+# */ -/* Updated: 2022/08/25 09:28:42 by narnaud ### ########.fr */ +/* Updated: 2022/11/14 10:39:10 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,7 +18,7 @@ int main(int argc, char **argv) if (argc != 2) return (EXIT_FAILURE); - env = parse_file(argv[1]); + env = load_map(argv[1]); if (!env) return (EXIT_FAILURE); init_window(env); diff --git a/src/parsing/map.c b/src/parsing/map.c index 4213aba..6628a05 100644 --- a/src/parsing/map.c +++ b/src/parsing/map.c @@ -6,7 +6,7 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/08/23 09:30:50 by narnaud #+# #+# */ -/* Updated: 2022/08/23 16:38:17 by narnaud ### ########.fr */ +/* Updated: 2022/08/30 16:05:29 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ @@ -92,7 +92,7 @@ char **create_map_array(t_slist *e_lst, int wide, int deep) { end_line = ft_calloc(wide - ft_strlen(e_lst->content) + 1, sizeof(char)); - end_line = memset(end_line, + end_line = memset(end_line, '0', wide - ft_strlen(e_lst->content) * sizeof(char)); ret[i] = ft_strjoin(e_lst->content, end_line); free(end_line); diff --git a/src/parsing/parsing.c b/src/parsing/parsing.c index 76d90ad..9c3fdff 100644 --- a/src/parsing/parsing.c +++ b/src/parsing/parsing.c @@ -6,7 +6,7 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/05/23 17:20:29 by narnaud #+# #+# */ -/* Updated: 2022/08/25 11:25:38 by narnaud ### ########.fr */ +/* Updated: 2022/11/14 11:48:57 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ @@ -45,13 +45,15 @@ void register_settings(int *progress, t_env *env, char *line) else if (!ft_strncmp(elem[0], "DO", 3)) env->tex[4].file = ft_strtrim(elem[1], "\n"); else if (!ft_strncmp(elem[0], "F", 2)) - env->floorColor = rgb_to_int(elem); + env->floorColor = rgb_to_int(elem + 1); else if (!ft_strncmp(elem[0], "C", 2)) - env->ceilColor = rgb_to_int(elem); + env->ceilColor = rgb_to_int(elem + 1); else (*progress)--; (*progress)++; ft_free_split(elem); + if (env->floorColor == -1 || env->ceilColor == -1) + (*progress)--; } t_slist *read_map_line(t_env *env, char *line) @@ -83,41 +85,41 @@ t_slist *read_map_line(t_env *env, char *line) return (ret); } -int is_valid(t_env *env) +int is_valid_map(t_env *env) { - if (!find_player(env) - || is_in_open_room(env, env->playerPos.x, env->playerPos.y)) - { - printf("Error: You are using an invalid map.\n"); - return (0); - } - return (1); + if (!find_player(env)) + printf("Error: There is no player on the map.\n"); + else if (is_in_open_room(env, env->playerPos.x, env->playerPos.y)) + printf("Error: You are using an open map.\n"); + else + return (1); + return (0); } -t_env *parse_file(char *filename) +t_env *load_map(char *filename) { int fd; char *line; static int progress; static t_slist *e_map; - t_env *ret; + t_env *env; - ret = ft_calloc(1, sizeof(t_env)); + env = ft_calloc(1, sizeof(t_env)); fd = open(filename, O_RDONLY); line = get_next_line(fd); while (line) { if (*line && *line != '\n' && progress > 6 && progress++) - ft_slst_add_back(&e_map, read_map_line(ret, line)); + ft_slst_add_back(&e_map, read_map_line(env, line)); else if (*line != '#') - register_settings(&progress, ret, line); + register_settings(&progress, env, line); free(line); line = get_next_line(fd); } - if (progress < 7 && cleanup_datas(ret)) + if (progress < 7 && cleanup_datas(env)) return (NULL); - ret->map = create_map_array(e_map, ret->wide, ret->deep); - if (!is_valid(ret) && cleanup_datas(ret)) + env->map = create_map_array(e_map, env->wide, env->deep); + if (!is_valid_map(env) && cleanup_datas(env)) return (NULL); - return (ret); + return (env); } diff --git a/src/parsing/utils.c b/src/parsing/utils.c index 0db9353..12b6af8 100644 --- a/src/parsing/utils.c +++ b/src/parsing/utils.c @@ -6,7 +6,7 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/08/23 09:29:26 by narnaud #+# #+# */ -/* Updated: 2022/08/23 16:21:21 by narnaud ### ########.fr */ +/* Updated: 2022/11/14 12:12:58 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,23 +18,27 @@ int rgb_to_int(char **rgb) int i; int c; char **colors; + int color; - ret = 0; - rgb++; - colors = ft_split(*rgb, ','); c = 0; i = 0; - while (c < 3) + ret = 0; + colors = ft_split(*rgb, ','); + while (c < 3 && rgb) { - if (colors[i]) - ret |= ft_atoi(colors[i++]) << (8 * (2 - c++)); - else + if (!colors[i]) { - ft_free_split(colors); i = 0; - colors = ft_split(*(++rgb), ','); + ft_free_split(colors); + if (++rgb) + colors = ft_split(*rgb, ','); + continue ; } + color = ft_atoi(colors[i++]); + if (color >= 0 && color < 256) + ret |= color << (8 * (2 - c++)); } - ft_free_split(colors); - return (ret); + if (c < 3) + return (ft_free_split(colors), printf("Error:\nInvalid color.\n"), -1); + return (ft_free_split(colors), ret); }