From c28386a093d6c22b23395c68a47fd4b9eec22581 Mon Sep 17 00:00:00 2001
From: Sylvain <[EMAIL REDACTED]>
Date: Sat, 17 Dec 2022 17:51:58 +0100
Subject: [PATCH] Remove the need of libtest
---
test/testgesture.c | 76 ++++++++++++++++++++++++++++------------------
1 file changed, 46 insertions(+), 30 deletions(-)
diff --git a/test/testgesture.c b/test/testgesture.c
index 1584ee3..058fb2e 100644
--- a/test/testgesture.c
+++ b/test/testgesture.c
@@ -10,11 +10,14 @@
freely.
*/
-/* Usage:
- * Spacebar to begin recording a gesture on all touches.
- * s to save all touches into "./gestureSave"
- * l to load all touches from "./gestureSave"
- */
+
+static const char *usage = "\n\
+ i: info about devices \n\
+ r: record a Gesture.(press 'r' before each new record)\n\
+ s: save gestures into 'gestureSave'file\n\
+ l: load 'gestureSave' file\n\
+ v: enable virtual touch. Touch events are synthetized when Mouse events occur\n\
+";
#if defined(TESTGESTURE_SDL3)
#include <SDL3/SDL.h>
@@ -41,11 +44,13 @@
#define VERBOSE 0
-static SDLTest_CommonState *state;
static SDL_Event events[EVENT_BUF_SIZE];
static int eventWrite;
static int colors[7] = { 0xFF, 0xFF00, 0xFF0000, 0xFFFF00, 0x00FFFF, 0xFF00FF, 0xFFFFFF };
static int quitting = 0;
+static SDL_Window *g_window = NULL;
+static SDL_Renderer *g_renderer = NULL;
+
typedef struct
{
@@ -187,15 +192,22 @@ loop(void)
int i;
while (SDL_PollEvent(&u_event.event)) {
- SDLTest_CommonEvent(state, &u_event.event, &quitting);
/* Record _all_ events */
events[eventWrite & (EVENT_BUF_SIZE - 1)] = u_event.event;
eventWrite++;
switch (u_event.event.type) {
+ case SDL_QUIT:
+ quitting = 1;
+ break;
+
case SDL_KEYDOWN:
switch (u_event.event.key.keysym.sym) {
+ case SDLK_ESCAPE:
+ quitting = 1;
+ break;
+
case SDLK_i:
{
for (i = 0; i < SDL_GetNumTouchDevices(); ++i) {
@@ -210,7 +222,7 @@ loop(void)
break;
}
- case SDLK_SPACE:
+ case SDLK_r:
Gesture_RecordGesture(-1);
break;
@@ -222,9 +234,20 @@ loop(void)
case SDLK_l:
stream = SDL_RWFromFile("gestureSave", "r");
- SDL_Log("Loaded: %i", Gesture_LoadDollarTemplates(-1, stream));
- SDL_RWclose(stream);
+ if (stream) {
+ SDL_Log("Loaded: %i", Gesture_LoadDollarTemplates(-1, stream));
+ SDL_RWclose(stream);
+ } else {
+ SDL_Log("Cannot load 'gestureSave' file");
+ }
+ break;
+
+ case SDLK_v:
+ /* Transform mouse event to touch events for testing without a touch screen */
+ SDL_SetHint(SDL_HINT_MOUSE_TOUCH_EVENTS, "1");
+ SDL_Log("SDL_HINT_MOUSE_TOUCH_EVENTS enabled");
break;
+
}
break;
@@ -270,11 +293,7 @@ loop(void)
}
}
- for (i = 0; i < state->num_windows; ++i) {
- if (state->windows[i]) {
- DrawScreen(state->windows[i]);
- }
- }
+ DrawScreen(g_window);
#ifdef __EMSCRIPTEN__
if (quitting) {
@@ -285,32 +304,29 @@ loop(void)
int main(int argc, char *argv[])
{
- state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO);
- if (state == NULL) {
- return 1;
- }
- Gesture_Init();
+ SDL_Log("%s", usage);
- state->window_title = "Gesture Test";
- state->window_w = WIDTH;
- state->window_h = HEIGHT;
- state->skip_renderer = SDL_TRUE;
-
- if (!SDLTest_CommonDefaultArgs(state, argc, argv) || !SDLTest_CommonInit(state)) {
- Gesture_Quit();
- SDLTest_CommonQuit(state);
- return 1;
+ if (SDL_CreateWindowAndRenderer(WIDTH, HEIGHT, 0, &g_window, &g_renderer) < 0) {
+ return -1;
}
+ Gesture_Init();
+
#ifdef __EMSCRIPTEN__
emscripten_set_main_loop(loop, 0, 1);
#else
while (!quitting) {
loop();
+ SDL_Delay(20);
}
#endif
+
Gesture_Quit();
- SDLTest_CommonQuit(state);
+
+ SDL_DestroyRenderer(g_renderer);
+ SDL_DestroyWindow(g_window);
+
+
return 0;
}