SDL_mouse.h
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:4k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

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