Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /*
  2.     SDL - Simple DirectMedia Layer
  3.     Copyright (C) 1997, 1998, 1999, 2000, 2001  Sam Lantinga
  4.  
  5.     This library is free software; you can redistribute it and/or
  6.     modify it under the terms of the GNU Library General Public
  7.     License as published by the Free Software Foundation; either
  8.     version 2 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.     Library General Public License for more details.
  14.  
  15.     You should have received a copy of the GNU Library General Public
  16.     License along with this library; if not, write to the Free
  17.     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  18.  
  19.     Sam Lantinga
  20.     slouken@devolution.com
  21. */
  22.  
  23. #ifdef SAVE_RCSID
  24. static char rcsid =
  25.  "@(#) $Id: SDL_mouse.h,v 1.2 2001/04/26 16:50:17 hercules Exp $";
  26. #endif
  27.  
  28. /* Include file for SDL mouse event handling */
  29.  
  30. #ifndef _SDL_mouse_h
  31. #define _SDL_mouse_h
  32.  
  33. #include "SDL_types.h"
  34. #include "SDL_video.h"
  35.  
  36. #include "begin_code.h"
  37. /* Set up for C function definitions, even when using C++ */
  38. #ifdef __cplusplus
  39. extern "C" {
  40. #endif
  41.  
  42. typedef struct WMcursor WMcursor;       /* Implementation dependent */
  43. typedef struct {
  44.         SDL_Rect area;                  /* The area of the mouse cursor */
  45.         Sint16 hot_x, hot_y;            /* The "tip" of the cursor */
  46.         Uint8 *data;                    /* B/W cursor data */
  47.         Uint8 *mask;                    /* B/W cursor mask */
  48.         Uint8 *save[2];                 /* Place to save cursor area */
  49.         WMcursor *wm_cursor;            /* Window-manager cursor */
  50. } SDL_Cursor;
  51.  
  52. /* Function prototypes */
  53. /*
  54.  * Retrieve the current state of the mouse.
  55.  * The current button state is returned as a button bitmask, which can
  56.  * be tested using the SDL_BUTTON(X) macros, and x and y are set to the
  57.  * current mouse cursor position.  You can pass NULL for either x or y.
  58.  */
  59. extern DECLSPEC Uint8 SDL_GetMouseState(int *x, int *y);
  60.  
  61. /*
  62.  * Retrieve the current state of the mouse.
  63.  * The current button state is returned as a button bitmask, which can
  64.  * be tested using the SDL_BUTTON(X) macros, and x and y are set to the
  65.  * mouse deltas since the last call to SDL_GetRelativeMouseState().
  66.  */
  67. extern DECLSPEC Uint8 SDL_GetRelativeMouseState(int *x, int *y);
  68.  
  69. /*
  70.  * Set the position of the mouse cursor (generates a mouse motion event)
  71.  */
  72. extern DECLSPEC void SDL_WarpMouse(Uint16 x, Uint16 y);
  73.  
  74. /*
  75.  * Create a cursor using the specified data and mask (in MSB format).
  76.  * The cursor width must be a multiple of 8 bits.
  77.  *
  78.  * The cursor is created in black and white according to the following:
  79.  * data  mask    resulting pixel on screen
  80.  *  0     1       White
  81.  *  1     1       Black
  82.  *  0     0       Transparent
  83.  *  1     0       Inverted color if possible, black if not.
  84.  *
  85.  * Cursors created with this function must be freed with SDL_FreeCursor().
  86.  */
  87. extern DECLSPEC SDL_Cursor *SDL_CreateCursor
  88.                 (Uint8 *data, Uint8 *mask, int w, int h, int hot_x, int hot_y);
  89.  
  90. /*
  91.  * Set the currently active cursor to the specified one.
  92.  * If the cursor is currently visible, the change will be immediately
  93.  * represented on the display.
  94.  */
  95. extern DECLSPEC void SDL_SetCursor(SDL_Cursor *cursor);
  96.  
  97. /*
  98.  * Returns the currently active cursor.
  99.  */
  100. extern DECLSPEC SDL_Cursor * SDL_GetCursor(void);
  101.  
  102. /*
  103.  * Deallocates a cursor created with SDL_CreateCursor().
  104.  */
  105. extern DECLSPEC void SDL_FreeCursor(SDL_Cursor *cursor);
  106.  
  107. /*
  108.  * Toggle whether or not the cursor is shown on the screen.
  109.  * The cursor start off displayed, but can be turned off.
  110.  * SDL_ShowCursor() returns 1 if the cursor was being displayed
  111.  * before the call, or 0 if it was not.  You can query the current
  112.  * state by passing a 'toggle' value of -1.
  113.  */
  114. extern DECLSPEC int SDL_ShowCursor(int toggle);
  115.  
  116. /* Used as a mask when testing buttons in buttonstate
  117.    Button 1:    Left mouse button
  118.    Button 2:    Middle mouse button
  119.    Button 3:    Right mouse button
  120.  */
  121. #define SDL_BUTTON(X)           (SDL_PRESSED<<(X-1))
  122. #define SDL_BUTTON_LEFT         1
  123. #define SDL_BUTTON_MIDDLE       2
  124. #define SDL_BUTTON_RIGHT        3
  125. #define SDL_BUTTON_LMASK        SDL_BUTTON(SDL_BUTTON_LEFT)
  126. #define SDL_BUTTON_MMASK        SDL_BUTTON(SDL_BUTTON_MIDDLE)
  127. #define SDL_BUTTON_RMASK        SDL_BUTTON(SDL_BUTTON_RIGHT)
  128.  
  129.  
  130. /* Ends C function definitions when using C++ */
  131. #ifdef __cplusplus
  132. }
  133. #endif
  134. #include "close_code.h"
  135.  
  136. #endif /* _SDL_mouse_h */
  137.