comparison touchTest/Iphone Test/touchTestIPhone2/touchTestIPhone/include/SDL_mouse.h @ 4677:31607094315c

Added Iphone project. Iphone multi-touch is now functional.
author jimtla
date Sat, 31 Jul 2010 01:24:50 +0400
parents
children
comparison
equal deleted inserted replaced
4676:99b4560b7aa1 4677:31607094315c
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
23 /**
24 * \file SDL_mouse.h
25 *
26 * Include file for SDL mouse event handling.
27 *
28 * Please note that this ONLY discusses "mice" with the notion of the
29 * desktop GUI. You (usually) have one system cursor, and the OS hides
30 * the hardware details from you. If you plug in 10 mice, all ten move that
31 * one cursor. For many applications and games, this is perfect, and this
32 * API has served hundreds of SDL programs well since its birth.
33 *
34 * It's not the whole picture, though. If you want more lowlevel control,
35 * SDL offers a different API, that gives you visibility into each input
36 * device, multi-touch interfaces, etc.
37 *
38 * Those two APIs are incompatible, and you usually should not use both
39 * at the same time. But for legacy purposes, this API refers to a "mouse"
40 * when it actually means the system pointer and not a physical mouse.
41 *
42 * The other API is in SDL_input.h
43 */
44
45 #ifndef _SDL_mouse_h
46 #define _SDL_mouse_h
47
48 #include "SDL_stdinc.h"
49 #include "SDL_error.h"
50 #include "SDL_video.h"
51
52 #include "begin_code.h"
53 /* Set up for C function definitions, even when using C++ */
54 #ifdef __cplusplus
55 /* *INDENT-OFF* */
56 extern "C" {
57 /* *INDENT-ON* */
58 #endif
59
60 typedef struct SDL_Cursor SDL_Cursor; /* Implementation dependent */
61
62
63 /* Function prototypes */
64
65 /**
66 * \brief Get the window which currently has mouse focus.
67 */
68 extern DECLSPEC SDL_Window * SDLCALL SDL_GetMouseFocus(void);
69
70 /**
71 * \brief Retrieve the current state of the mouse.
72 *
73 * The current button state is returned as a button bitmask, which can
74 * be tested using the SDL_BUTTON(X) macros, and x and y are set to the
75 * mouse cursor position relative to the focus window for the currently
76 * selected mouse. You can pass NULL for either x or y.
77 */
78 extern DECLSPEC Uint8 SDLCALL SDL_GetMouseState(int *x, int *y);
79
80 /**
81 * \brief Retrieve the relative state of the mouse.
82 *
83 * The current button state is returned as a button bitmask, which can
84 * be tested using the SDL_BUTTON(X) macros, and x and y are set to the
85 * mouse deltas since the last call to SDL_GetRelativeMouseState().
86 */
87 extern DECLSPEC Uint8 SDLCALL SDL_GetRelativeMouseState(int *x, int *y);
88
89 /**
90 * \brief Moves the mouse to the given position within the window.
91 *
92 * \param window The window to move the mouse into, or NULL for the current mouse focus
93 * \param x The x coordinate within the window
94 * \param y The y coordinate within the window
95 *
96 * \note This function generates a mouse motion event
97 */
98 extern DECLSPEC void SDLCALL SDL_WarpMouseInWindow(SDL_Window * window,
99 int x, int y);
100
101 /**
102 * \brief Set relative mouse mode.
103 *
104 * \param enabled Whether or not to enable relative mode
105 *
106 * \return 0 on success, or -1 if relative mode is not supported.
107 *
108 * While the mouse is in relative mode, the cursor is hidden, and the
109 * driver will try to report continuous motion in the current window.
110 * Only relative motion events will be delivered, the mouse position
111 * will not change.
112 *
113 * \note This function will flush any pending mouse motion.
114 *
115 * \sa SDL_GetRelativeMouseMode()
116 */
117 extern DECLSPEC int SDLCALL SDL_SetRelativeMouseMode(SDL_bool enabled);
118
119 /**
120 * \brief Query whether relative mouse mode is enabled.
121 *
122 * \sa SDL_SetRelativeMouseMode()
123 */
124 extern DECLSPEC SDL_bool SDLCALL SDL_GetRelativeMouseMode(void);
125
126 /**
127 * \brief Create a cursor, using the specified bitmap data and
128 * mask (in MSB format).
129 *
130 * The cursor width must be a multiple of 8 bits.
131 *
132 * The cursor is created in black and white according to the following:
133 * <table>
134 * <tr><td> data </td><td> mask </td><td> resulting pixel on screen </td></tr>
135 * <tr><td> 0 </td><td> 1 </td><td> White </td></tr>
136 * <tr><td> 1 </td><td> 1 </td><td> Black </td></tr>
137 * <tr><td> 0 </td><td> 0 </td><td> Transparent </td></tr>
138 * <tr><td> 1 </td><td> 0 </td><td> Inverted color if possible, black
139 * if not. </td></tr>
140 * </table>
141 *
142 * \sa SDL_FreeCursor()
143 */
144 extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateCursor(const Uint8 * data,
145 const Uint8 * mask,
146 int w, int h, int hot_x,
147 int hot_y);
148
149 /**
150 * \brief Set the active cursor.
151 */
152 extern DECLSPEC void SDLCALL SDL_SetCursor(SDL_Cursor * cursor);
153
154 /**
155 * \brief Return the active cursor.
156 */
157 extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetCursor(void);
158
159 /**
160 * \brief Frees a cursor created with SDL_CreateCursor().
161 *
162 * \sa SDL_CreateCursor()
163 */
164 extern DECLSPEC void SDLCALL SDL_FreeCursor(SDL_Cursor * cursor);
165
166 /**
167 * \brief Toggle whether or not the cursor is shown.
168 *
169 * \param toggle 1 to show the cursor, 0 to hide it, -1 to query the current
170 * state.
171 *
172 * \return 1 if the cursor is shown, or 0 if the cursor is hidden.
173 */
174 extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle);
175
176 /**
177 * Used as a mask when testing buttons in buttonstate.
178 * - Button 1: Left mouse button
179 * - Button 2: Middle mouse button
180 * - Button 3: Right mouse button
181 */
182 #define SDL_BUTTON(X) (1 << ((X)-1))
183 #define SDL_BUTTON_LEFT 1
184 #define SDL_BUTTON_MIDDLE 2
185 #define SDL_BUTTON_RIGHT 3
186 #define SDL_BUTTON_X1 4
187 #define SDL_BUTTON_X2 5
188 #define SDL_BUTTON_LMASK SDL_BUTTON(SDL_BUTTON_LEFT)
189 #define SDL_BUTTON_MMASK SDL_BUTTON(SDL_BUTTON_MIDDLE)
190 #define SDL_BUTTON_RMASK SDL_BUTTON(SDL_BUTTON_RIGHT)
191 #define SDL_BUTTON_X1MASK SDL_BUTTON(SDL_BUTTON_X1)
192 #define SDL_BUTTON_X2MASK SDL_BUTTON(SDL_BUTTON_X2)
193
194
195 /* Ends C function definitions when using C++ */
196 #ifdef __cplusplus
197 /* *INDENT-OFF* */
198 }
199 /* *INDENT-ON* */
200 #endif
201 #include "close_code.h"
202
203 #endif /* _SDL_mouse_h */
204
205 /* vi: set ts=4 sw=4 expandtab: */