From 178690cff3a2de3a81c6b8b5c94908f57941d947 Mon Sep 17 00:00:00 2001 From: Namonay Date: Fri, 12 Jan 2024 04:24:24 +0100 Subject: [PATCH 1/2] Fixed mlx_mouse_move() not updating mouse position Removed SDL_FlushEvent(SDL_MOUSEMOTION) preventing Input::update() from catching new mouse position after a mlx_mouse_move() call --- src/core/application.inl | 1 - 1 file changed, 1 deletion(-) 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 From 071bc4596ba3662ee9595e21804e4ebd4e05d7b6 Mon Sep 17 00:00:00 2001 From: Namonay Date: Fri, 12 Jan 2024 04:25:12 +0100 Subject: [PATCH 2/2] upgraded example to test all mlx functions --- example/42_logo.bmp | Bin 0 -> 30810 bytes example/42_logo.jpg | Bin 0 -> 1652 bytes example/build.sh | 2 +- example/main.c | 58 +++++++++++++++++++++++++++++++++++--------- 4 files changed, 48 insertions(+), 12 deletions(-) create mode 100644 example/42_logo.bmp create mode 100644 example/42_logo.jpg diff --git a/example/42_logo.bmp b/example/42_logo.bmp new file mode 100644 index 0000000000000000000000000000000000000000..299dacccce2f5beee18fdbccfeb97fa783553c30 GIT binary patch literal 30810 zcmeI5X-pMY6oBtTDs6$d6qUF%s1#9)T9?Me)F4Gk4I11cMT~`~AcoC{#F|u1w2j*j znpD%O(c)U8xUbQ;#AxEa#3&l;zD2FOxGVkMo8~fM;1vkA@4=b)hBIf*y>rjUz2}~p zx$>g=C48@3+f4R9@EQ5f$EJc^`cAn@ed2F?Tng8&SSjP5^QbtwcT~T;y+z>zwtd>@ z)1U6zx^(ICNlHpe7@xXx=g$4;tB(uogeT^8E-9~+F9!wGo$q64i)9l6LO=)z0U;m+ zgn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^VfDjM@Lcn_nOq(|C z#*G`^(_VKiy>{)IaoP|rU%q_e#0fM-MMeAe?R)a%3G)5>_usyKi*V}Hsq^R0Biy`s z^Y-oAC=m`GJoxV2JCtnKuU|K0YUAww{rl~9`_-#g!G#$b1Y?ge7rJxj&Z9?hXXj1CQWMBuHDd~Ll-Pq zfB`510|U9l*s)_9HEINkZr!@AUAuO~h!M%j$@AyWuUD_$l`B`0l9HA#T}m4oG-z<_ z*s*2HmU$2+S5x3{*W*sFUcKl8 z1}i#AP*Bi}88aqNo;+sEnDq4YhYue{L`2M*H479mF){Qdpuvj$*|TTkC&YR z9XjOa=TmC>^y!*a_wL=P0ajdk-n@BS$OBmg1O(8vph4RXA3jWXLI5D6>CmA=M~@!m z5Eov&c(G&04m7%7-Me@1^y$-^Hf=IH)v{$vs-i4r1qB5RTZR>tJbn6Lwr#s&#fpUs7xwJglLgac0%QdQ91sNu2Q#U)YSoIcykyCercIlsrlvM& z(gZRX5X{*FkUfKr_|MEZWy+L}9Xpb5Ftw2b5W~~b(h?IBnFPI*r9?(^1~sC1QDCqj=#f(4I>9biQJ}58;Tn;(U=5)CFv_yuH3b27lbEH zoY=K%SJDP%w?&H<)c{twFl5LOqU+0-FG-^6)~$Qt!i50?1~3`<`ufsCn8=vC$R#*S zXQSJYpu&dR-~cHZ`kKKC-+_ZKB+?{22qZtu z<3OWpk>|X6^@@2jH#fI_{rY4+7=RaUd-v{LzI=H?LIN{BIY4Y|Z2$iKIor2yU+l>c z#*ZJ*NaWDabIJoZ!iaU#c>+F?A69R(K}YBd4Gpc{YTtKl{FZ%ueCk*>5}WsZY5nVX z-xsQ``u|5()#bu}R*$f%IBH=ftSU~R;+Fr~uZ%2+M993AsVsGqTk$q{i{-zvii?Z0 zOpSXq! z3UWnQfs6lYtSc8*Zu%9h$R{-}Vdb8cG3t5dK<^S(6=4N2;|Y~F#`ga#UK#z$*z;V= z8(FPdwMvIvEiguSU}E;pjjV5Md0Ate3E`ab(O}nOrszqR4?dck{V6)kbXT_C;@0s>I+19RU!OzdH3cZVmpSlLK zP-AXw7>pY?ZZx}Q$jzEHs{$?_r(3IHFdC~qJhQh{wpFYyu=>bg3ZZH6sXvqv4W*vZ-@c%@$6>~GxTkldQRs3oj$ znb+>t_)PCAa|9WzuwT7;wZ>I@SP`FDGiJrbQbubcq3@ls*MqV4urj(wnQ1DazSLmU ztQfiAVzmavYa1(EW_hQzcdw7t5l~a<*q@uw^?H;jF71qw>^&BS+=fm9m9k5NXeLj6?no`OER+vYqm8$U*ke zNqnWOtpNFR2Mt6%>(nP3@?TCl)g`;W2sX$uc;MIg7KA<|)g&jIWcz4G1~y%>2_2b{ zN&P%4g*()x8M)&n3Fh-}$>oKPt6lUx_aHSEaU2 zQ!4mec9J8>b!q2+RrEf>PsH_kcFt0jd>4Te?hQKjb2Qz|T# Sx)aOs`$Gz7Zfvk5CDKy z4j@?uG_1oy&P4b}M*34UePcDLXZ!>7BmDio4JAS#5rBRN3?>DGA>b=O$V#t5R#8?? zcI7If&`5bC8l|qhVS}kXU=#>~ z0!iut)zu7At69DS4v~T(q@iF*AAnd}3=FO=5h>#Mp4?i?O^o)Z{@rrQG{ftJH>oL3ybnesahBGeSJhD^34b)Ax0|*M#9KX6PS$zRtgzfRSsQl{fAu zG{}!MVv!#W$G1cv z3t%~;fh^7ocPc`gI+zA~ag4$bCvaQbo~EYTBEcS~&)sLd+9liaF_k+a_Az{S)@L?7 z-{}rpA$ZgTO-jkJur_dO`MIL-{9YO?N-I6!s(4 zTgxTD(SS!Ie1g=<7XVa+gug0~1Bt zr&owmUA!Q=3+Qqt6d@l-m-k^-o8H4rD#J!9s5YXQz069&!+Eu)&;9CfpPILF&lI9U zG7K6{KJ62C40Ojw8M7N@Raz$0j-Q!Cp#RZSIpXZ2rseM>}l zo+xK5K;JCH#ub+dI%H2sJUci0NgViM8jGRp+sP=O*3HPhV4ummPOeYa(#_g=&RhQe zCgOM>yg)b_W&S7TvQ4tn+Y`;V=Px_u>rfHZ?IL4>JM5!x?dJLfsKc#>$Y@u!Oz&Va zWnHMOt{ zM*BreVf&;`!nD}AvWfQb?SVS9iD5)oOk>g5sXVx*w5xEwkHVN%*vU#T@TwXfCkLeq zXx@T%A=kq>TK7t+?9J`9^%S`;+{A0L8I&aGvS_HiV!}~cZZTKwBCbz+lN561rbzKX zYc;4cuS4VWB95J=5=@HZwz$Wh7x6~QN%-azZht|FQ!uk}lCEt(n=RJn3(W(L==&MJ z*i9CKGd;?5q!w!-N-8^u(>I_E>K$_nmX2xG?1;kdlkg8sUlb~g$E?yVS?K~;yj}~% z%&gOT++590DO9(%w`c6b*t#_Sd6nB!@zHh*;3C?(X|EkooKpf03I|%7K4^4FfYmlb{kL3Kd&+sO^gt^;WcL#SWR1}K EFK82>82|tP literal 0 HcmV?d00001 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);