From 7a712d00e656f9e10846b8501bc10bc9760bd3be Mon Sep 17 00:00:00 2001 From: Berni8k Date: Sun, 21 Oct 2018 10:10:50 +0100 Subject: [PATCH] Added multitouch example --- examples/Makefile | 1 + examples/core/core_multitouch.c | 90 ++++++++++++++++++++++++++++++ examples/core/core_multitouch.png | Bin 0 -> 17177 bytes 3 files changed, 91 insertions(+) create mode 100644 examples/core/core_multitouch.c create mode 100644 examples/core/core_multitouch.png diff --git a/examples/Makefile b/examples/Makefile index a7a85661c..a26e0bbbf 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -375,6 +375,7 @@ EXAMPLES = \ core/core_2d_camera \ core/core_world_screen \ core/core_vr_simulator \ + core/core_multitouch \ shapes/shapes_logo_raylib \ shapes/shapes_basic_shapes \ shapes/shapes_colors_palette \ diff --git a/examples/core/core_multitouch.c b/examples/core/core_multitouch.c new file mode 100644 index 000000000..c059ac035 --- /dev/null +++ b/examples/core/core_multitouch.c @@ -0,0 +1,90 @@ +/******************************************************************************************* +* +* raylib [core] example - Multitouch input +* +* This example has been created using raylib 2.1 (www.raylib.com) +* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) +* +* Copyright (c) 2014 Ramon Santamaria (@raysan5) +* Example by Berni +* +********************************************************************************************/ + +#include "raylib.h" +#include + +int main() +{ + // Initialization + //-------------------------------------------------------------------------------------- + int screenWidth = 800; + int screenHeight = 450; + + InitWindow(screenWidth, screenHeight, "raylib [core] example - multitouch input"); + + Vector2 ballPosition = { -100.0f, -100.0f }; + Color ballColor; + int PressedCounter = 0; + Vector2 TouchPos; + char Str[16]; + + SetTargetFPS(60); + //--------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + // Update + //---------------------------------------------------------------------------------- + ballPosition = GetMousePosition(); + + ballColor = BEIGE; + + if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) ballColor = MAROON; + if (IsMouseButtonDown(MOUSE_MIDDLE_BUTTON)) ballColor = LIME; + if (IsMouseButtonDown(MOUSE_RIGHT_BUTTON)) ballColor = DARKBLUE; + + if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) PressedCounter = 10; + if (IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON)) PressedCounter = 10; + if (IsMouseButtonPressed(MOUSE_RIGHT_BUTTON)) PressedCounter = 10; + if(PressedCounter > 0) + PressedCounter--; + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(RAYWHITE); + + // Multitouch + for (int i = 0; i < MAX_TOUCH_POINTS; ++i) + { + TouchPos = GetTouchPosition(i); // Get the touch point + + if( (TouchPos.x >= 0) && (TouchPos.y >= 0) ) // Make sure point is not (-1,-1) as this means there is no touch for it + { + DrawCircleV(TouchPos, 34, ORANGE); // Draw a circle there + + sprintf(Str,"%d",i); + DrawText(Str, TouchPos.x - 10, TouchPos.y - 70, 40, BLACK); // Also show its index number + } + } + + // Draw the normal mouse location + DrawCircleV(ballPosition, 30 + (PressedCounter * 3), ballColor); + + DrawText("move ball with mouse and click mouse button to change color", 10, 10, 20, DARKGRAY); + DrawText("touch the screen at multiple locations to get multiple balls", 10, 30, 20, DARKGRAY); + + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} \ No newline at end of file diff --git a/examples/core/core_multitouch.png b/examples/core/core_multitouch.png new file mode 100644 index 0000000000000000000000000000000000000000..74284f82aa86e62d8d429d4d46e75aab63c0eeba GIT binary patch literal 17177 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYU_8XZ#=yWJp1k%11B258PZ!6Kin!!IzrMb% zZwoY#Vp^<-gDBx(Ty`-)j<@lmfCN^8v8wez278Lh+TOMU85})W2!oz72RGq^*d=?~ z4s76VyeK*0qKhpqXE2^1joz`06uH)w@t@8uF;}%G|}O z7TW|QbeFqbKAOStfUof)--(P@*rTfPqQHV^jtxC+Ur%r}F7=+?=k_&&gJ+h2gm3@i z&O#FwH|GQxk;l<qh{J)_$fF2?-sr9l5Phx zICvTbB<3 z?wq@GL8yhWwUAxFOOEhA0jF(S4#|gGDP66rdMfO7`EwB0cdd!D`7eAv?BPGX|eahUGb#5@m&9wbR=Q}$8quQQ^nOjy{8A!+nHzBKyy`uh0){cYbd3LlXmhnX-ak~1|ni+pvzD%?_s8g(SG0s&xwprvRG>{NU=DIeJN(yyEY~ZxgH@JLLUS zy8icy*Y+)X<{V3ly&g{u_z`G*mnWodQR%Nm;g%j*H9gO&ugs8N^K)KA`NY}rp1%LD ztP+<1mtTt^g~U00g~Y|+4Q!D~%4KIYHl9-})79DA)EM$V(As8&Xx`#fkzA*Q1&?M& z?UQ`<&Yi#gU|1c`wW6#oHVbrE+Nv$>gFau(*eAiuSOdwxcHp#*jd&pjO1jND8w0EP z8TH=tUg;2C`A_=A*3DmTO*V*n=IE5LW6e~#S1;S*vLCZ&?~;$*?0 z{(38e;{l`s{bGox4qxy?PGE-j#p+*M;$GWd$kxg%mEzj^$Mqc#``W`(Lq4--+dMwC zaEq6Cix*4LXX%YUr`=MnH26L#DsO^Skk>lf7Y}{kmUyrE$!yx>mG{#z&uZzGe+xqY z9Z1#N`iXa`>EDcf$K{%yv~h3z=(r-LaVdY)Q)O_|=CA@dPfh*^O0L+N0H8ee@%8of z|J@H)gOYoK3Cjsi#u(+s#S1N^n4A?^+%D@^ZZwg~Tl^C&-*5>MZO#Ou4J8|I;Ay;Q z`eQLC*n|WV7PfRq76g^ASW_i93(8Hnc*G1(kbXp!5T3m*cN& zD0RX;)X+%yBG-RW#R8FHCpm$mq)Hy$d9XycAew`^Q8J_3TDW(!`aLbvZtWxdZ77S`pPZC)0EmmOhZw|M~-_Q!31fIr=su7D{79qP1 zIg$zIsKv4qE}G!ztu0nG_~VpN!ha%Tl^k!QqZHGUcMlhQlbdw0#jrrpAv31$-G52n zy@)_)wq$Xep3u7tUmFUXCvc}CQ0x)tS=lNeiV!vn7Ps#?J!%JG`I)zIq6pJs?+tF3 zf1`yJoXc?637i{lAO{pmZg?Ta1PT`1Wu*bAlwwAB9F28YpT!NOlyOl!u(fS=&h;AZ zpH@=SQB=QxWK9pGGGLM)`=-km&q}_X(4+Pi;jx1fU{{q`LK7OZ0MnIMB@c?N&h%aE zJCPxTlqq}^!7l8F+T?ItV1fH_=DXI5WhY)#v4iSg3{eF4#v!K!1uMB1jyAUhCC`>Y zwHin@R4ruvI(P zZxJ?{^#!4dO^F3mSiQ`HrrHbvCg-Jv_P01Ceg8r2Fpy&U0_l8$n!=zkVAN_q5RiSP zU+<*US)}oWFFfFkRt2q-7`56C1k4MRn9D19mJ7)&4zMaKxT@9z1sMnW%beUcA4a5$ zwayKYio3ZI?6L>W4YOy@Ue(9&?Cr&jrO6yT+uMG>c-p%7W;$3JL^Omc8dM2B%(x{5 zDUletoD)i}B_vD|s9HYvil6z?U+%`|5H?go%JHYrDuIDj(ICcJe(~H@7jqCz9f#H6 z@rh+?LEZ)zY>aCZ4M3qIf$-554oJ?=GGSr!KQ=-bVa7&|IR1MT@aCO7*64F%5 zf+qEb9svo>x&0UYu4Q~fbm|wBfn)9R6@)|Y2}rzc=~0`2a6(oaIOp0zt00C>MT1)k z^1en0CoNWVr~?}md_IGNXQ2RtX-#5<$s;%ChIxtxw_Zy5<|EWz;cC3-`(klsrU?sM zB!|H53x}8HePOb^<@O@Oxn|1=gxe%|8Bam7Ym=LELW6U|E#9b-&u-Q#i#=;V5rC9$ z4O$Pp5L$Ebi-i;uvk23dC@<4pDcL5S!P+ct>Gf`xFClzq>ICj&$o94|%yn*<YF0fQNrc+JhtLyh0PNL{el6gEgxHFHf^UI;L?NUfVvW>rwx z7?7T_Mc66oNq?Dx!b8)DOJ_6KQ?~q&gCwWMg_7VrKgC*#$%K!wrZ+6A)aJrolUsrd z{Z#tP96;HK^%=rrPa#>_b+MwuVgU&rS^kps4_|lmoNIgF&#`zezsnEMFpSu2L_ADs z0mtg!o;C(vrv!sCy9s+cS1TLc;ygH4!p&Ntc|EgJ<~7&&L#DgfQ?^(^gM;x`%Yhe$ zdlrMdvO@7(bO?u;1O zMHl@}WK4q^3Qp*tzEdhV4PCyT!4aUz(iZfb`R3^xY0hreii>YD#dGv5>%WN9EpYIJ zs6L;;5unJ@mi3(Z*;kOMX6UAdL)6{M-~g3Lr|bBW_L|?~L@6Y|F8u;8DHyq&8E(Hh z9`L%RN398-58%#37#JYHba?G&Lo05hS+dZ421}J0vf$`50XMoEgqRl3op6!GQG>

!h;kxTOn21GB@XjLjn@HOZwFof+}NU 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 t)o7z>VKgm_rUm30do)K7n