/* SDL - Simple DirectMedia Layer Copyright (C) 1997-2006 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Sam Lantinga slouken@libsdl.org */ module sdl.c.sdl_mouse; /* Include file for SDL mouse event handling */ public { import sdl.c.sdl_stdinc; import sdl.c.sdl_error; import sdl.c.sdl_video; } extern(C): struct SDL_Cursor { SDL_Rect area; /* The area of the mouse cursor */ Sint16 hot_x, hot_y; /* The "tip" of the cursor */ Uint8 *data; /* B/W cursor data */ Uint8 *mask; /* B/W cursor mask */ Uint8 *save[2]; /* Place to save cursor area */ // WMCursor *wm_cursor; void *wm_cursor; /* Window-manager cursor */ } /* Function prototypes */ /* * Retrieve the current state of the mouse. * The current button state is returned as a button bitmask, which can * be tested using the SDL_BUTTON(X) macros, and x and y are set to the * current mouse cursor position. You can pass NULL for either x or y. */ Uint8 SDL_GetMouseState(int *x, int *y); /* * Retrieve the current state of the mouse. * The current button state is returned as a button bitmask, which can * be tested using the SDL_BUTTON(X) macros, and x and y are set to the * mouse deltas since the last call to SDL_GetRelativeMouseState(). */ Uint8 SDL_GetRelativeMouseState(int *x, int *y); /* * Set the position of the mouse cursor (generates a mouse motion event) */ void SDL_WarpMouse(Uint16 x, Uint16 y); /* * Create a cursor using the specified data and mask (in MSB format). * The cursor width must be a multiple of 8 bits. * * The cursor is created in black and white according to the following: * data mask resulting pixel on screen * 0 1 White * 1 1 Black * 0 0 Transparent * 1 0 Inverted color if possible, black if not. * * Cursors created with this function must be freed with SDL_FreeCursor(). */ SDL_Cursor * SDL_CreateCursor (Uint8 *data, Uint8 *mask, int w, int h, int hot_x, int hot_y); /* * Set the currently active cursor to the specified one. * If the cursor is currently visible, the change will be immediately * represented on the display. */ void SDL_SetCursor(SDL_Cursor *cursor); /* * Returns the currently active cursor. */ SDL_Cursor * SDL_GetCursor(); /* * Deallocates a cursor created with SDL_CreateCursor(). */ void SDL_FreeCursor(SDL_Cursor *cursor); /* * Toggle whether or not the cursor is shown on the screen. * The cursor start off displayed, but can be turned off. * SDL_ShowCursor() returns 1 if the cursor was being displayed * before the call, or 0 if it was not. You can query the current * state by passing a 'toggle' value of -1. */ int SDL_ShowCursor(int toggle); /* Used as a mask when testing buttons in buttonstate Button 1: Left mouse button Button 2: Middle mouse button Button 3: Right mouse button Button 4: Mouse wheel up (may also be a real button) Button 5: Mouse wheel down (may also be a real button) */ uint SDL_BUTTON(uint X) { return (1 << ((X)-1)); } const { uint SDL_BUTTON_LEF = 1; uint SDL_BUTTON_MIDDLE = 2; uint SDL_BUTTON_RIGHT = 3; uint SDL_BUTTON_WHEELUP = 4; uint SDL_BUTTON_WHEELDOWN = 5; uint SDL_BUTTON_X1 = 6; uint SDL_BUTTON_X2 = 7; uint SDL_BUTTON_LMASK = SDL_BUTTON(SDL_BUTTON_LEF); uint SDL_BUTTON_MMASK = SDL_BUTTON(SDL_BUTTON_MIDDLE); uint SDL_BUTTON_RMASK = SDL_BUTTON(SDL_BUTTON_RIGHT); uint SDL_BUTTON_X1MASK = SDL_BUTTON(SDL_BUTTON_X1); uint SDL_BUTTON_X2MASK = SDL_BUTTON(SDL_BUTTON_X2); }