|
|
1.1 root 1: /*
2: SDL - Simple DirectMedia Layer
1.1.1.2 ! root 3: Copyright (C) 1997-2006 Sam Lantinga
1.1 root 4:
5: This library is free software; you can redistribute it and/or
1.1.1.2 ! root 6: modify it under the terms of the GNU Lesser General Public
1.1 root 7: License as published by the Free Software Foundation; either
1.1.1.2 ! root 8: version 2.1 of the License, or (at your option) any later version.
1.1 root 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
1.1.1.2 ! root 13: Lesser General Public License for more details.
1.1 root 14:
1.1.1.2 ! root 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
1.1 root 18:
19: Sam Lantinga
20: [email protected]
21: */
22:
23: /* Include file for SDL mouse event handling */
24:
25: #ifndef _SDL_mouse_h
26: #define _SDL_mouse_h
27:
1.1.1.2 ! root 28: #include "SDL_stdinc.h"
! 29: #include "SDL_error.h"
1.1 root 30: #include "SDL_video.h"
31:
32: #include "begin_code.h"
33: /* Set up for C function definitions, even when using C++ */
34: #ifdef __cplusplus
35: extern "C" {
36: #endif
37:
38: typedef struct WMcursor WMcursor; /* Implementation dependent */
39: typedef struct SDL_Cursor {
40: SDL_Rect area; /* The area of the mouse cursor */
41: Sint16 hot_x, hot_y; /* The "tip" of the cursor */
42: Uint8 *data; /* B/W cursor data */
43: Uint8 *mask; /* B/W cursor mask */
44: Uint8 *save[2]; /* Place to save cursor area */
45: WMcursor *wm_cursor; /* Window-manager cursor */
46: } SDL_Cursor;
47:
48: /* Function prototypes */
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: * current mouse cursor position. You can pass NULL for either x or y.
54: */
55: extern DECLSPEC Uint8 SDLCALL SDL_GetMouseState(int *x, int *y);
56:
57: /*
58: * Retrieve the current state of the mouse.
59: * The current button state is returned as a button bitmask, which can
60: * be tested using the SDL_BUTTON(X) macros, and x and y are set to the
61: * mouse deltas since the last call to SDL_GetRelativeMouseState().
62: */
63: extern DECLSPEC Uint8 SDLCALL SDL_GetRelativeMouseState(int *x, int *y);
64:
65: /*
66: * Set the position of the mouse cursor (generates a mouse motion event)
67: */
68: extern DECLSPEC void SDLCALL SDL_WarpMouse(Uint16 x, Uint16 y);
69:
70: /*
71: * Create a cursor using the specified data and mask (in MSB format).
72: * The cursor width must be a multiple of 8 bits.
73: *
74: * The cursor is created in black and white according to the following:
75: * data mask resulting pixel on screen
76: * 0 1 White
77: * 1 1 Black
78: * 0 0 Transparent
79: * 1 0 Inverted color if possible, black if not.
80: *
81: * Cursors created with this function must be freed with SDL_FreeCursor().
82: */
83: extern DECLSPEC SDL_Cursor * SDLCALL SDL_CreateCursor
84: (Uint8 *data, Uint8 *mask, int w, int h, int hot_x, int hot_y);
85:
86: /*
87: * Set the currently active cursor to the specified one.
88: * If the cursor is currently visible, the change will be immediately
89: * represented on the display.
90: */
91: extern DECLSPEC void SDLCALL SDL_SetCursor(SDL_Cursor *cursor);
92:
93: /*
94: * Returns the currently active cursor.
95: */
96: extern DECLSPEC SDL_Cursor * SDLCALL SDL_GetCursor(void);
97:
98: /*
99: * Deallocates a cursor created with SDL_CreateCursor().
100: */
101: extern DECLSPEC void SDLCALL SDL_FreeCursor(SDL_Cursor *cursor);
102:
103: /*
104: * Toggle whether or not the cursor is shown on the screen.
105: * The cursor start off displayed, but can be turned off.
106: * SDL_ShowCursor() returns 1 if the cursor was being displayed
107: * before the call, or 0 if it was not. You can query the current
108: * state by passing a 'toggle' value of -1.
109: */
110: extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle);
111:
112: /* Used as a mask when testing buttons in buttonstate
113: Button 1: Left mouse button
114: Button 2: Middle mouse button
115: Button 3: Right mouse button
116: Button 4: Mouse wheel up (may also be a real button)
117: Button 5: Mouse wheel down (may also be a real button)
118: */
1.1.1.2 ! root 119: #define SDL_BUTTON(X) (1 << ((X)-1))
1.1 root 120: #define SDL_BUTTON_LEFT 1
121: #define SDL_BUTTON_MIDDLE 2
122: #define SDL_BUTTON_RIGHT 3
123: #define SDL_BUTTON_WHEELUP 4
124: #define SDL_BUTTON_WHEELDOWN 5
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 */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.