src/events/SDL_touch_c.h
author Jim Grandpre
Tue, 25 May 2010 23:23:23 -0400
changeset 4640 f068a6dfc858
child 4641 49a97daea6ec
permissions -rw-r--r--
Added SDL_touch.c/SDL_touch_c.h as slightly modifeind SDL_mouse*. Made reads in touchSimp non-blocking.
     1 /*
     2     SDL - Simple DirectMedia Layer
     3     Copyright (C) 1997-2010 Sam Lantinga
     4 
     5     This library is free software; you can redistribute it and/or
     6     modify it under the terms of the GNU Lesser General Public
     7     License as published by the Free Software Foundation; either
     8     version 2.1 of the License, or (at your option) any later version.
     9 
    10     This library is distributed in the hope that it will be useful,
    11     but WITHOUT ANY WARRANTY; without even the implied warranty of
    12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    13     Lesser General Public License for more details.
    14 
    15     You should have received a copy of the GNU Lesser General Public
    16     License along with this library; if not, write to the Free Software
    17     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
    18 
    19     Sam Lantinga
    20     slouken@libsdl.org
    21 */
    22 #include "SDL_config.h"
    23 
    24 #ifndef _SDL_touch_c_h
    25 #define _SDL_touch_c_h
    26 
    27 typedef struct SDL_Touch SDL_Touch;
    28 
    29 
    30 struct SDL_Touch
    31 {
    32     /* Warp the touch to (x,y) */
    33     void (*WarpTouch) (SDL_Touch * touch, SDL_Window * window, int x,
    34                        int y);
    35 
    36     /* Free the touch when it's time */
    37     void (*FreeTouch) (SDL_Touch * touch);
    38 
    39     /* data common for tablets */
    40     int pressure;
    41     int pressure_max;
    42     int pressure_min;
    43     int tilt;                   /* for future use */
    44     int rotation;               /* for future use */
    45     int total_ends;
    46     int current_end;
    47 
    48     /* Data common to all touch */
    49     int id;
    50     SDL_Window *focus;
    51     int which;
    52     int x;
    53     int y;
    54     int z;                      /* for future use */
    55     int xdelta;
    56     int ydelta;
    57     int last_x, last_y;         /* the last reported x and y coordinates */
    58     char *name;
    59     Uint8 buttonstate;
    60     SDL_bool relative_mode;
    61     SDL_bool proximity;
    62     SDL_bool flush_motion;
    63 
    64     SDL_Cursor *cursors;
    65     SDL_Cursor *def_cursor;
    66     SDL_Cursor *cur_cursor;
    67     SDL_bool cursor_shown;
    68 
    69     void *driverdata;
    70 };
    71 
    72 /* Initialize the touch subsystem */
    73 extern int SDL_TouchInit(void);
    74 
    75 /* Get the touch at an index */
    76 extern SDL_Touch *SDL_GetTouch(int index);
    77 
    78 /* Add a touch, possibly reattaching at a particular index (or -1),
    79    returning the index of the touch, or -1 if there was an error.
    80  */
    81 extern int SDL_AddTouch(const SDL_Touch * touch, char *name,
    82                         int pressure_max, int pressure_min, int ends);
    83 
    84 /* Remove a touch at an index, clearing the slot for later */
    85 extern void SDL_DelTouch(int index);
    86 
    87 /* Clear the button state of a touch at an index */
    88 extern void SDL_ResetTouch(int index);
    89 
    90 /* Set the touch focus window */
    91 extern void SDL_SetTouchFocus(int id, SDL_Window * window);
    92 
    93 /* Send a touch motion event for a touch */
    94 extern int SDL_SendTouchMotion(int id, int relative, int x, int y, int z);
    95 
    96 /* Send a touch button event for a touch */
    97 extern int SDL_SendTouchButton(int id, Uint8 state, Uint8 button);
    98 
    99 /* Send a touch wheel event for a touch */
   100 extern int SDL_SendTouchWheel(int id, int x, int y);
   101 
   102 /* Send a proximity event for a touch */
   103 extern int SDL_SendProximity(int id, int x, int y, int type);
   104 
   105 /* Shutdown the touch subsystem */
   106 extern void SDL_TouchQuit(void);
   107 
   108 /* FIXME: Where do these functions go in this header? */
   109 extern void SDL_ChangeEnd(int id, int end);
   110 
   111 #endif /* _SDL_touch_c_h */
   112 
   113 /* vi: set ts=4 sw=4 expandtab: */