upgraded example to test all mlx functions

This commit is contained in:
Namonay
2024-01-12 04:25:12 +01:00
parent 178690cff3
commit 071bc4596b
4 changed files with 48 additions and 12 deletions

BIN
example/42_logo.bmp git.filemode.normal_file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
example/42_logo.jpg git.filemode.normal_file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -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

View File

@@ -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);