diff --git a/example/42_logo.bmp b/example/42_logo.bmp new file mode 100644 index 0000000..299dacc Binary files /dev/null and b/example/42_logo.bmp differ diff --git a/example/42_logo.jpg b/example/42_logo.jpg new file mode 100644 index 0000000..c40c51b Binary files /dev/null and b/example/42_logo.jpg differ diff --git a/example/build.sh b/example/build.sh index 4405e9d..b332c18 100755 --- a/example/build.sh +++ b/example/build.sh @@ -7,6 +7,6 @@ fi if [ $(uname -s) = 'Darwin' ]; then clang main.c ../libmlx.dylib -L /opt/homebrew/lib -lSDL2 -g; else - clang main.c ../libmlx.so -lSDL2 -g; + clang main.c ../libmlx.so -lSDL2 -g -Wall -Wextra -Werror; fi diff --git a/example/main.c b/example/main.c index 317b0c9..ba08a41 100644 --- a/example/main.c +++ b/example/main.c @@ -18,7 +18,9 @@ typedef struct s_mlx { void *mlx; void *win; - void *logo; + void *logo_png; + void *logo_jpg; + void *logo_bmp; void *img; } t_mlx; @@ -32,7 +34,9 @@ int update(void *param) mlx = (t_mlx *)param; mlx_set_font_scale(mlx->mlx, mlx->win, "default", 6.f); mlx_string_put(mlx->mlx, mlx->win, 160, 120, 0xFFFF2066, "this text should be hidden"); - mlx_put_image_to_window(mlx->mlx, mlx->win, mlx->logo, 100, 100); + mlx_put_image_to_window(mlx->mlx, mlx->win, mlx->logo_png, 100, 100); + mlx_put_image_to_window(mlx->mlx, mlx->win, mlx->logo_jpg, 210, 150); + mlx_put_image_to_window(mlx->mlx, mlx->win, mlx->logo_bmp, 220, 40); mlx_put_image_to_window(mlx->mlx, mlx->win, mlx->img, 150, 60); if (i == 0) mlx_set_font_scale(mlx->mlx, mlx->win, "font.ttf", 16.f); @@ -83,8 +87,37 @@ void *create_image(t_mlx *mlx) int key_hook(int key, void *param) { - if (key == 41) - mlx_loop_end(((t_mlx *)param)->mlx); + int x; + int y; + + mlx_mouse_get_pos(((t_mlx *)param)->mlx, &x, &y); + switch (key) + { + case 41: // ESCAPE + mlx_loop_end(((t_mlx *)param)->mlx); + break; + case 22: // (S)how + mlx_mouse_show(); + break; + case 11: // (H)ide + mlx_mouse_hide(); + break; + case 6:// (C)lear + mlx_clear_window(((t_mlx *)param)->mlx, ((t_mlx *)param)->win); + break; + case 79: // RIGHT KEY + mlx_mouse_move(((t_mlx *)param)->mlx, ((t_mlx *)param)->win, x + 10, y); + break; + case 80: // LEFT KEY + mlx_mouse_move(((t_mlx *)param)->mlx, ((t_mlx *)param)->win, x - 10, y); + break; + case 81: // UP KEY + mlx_mouse_move(((t_mlx *)param)->mlx, ((t_mlx *)param)->win, x, y + 10); + break; + case 82:// DOWN KEY + mlx_mouse_move(((t_mlx *)param)->mlx, ((t_mlx *)param)->win, x, y - 10); + break; + } return (0); } @@ -95,28 +128,31 @@ int window_hook(int event, void *param) return (0); } -int main(int argc, char **argv) +int main(void) { t_mlx mlx; - void *img; int w; int h; - (void)argc; - (void)argv; mlx.mlx = mlx_init(); mlx.win = mlx_new_window(mlx.mlx, 400, 400, "My window"); mlx_on_event(mlx.mlx, mlx.win, MLX_KEYDOWN, key_hook, &mlx); mlx_on_event(mlx.mlx, mlx.win, MLX_WINDOW_EVENT, window_hook, &mlx); - mlx.logo = mlx_png_file_to_image(mlx.mlx, "42_logo.png", &w, &h); + mlx.logo_png = mlx_png_file_to_image(mlx.mlx, "42_logo.png", &w, &h); + mlx.logo_bmp = mlx_bmp_file_to_image(mlx.mlx, "42_logo.bmp", &w, &h); + mlx.logo_jpg = mlx_jpg_file_to_image(mlx.mlx, "42_logo.jpg", &w, &h); mlx_pixel_put(mlx.mlx, mlx.win, 200, 10, 0xFFFF00FF); - mlx_put_image_to_window(mlx.mlx, mlx.win, mlx.logo, 10, 190); + mlx_put_image_to_window(mlx.mlx, mlx.win, mlx.logo_png, 10, 190); mlx.img = create_image(&mlx); mlx_string_put(mlx.mlx, mlx.win, 20, 20, 0xFF0020FF, \ "that text will disappear"); mlx_loop_hook(mlx.mlx, update, &mlx); mlx_loop(mlx.mlx); - mlx_destroy_image(mlx.mlx, mlx.logo); + mlx_get_screens_size(mlx.mlx, &w, &h); + printf("screen size : %dx%d", w, h); + mlx_destroy_image(mlx.mlx, mlx.logo_png); + mlx_destroy_image(mlx.mlx, mlx.logo_jpg); + mlx_destroy_image(mlx.mlx, mlx.logo_bmp); mlx_destroy_image(mlx.mlx, mlx.img); mlx_destroy_window(mlx.mlx, mlx.win); mlx_destroy_display(mlx.mlx); diff --git a/src/core/application.inl b/src/core/application.inl index c942efb..d25cb1d 100644 --- a/src/core/application.inl +++ b/src/core/application.inl @@ -42,7 +42,6 @@ namespace mlx::core } SDL_WarpMouseInWindow(_graphics[*static_cast(win)]->getWindow()->getNativeWindow(), x, y); SDL_PumpEvents(); - SDL_FlushEvent(SDL_MOUSEMOTION); } void Application::onEvent(void* win, int event, int (*funct_ptr)(int, void*), void* param) noexcept