Mercurial > sdl-ios-xcode
annotate include/SDL_mouse.h @ 4262:800f3cb78e45 SDL-1.2
Fixed strict aliasing (or inline asm?) issue.
Some versions of GCC need this fix or alpha blending is broken.
Fixes Bugzilla #648.
author | Ryan C. Gordon <icculus@icculus.org> |
---|---|
date | Tue, 29 Sep 2009 04:03:58 +0000 |
parents | 4c4113c2162c |
children |
rev | line source |
---|---|
0 | 1 /* |
2 SDL - Simple DirectMedia Layer | |
4159 | 3 Copyright (C) 1997-2009 Sam Lantinga |
0 | 4 |
5 This library is free software; you can redistribute it and/or | |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1046
diff
changeset
|
6 modify it under the terms of the GNU Lesser General Public |
0 | 7 License as published by the Free Software Foundation; either |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1046
diff
changeset
|
8 version 2.1 of the License, or (at your option) any later version. |
0 | 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 | |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1046
diff
changeset
|
13 Lesser General Public License for more details. |
0 | 14 |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1046
diff
changeset
|
15 You should have received a copy of the GNU Lesser General Public |
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1046
diff
changeset
|
16 License along with this library; if not, write to the Free Software |
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1046
diff
changeset
|
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
0 | 18 |
19 Sam Lantinga | |
251
b8688cfdc232
Updated the headers with the correct e-mail address
Sam Lantinga <slouken@libsdl.org>
parents:
0
diff
changeset
|
20 slouken@libsdl.org |
0 | 21 */ |
22 | |
4217 | 23 /** @file SDL_mouse.h |
24 * Include file for SDL mouse event handling | |
25 */ | |
0 | 26 |
27 #ifndef _SDL_mouse_h | |
28 #define _SDL_mouse_h | |
29 | |
1356
67114343400d
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
1330
diff
changeset
|
30 #include "SDL_stdinc.h" |
1358
c71e05b4dc2e
More header massaging... works great on Windows. ;-)
Sam Lantinga <slouken@libsdl.org>
parents:
1356
diff
changeset
|
31 #include "SDL_error.h" |
0 | 32 #include "SDL_video.h" |
33 | |
34 #include "begin_code.h" | |
35 /* Set up for C function definitions, even when using C++ */ | |
36 #ifdef __cplusplus | |
37 extern "C" { | |
38 #endif | |
39 | |
4217 | 40 typedef struct WMcursor WMcursor; /**< Implementation dependent */ |
911
04a403e4ccf5
Date: Mon, 3 May 2004 03:15:01 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset
|
41 typedef struct SDL_Cursor { |
4217 | 42 SDL_Rect area; /**< The area of the mouse cursor */ |
43 Sint16 hot_x, hot_y; /**< The "tip" of the cursor */ | |
44 Uint8 *data; /**< B/W cursor data */ | |
45 Uint8 *mask; /**< B/W cursor mask */ | |
46 Uint8 *save[2]; /**< Place to save cursor area */ | |
47 WMcursor *wm_cursor; /**< Window-manager cursor */ | |
0 | 48 } SDL_Cursor; |
49 | |
50 /* Function prototypes */ | |
4217 | 51 /** |
0 | 52 * Retrieve the current state of the mouse. |
53 * The current button state is returned as a button bitmask, which can | |
54 * be tested using the SDL_BUTTON(X) macros, and x and y are set to the | |
55 * current mouse cursor position. You can pass NULL for either x or y. | |
56 */ | |
337
9154ec9ca3d2
Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
57 extern DECLSPEC Uint8 SDLCALL SDL_GetMouseState(int *x, int *y); |
0 | 58 |
4217 | 59 /** |
0 | 60 * Retrieve the current state of the mouse. |
61 * The current button state is returned as a button bitmask, which can | |
62 * be tested using the SDL_BUTTON(X) macros, and x and y are set to the | |
63 * mouse deltas since the last call to SDL_GetRelativeMouseState(). | |
64 */ | |
337
9154ec9ca3d2
Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
65 extern DECLSPEC Uint8 SDLCALL SDL_GetRelativeMouseState(int *x, int *y); |
0 | 66 |
4217 | 67 /** |
0 | 68 * Set the position of the mouse cursor (generates a mouse motion event) |
69 */ | |
337
9154ec9ca3d2
Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
70 extern DECLSPEC void SDLCALL SDL_WarpMouse(Uint16 x, Uint16 y); |
0 | 71 |
4217 | 72 /** |
0 | 73 * Create a cursor using the specified data and mask (in MSB format). |
74 * The cursor width must be a multiple of 8 bits. | |
75 * | |
76 * The cursor is created in black and white according to the following: | |
77 * data mask resulting pixel on screen | |
78 * 0 1 White | |
79 * 1 1 Black | |
80 * 0 0 Transparent | |
81 * 1 0 Inverted color if possible, black if not. | |
82 * | |
83 * Cursors created with this function must be freed with SDL_FreeCursor(). | |
84 */ | |
337
9154ec9ca3d2
Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
85 extern DECLSPEC SDL_Cursor * SDLCALL SDL_CreateCursor |
0 | 86 (Uint8 *data, Uint8 *mask, int w, int h, int hot_x, int hot_y); |
87 | |
4217 | 88 /** |
0 | 89 * Set the currently active cursor to the specified one. |
90 * If the cursor is currently visible, the change will be immediately | |
91 * represented on the display. | |
92 */ | |
337
9154ec9ca3d2
Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
93 extern DECLSPEC void SDLCALL SDL_SetCursor(SDL_Cursor *cursor); |
0 | 94 |
4217 | 95 /** |
0 | 96 * Returns the currently active cursor. |
97 */ | |
337
9154ec9ca3d2
Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
98 extern DECLSPEC SDL_Cursor * SDLCALL SDL_GetCursor(void); |
0 | 99 |
4217 | 100 /** |
0 | 101 * Deallocates a cursor created with SDL_CreateCursor(). |
102 */ | |
337
9154ec9ca3d2
Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
103 extern DECLSPEC void SDLCALL SDL_FreeCursor(SDL_Cursor *cursor); |
0 | 104 |
4217 | 105 /** |
0 | 106 * Toggle whether or not the cursor is shown on the screen. |
107 * The cursor start off displayed, but can be turned off. | |
108 * SDL_ShowCursor() returns 1 if the cursor was being displayed | |
109 * before the call, or 0 if it was not. You can query the current | |
110 * state by passing a 'toggle' value of -1. | |
111 */ | |
337
9154ec9ca3d2
Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
112 extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle); |
0 | 113 |
4217 | 114 /*@{*/ |
115 /** Used as a mask when testing buttons in buttonstate | |
116 * Button 1: Left mouse button | |
117 * Button 2: Middle mouse button | |
118 * Button 3: Right mouse button | |
119 * Button 4: Mouse wheel up (may also be a real button) | |
120 * Button 5: Mouse wheel down (may also be a real button) | |
0 | 121 */ |
1330
450721ad5436
It's now possible to build SDL without any C runtime at all on Windows,
Sam Lantinga <slouken@libsdl.org>
parents:
1312
diff
changeset
|
122 #define SDL_BUTTON(X) (1 << ((X)-1)) |
0 | 123 #define SDL_BUTTON_LEFT 1 |
124 #define SDL_BUTTON_MIDDLE 2 | |
125 #define SDL_BUTTON_RIGHT 3 | |
451
24edec3cafe4
Added SDL_BUTTON_WHEELUP (4) and SDL_BUTTON_WHEELDOWN (5)
Sam Lantinga <slouken@libsdl.org>
parents:
337
diff
changeset
|
126 #define SDL_BUTTON_WHEELUP 4 |
24edec3cafe4
Added SDL_BUTTON_WHEELUP (4) and SDL_BUTTON_WHEELDOWN (5)
Sam Lantinga <slouken@libsdl.org>
parents:
337
diff
changeset
|
127 #define SDL_BUTTON_WHEELDOWN 5 |
4113 | 128 #define SDL_BUTTON_X1 6 |
129 #define SDL_BUTTON_X2 7 | |
0 | 130 #define SDL_BUTTON_LMASK SDL_BUTTON(SDL_BUTTON_LEFT) |
131 #define SDL_BUTTON_MMASK SDL_BUTTON(SDL_BUTTON_MIDDLE) | |
132 #define SDL_BUTTON_RMASK SDL_BUTTON(SDL_BUTTON_RIGHT) | |
4113 | 133 #define SDL_BUTTON_X1MASK SDL_BUTTON(SDL_BUTTON_X1) |
134 #define SDL_BUTTON_X2MASK SDL_BUTTON(SDL_BUTTON_X2) | |
4217 | 135 /*@}*/ |
0 | 136 |
137 /* Ends C function definitions when using C++ */ | |
138 #ifdef __cplusplus | |
139 } | |
140 #endif | |
141 #include "close_code.h" | |
142 | |
143 #endif /* _SDL_mouse_h */ |