text: /*******************************************************************************************
  *
  *   raylib [core] example - Gestures Detection (adapted for HTML5 platform)
  *
  *   This example has been created using raylib 1.4 (www.raylib.com)
  *   raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
  *
  *   Copyright (c) 2015 Ramon Santamaria (@raysan5)
  *
  ********************************************************************************************/
  
  #include "raylib.h"
  #include <string.h>
  
  #if defined(PLATFORM_WEB)
      #include <emscripten/emscripten.h>
  #endif
  
  #if defined(PLATFORM_ANDROID)
      #include "android_native_app_glue.h"
  #endif
  
  #define MAX_GESTURE_STRINGS   20
  
  //----------------------------------------------------------------------------------
  // Global Variables Definition
  //----------------------------------------------------------------------------------
  int screenWidth = 800;
  int screenHeight = 450;
  
  Vector2 touchPosition;
  Rectangle touchArea;
  
  int gesturesCount = 0;
  char gestureStrings[MAX_GESTURE_STRINGS][32];
  
  int currentGesture = GESTURE_NONE;
  int lastGesture = GESTURE_NONE;
  
  //----------------------------------------------------------------------------------
  // Module Functions Declaration
  //----------------------------------------------------------------------------------
  void UpdateDrawFrame(void);     // Update and Draw one frame
  
  //----------------------------------------------------------------------------------
  // Main Enry Point
  //----------------------------------------------------------------------------------
  #if defined(PLATFORM_ANDROID)
  void android_main(struct android_app *app) 
  #else
  int main(void)
  #endif
  {
      // Initialization
      //--------------------------------------------------------------------------------------
  #if defined(PLATFORM_ANDROID)
      InitWindow(screenWidth, screenHeight, app);
  #else
      InitWindow(screenWidth, screenHeight, "raylib [core] example - Gestures Detection");
  #endif
  
      touchPosition = (Vector2){ 0, 0 };
      touchArea = (Rectangle){ 220, 10, screenWidth - 230, screenHeight - 20 };
  	
  	//SetGesturesEnabled(0b0000000000001001);   // Enable only some gestures to be detected
  	
  #if defined(PLATFORM_WEB)
      emscripten_set_main_loop(UpdateDrawFrame, 0, 1);
  #else
      SetTargetFPS(60);   // Set our game to run at 60 frames-per-second
      //--------------------------------------------------------------------------------------
      
      // Main game loop
      while (!WindowShouldClose())    // Detect window close button or ESC key
      {
          UpdateDrawFrame();
      }
  #endif
  
      // De-Initialization
      //--------------------------------------------------------------------------------------
      CloseWindow();        // Close window and OpenGL context
      //--------------------------------------------------------------------------------------
  #if !defined(PLATFORM_ANDROID)
      return 0;
  #endif
  }
  
  //----------------------------------------------------------------------------------
  // Module Functions Definition
  //----------------------------------------------------------------------------------
  void UpdateDrawFrame(void)
  {
      // Update
          //----------------------------------------------------------------------------------
          lastGesture = currentGesture;
          currentGesture = GetGestureDetected();
          touchPosition = GetTouchPosition(0);
  
          if (CheckCollisionPointRec(touchPosition, touchArea) && (currentGesture != GESTURE_NONE))
          {
              if (currentGesture != lastGesture)
              {
                  // Store gesture string
                  switch (currentGesture)
                  {
                      case GESTURE_TAP: strcpy(gestureStrings[gesturesCount], "GESTURE TAP"); break;
                      case GESTURE_DOUBLETAP: strcpy(gestureStrings[gesturesCount], "GESTURE DOUBLETAP"); break;
                      case GESTURE_HOLD: strcpy(gestureStrings[gesturesCount], "GESTURE HOLD"); break;
                      case GESTURE_DRAG: strcpy(gestureStrings[gesturesCount], "GESTURE DRAG"); break;
                      case GESTURE_SWIPE_RIGHT: strcpy(gestureStrings[gesturesCount], "GESTURE SWIPE RIGHT"); break;
                      case GESTURE_SWIPE_LEFT: strcpy(gestureStrings[gesturesCount], "GESTURE SWIPE LEFT"); break;
                      case GESTURE_SWIPE_UP: strcpy(gestureStrings[gesturesCount], "GESTURE SWIPE UP"); break;
                      case GESTURE_SWIPE_DOWN: strcpy(gestureStrings[gesturesCount], "GESTURE SWIPE DOWN"); break;
                      case GESTURE_PINCH_IN: strcpy(gestureStrings[gesturesCount], "GESTURE PINCH IN"); break;
                      case GESTURE_PINCH_OUT: strcpy(gestureStrings[gesturesCount], "GESTURE PINCH OUT"); break;
                      default: break;
                  }
                  
                  gesturesCount++;
                  
                  // Reset gestures strings
                  if (gesturesCount >= MAX_GESTURE_STRINGS)
                  {
                      for (int i = 0; i < MAX_GESTURE_STRINGS; i++) strcpy(gestureStrings[i], "\0");
                      
                      gesturesCount = 0;
                  }
              }
          }
          //----------------------------------------------------------------------------------
  
          // Draw
          //----------------------------------------------------------------------------------
          BeginDrawing();
  
              ClearBackground(RAYWHITE);
              
              DrawRectangleRec(touchArea, GRAY);
              DrawRectangle(225, 15, screenWidth - 240, screenHeight - 30, RAYWHITE);
              
              DrawText("GESTURES TEST AREA", screenWidth - 270, screenHeight - 40, 20, Fade(GRAY, 0.5f));
              
              for (int i = 0; i < gesturesCount; i++)
              {
                  if (i%2 == 0) DrawRectangle(10, 30 + 20*i, 200, 20, Fade(LIGHTGRAY, 0.5f));
                  else DrawRectangle(10, 30 + 20*i, 200, 20, Fade(LIGHTGRAY, 0.3f));
                  
                  if (i < gesturesCount - 1) DrawText(gestureStrings[i], 35, 36 + 20*i, 10, DARKGRAY);
                  else DrawText(gestureStrings[i], 35, 36 + 20*i, 10, MAROON);
              }
              
              DrawRectangleLines(10, 29, 200, screenHeight - 50, GRAY);
              DrawText("DETECTED GESTURES", 50, 15, 10, GRAY);
              
              if (currentGesture != GESTURE_NONE) DrawCircleV(touchPosition, 30, MAROON);
              
          EndDrawing();
          //----------------------------------------------------------------------------------
  }