# SDL2 based minilibx port for Windows This port is based on the X11 based minilibx for linux of 42Paris school [https://github.com/42Paris/minilibx-linux/](https://github.com/42Paris/minilibx-linux/) ## Unofficial implementation The Minilibx was originally created by Olivier Crouzet (ol@42), this only is an implementation of it for Windows using the Simple DirectMedia Layer 2 library. The SDL2 is available for [ Microsoft Windows](https://fr.wikipedia.org/wiki/Microsoft_Windows "Microsoft Windows"), [GNU/Linux](https://fr.wikipedia.org/wiki/GNU/Linux "GNU/Linux"), [Android](https://fr.wikipedia.org/wiki/Android "Android"), [macOS](https://fr.wikipedia.org/wiki/MacOS "MacOS"), [iOS](https://fr.wikipedia.org/wiki/IOS "IOS"), [FreeBSD](https://fr.wikipedia.org/wiki/FreeBSD "FreeBSD") and [Haiku](https://fr.wikipedia.org/wiki/Haiku_(syst%C3%A8me_d%27exploitation) "Haiku (système d'exploitation)") so this port should probably be adaptable for all those OS without too much effort. However, I've only tested this for Windows. X11 events currently implemented/mapped : KeyPress KeyRelease ButtonPress ButtonRelease FocusIn FocusOut DestroyNotify Expose If you need other events, feel free to make an issue or to map them yourself in mlx.c and making a pull request afterwards (please). Fonctions currently implemented : void *mlx_init(void); void *mlx_new_image(void *mlx_ptr, int width, int height); char *mlx_get_data_addr(void *img_ptr, int *bits_per_pixel, int *size_line, int *endian); int mlx_put_image_to_window(void *mlx_ptr, void *win_ptr, void *img_ptr, int x, int y); int mlx_destroy_image(void *mlx_ptr, void *img_ptr); 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); void *mlx_new_window(void *mlx_ptr, int size_x, int size_y, char *title); int mlx_destroy_window(void *mlx_ptr, void *win_ptr); int mlx_expose_hook (void *win_ptr, int (*funct_ptr)(), void *param); 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_hook(void *win_ptr, int x_event, int x_mask, int (*funct)(), void *param); int mlx_loop_hook (void *mlx_ptr, int (*funct_ptr)(), void *param); int mlx_loop (void *mlx_ptr); int mlx_do_key_autorepeatoff(void *mlx_ptr); int mlx_do_key_autorepeaton(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); void *mlx_xpm_file_to_image(void *mlx_ptr, char *filename, int *width, int *height); If you are interested in this port but need more features from the original mlx, please make an issue, if you do so hopefully I should be able to implement them pretty quickly. ## INSTALLATION You will need Mingw (Minimalist GNU for Windows) tools : https://osdn.net/projects/mingw/releases/ (which ports GNU GCC and GNU Make to Windows) Make in the project's root directory will compile the lib and a test executable Lib path is `minilibx_sdl2/libmlx.a ` You will need to place SDL2.dll, SDL2_image.dll next to your executable. (because i still don't understand how to change the path to these fucking dynamic libs (: ) You'll need to compile with the following links : `-L"$(MLX_DIRECTORY)/SDL/lib" -lmingw32 -lSDL2main -lSDL2 -lSDL2_image -lSDL2_mixer -lSDL2_ttf -lmingw32 -lSDL2main -luser32 -lgdi32 -lwinmm -ldxguid` ## KNOWN BUG Some .xpm files (like small_gun.xpm from test pictures) can't be parsed by the SDL2 image module for a reason unknown to me, if you find an explanantion or a fix, please make an issue about it (that would be super awesome). ## EPILEPSY WARNING The default test displays a rectangle changing colors at every frame. ## CONTACT Feel free to contribute to the project by making issues, pull request, or by contacting me directly, any improvements or ideas are much welcome. You can contact me at : smaccary@student.42.fr