diff src/events/SDL_mouse.c @ 1662:782fd950bd46 SDL-1.3

Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API. WARNING: None of the video drivers have been updated for the new API yet! The API is still under design and very fluid. The code is now run through a consistent indent format: indent -i4 -nut -nsc -br -ce The headers are being converted to automatically generate doxygen documentation.
author Sam Lantinga <slouken@libsdl.org>
date Sun, 28 May 2006 13:04:16 +0000
parents 23a347cfbed8
children 4da1ee79c9af
line wrap: on
line diff
--- a/src/events/SDL_mouse.c	Sun May 21 17:27:13 2006 +0000
+++ b/src/events/SDL_mouse.c	Sun May 28 13:04:16 2006 +0000
@@ -34,230 +34,240 @@
 static Sint16 SDL_MouseY = 0;
 static Sint16 SDL_DeltaX = 0;
 static Sint16 SDL_DeltaY = 0;
-static Uint8  SDL_ButtonState = 0;
+static Uint8 SDL_ButtonState = 0;
 
 
 /* Public functions */
-int SDL_MouseInit(void)
+int
+SDL_MouseInit (void)
 {
-	/* The mouse is at (0,0) */
-	SDL_MouseX = 0;
-	SDL_MouseY = 0;
-	SDL_DeltaX = 0;
-	SDL_DeltaY = 0;
-	SDL_ButtonState = 0;
+    /* The mouse is at (0,0) */
+    SDL_MouseX = 0;
+    SDL_MouseY = 0;
+    SDL_DeltaX = 0;
+    SDL_DeltaY = 0;
+    SDL_ButtonState = 0;
 
-	/* That's it! */
-	return(0);
+    /* That's it! */
+    return (0);
 }
-void SDL_MouseQuit(void)
+
+void
+SDL_MouseQuit (void)
 {
 }
 
 /* We lost the mouse, so post button up messages for all pressed buttons */
-void SDL_ResetMouse(void)
+void
+SDL_ResetMouse (void)
 {
-	Uint8 i;
-	for ( i = 0; i < sizeof(SDL_ButtonState)*8; ++i ) {
-		if ( SDL_ButtonState & SDL_BUTTON(i) ) {
-			SDL_PrivateMouseButton(SDL_RELEASED, i, 0, 0);
-		}
-	}
+    Uint8 i;
+    for (i = 0; i < sizeof (SDL_ButtonState) * 8; ++i) {
+        if (SDL_ButtonState & SDL_BUTTON (i)) {
+            SDL_PrivateMouseButton (SDL_RELEASED, i, 0, 0);
+        }
+    }
 }
 
-Uint8 SDL_GetMouseState (int *x, int *y)
+Uint8
+SDL_GetMouseState (int *x, int *y)
 {
-	if ( x ) {
-		*x = SDL_MouseX;
-	}
-	if ( y ) {
-		*y = SDL_MouseY;
-	}
-	return(SDL_ButtonState);
+    if (x) {
+        *x = SDL_MouseX;
+    }
+    if (y) {
+        *y = SDL_MouseY;
+    }
+    return (SDL_ButtonState);
 }
 
-Uint8 SDL_GetRelativeMouseState (int *x, int *y)
+Uint8
+SDL_GetRelativeMouseState (int *x, int *y)
 {
-	if ( x )
-		*x = SDL_DeltaX;
-	if ( y )
-		*y = SDL_DeltaY;
-	SDL_DeltaX = 0;
-	SDL_DeltaY = 0;
-	return(SDL_ButtonState);
+    if (x)
+        *x = SDL_DeltaX;
+    if (y)
+        *y = SDL_DeltaY;
+    SDL_DeltaX = 0;
+    SDL_DeltaY = 0;
+    return (SDL_ButtonState);
 }
 
-static void ClipOffset(Sint16 *x, Sint16 *y)
+static void
+ClipOffset (Sint16 * x, Sint16 * y)
 {
-	/* This clips absolute mouse coordinates when the apparent
-	   display surface is smaller than the real display surface.
-	 */
-	if ( SDL_VideoSurface->offset ) {
-		*y -= SDL_VideoSurface->offset/SDL_VideoSurface->pitch;
-		*x -= (SDL_VideoSurface->offset%SDL_VideoSurface->pitch)/
-				SDL_VideoSurface->format->BytesPerPixel;
-	}
+    SDL_VideoDevice *_this = SDL_GetVideoDevice ();
+
+    /* This clips absolute mouse coordinates when the apparent
+       display surface is smaller than the real display surface.
+     */
+    if (SDL_VideoSurface->offset) {
+        *y -= SDL_VideoSurface->offset / SDL_VideoSurface->pitch;
+        *x -= (SDL_VideoSurface->offset % SDL_VideoSurface->pitch) /
+            SDL_VideoSurface->format->BytesPerPixel;
+    }
 }
 
 /* These are global for SDL_eventloop.c */
-int SDL_PrivateMouseMotion(Uint8 buttonstate, int relative, Sint16 x, Sint16 y)
+int
+SDL_PrivateMouseMotion (Uint8 buttonstate, int relative, Sint16 x, Sint16 y)
 {
-	int posted;
-	Uint16 X, Y;
-	Sint16 Xrel;
-	Sint16 Yrel;
+    SDL_VideoDevice *_this = SDL_GetVideoDevice ();
+    int posted;
+    Uint16 X, Y;
+    Sint16 Xrel;
+    Sint16 Yrel;
 
-	/* Don't handle mouse motion if there's no cursor surface */
-	if ( SDL_VideoSurface == NULL ) {
-		return(0);
-	}
+    /* Don't handle mouse motion if there's no cursor surface */
+    if (SDL_VideoSurface == NULL) {
+        return (0);
+    }
 
-	/* Default buttonstate is the current one */
-	if ( ! buttonstate ) {
-		buttonstate = SDL_ButtonState;
-	}
+    /* Default buttonstate is the current one */
+    if (!buttonstate) {
+        buttonstate = SDL_ButtonState;
+    }
 
-	Xrel = x;
-	Yrel = y;
-	if ( relative ) {
-		/* Push the cursor around */
-		x = (SDL_MouseX+x);
-		y = (SDL_MouseY+y);
-	} else {
-		/* Do we need to clip {x,y} ? */
-		ClipOffset(&x, &y);
-	}
+    Xrel = x;
+    Yrel = y;
+    if (relative) {
+        /* Push the cursor around */
+        x = (SDL_MouseX + x);
+        y = (SDL_MouseY + y);
+    } else {
+        /* Do we need to clip {x,y} ? */
+        ClipOffset (&x, &y);
+    }
 
-	/* Mouse coordinates range from 0 - width-1 and 0 - height-1 */
-	if ( x < 0 )
-		X = 0;
-	else
-	if ( x >= SDL_VideoSurface->w )
-		X = SDL_VideoSurface->w-1;
-	else
-		X = (Uint16)x;
+    /* Mouse coordinates range from 0 - width-1 and 0 - height-1 */
+    if (x < 0)
+        X = 0;
+    else if (x >= SDL_VideoSurface->w)
+        X = SDL_VideoSurface->w - 1;
+    else
+        X = (Uint16) x;
 
-	if ( y < 0 )
-		Y = 0;
-	else
-	if ( y >= SDL_VideoSurface->h )
-		Y = SDL_VideoSurface->h-1;
-	else
-		Y = (Uint16)y;
+    if (y < 0)
+        Y = 0;
+    else if (y >= SDL_VideoSurface->h)
+        Y = SDL_VideoSurface->h - 1;
+    else
+        Y = (Uint16) y;
 
-	/* If not relative mode, generate relative motion from clamped X/Y.
-	   This prevents lots of extraneous large delta relative motion when
-	   the screen is windowed mode and the mouse is outside the window.
-	*/
-	if ( ! relative ) {
-		Xrel = X-SDL_MouseX;
-		Yrel = Y-SDL_MouseY;
-	}
+    /* If not relative mode, generate relative motion from clamped X/Y.
+       This prevents lots of extraneous large delta relative motion when
+       the screen is windowed mode and the mouse is outside the window.
+     */
+    if (!relative) {
+        Xrel = X - SDL_MouseX;
+        Yrel = Y - SDL_MouseY;
+    }
 
-	/* Drop events that don't change state */
-	if ( ! Xrel && ! Yrel ) {
+    /* Drop events that don't change state */
+    if (!Xrel && !Yrel) {
 #if 0
-printf("Mouse event didn't change state - dropped!\n");
+        printf ("Mouse event didn't change state - dropped!\n");
 #endif
-		return(0);
-	}
+        return (0);
+    }
 
-	/* Update internal mouse state */
-	SDL_ButtonState = buttonstate;
-	SDL_MouseX = X;
-	SDL_MouseY = Y;
-	SDL_DeltaX += Xrel;
-	SDL_DeltaY += Yrel;
-        SDL_MoveCursor(SDL_MouseX, SDL_MouseY);
+    /* Update internal mouse state */
+    SDL_ButtonState = buttonstate;
+    SDL_MouseX = X;
+    SDL_MouseY = Y;
+    SDL_DeltaX += Xrel;
+    SDL_DeltaY += Yrel;
+    SDL_MoveCursor (SDL_MouseX, SDL_MouseY);
 
-	/* Post the event, if desired */
-	posted = 0;
-	if ( SDL_ProcessEvents[SDL_MOUSEMOTION] == SDL_ENABLE ) {
-		SDL_Event event;
-		SDL_memset(&event, 0, sizeof(event));
-		event.type = SDL_MOUSEMOTION;
-		event.motion.state = buttonstate;
-		event.motion.x = X;
-		event.motion.y = Y;
-		event.motion.xrel = Xrel;
-		event.motion.yrel = Yrel;
-		if ( (SDL_EventOK == NULL) || (*SDL_EventOK)(&event) ) {
-			posted = 1;
-			SDL_PushEvent(&event);
-		}
-	}
-	return(posted);
+    /* Post the event, if desired */
+    posted = 0;
+    if (SDL_ProcessEvents[SDL_MOUSEMOTION] == SDL_ENABLE) {
+        SDL_Event event;
+        SDL_memset (&event, 0, sizeof (event));
+        event.type = SDL_MOUSEMOTION;
+        event.motion.state = buttonstate;
+        event.motion.x = X;
+        event.motion.y = Y;
+        event.motion.xrel = Xrel;
+        event.motion.yrel = Yrel;
+        if ((SDL_EventOK == NULL) || (*SDL_EventOK) (&event)) {
+            posted = 1;
+            SDL_PushEvent (&event);
+        }
+    }
+    return (posted);
 }
 
-int SDL_PrivateMouseButton(Uint8 state, Uint8 button, Sint16 x, Sint16 y)
+int
+SDL_PrivateMouseButton (Uint8 state, Uint8 button, Sint16 x, Sint16 y)
 {
-	SDL_Event event;
-	int posted;
-	int move_mouse;
-	Uint8 buttonstate;
+    SDL_VideoDevice *_this = SDL_GetVideoDevice ();
+    SDL_Event event;
+    int posted;
+    int move_mouse;
+    Uint8 buttonstate;
 
-	SDL_memset(&event, 0, sizeof(event));
+    SDL_memset (&event, 0, sizeof (event));
 
-	/* Check parameters */
-	if ( x || y ) {
-		ClipOffset(&x, &y);
-		move_mouse = 1;
-		/* Mouse coordinates range from 0 - width-1 and 0 - height-1 */
-		if ( x < 0 )
-			x = 0;
-		else
-		if ( x >= SDL_VideoSurface->w )
-			x = SDL_VideoSurface->w-1;
+    /* Check parameters */
+    if (x || y) {
+        ClipOffset (&x, &y);
+        move_mouse = 1;
+        /* Mouse coordinates range from 0 - width-1 and 0 - height-1 */
+        if (x < 0)
+            x = 0;
+        else if (x >= SDL_VideoSurface->w)
+            x = SDL_VideoSurface->w - 1;
 
-		if ( y < 0 )
-			y = 0;
-		else
-		if ( y >= SDL_VideoSurface->h )
-			y = SDL_VideoSurface->h-1;
-	} else {
-		move_mouse = 0;
-	}
-	if ( ! x )
-		x = SDL_MouseX;
-	if ( ! y )
-		y = SDL_MouseY;
+        if (y < 0)
+            y = 0;
+        else if (y >= SDL_VideoSurface->h)
+            y = SDL_VideoSurface->h - 1;
+    } else {
+        move_mouse = 0;
+    }
+    if (!x)
+        x = SDL_MouseX;
+    if (!y)
+        y = SDL_MouseY;
 
-	/* Figure out which event to perform */
-	buttonstate = SDL_ButtonState;
-	switch ( state ) {
-		case SDL_PRESSED:
-			event.type = SDL_MOUSEBUTTONDOWN;
-			buttonstate |= SDL_BUTTON(button);
-			break;
-		case SDL_RELEASED:
-			event.type = SDL_MOUSEBUTTONUP;
-			buttonstate &= ~SDL_BUTTON(button);
-			break;
-		default:
-			/* Invalid state -- bail */
-			return(0);
-	}
+    /* Figure out which event to perform */
+    buttonstate = SDL_ButtonState;
+    switch (state) {
+    case SDL_PRESSED:
+        event.type = SDL_MOUSEBUTTONDOWN;
+        buttonstate |= SDL_BUTTON (button);
+        break;
+    case SDL_RELEASED:
+        event.type = SDL_MOUSEBUTTONUP;
+        buttonstate &= ~SDL_BUTTON (button);
+        break;
+    default:
+        /* Invalid state -- bail */
+        return (0);
+    }
 
-	/* Update internal mouse state */
-	SDL_ButtonState = buttonstate;
-	if ( move_mouse ) {
-		SDL_MouseX = x;
-		SDL_MouseY = y;
-		SDL_MoveCursor(SDL_MouseX, SDL_MouseY);
-	}
+    /* Update internal mouse state */
+    SDL_ButtonState = buttonstate;
+    if (move_mouse) {
+        SDL_MouseX = x;
+        SDL_MouseY = y;
+        SDL_MoveCursor (SDL_MouseX, SDL_MouseY);
+    }
 
-	/* Post the event, if desired */
-	posted = 0;
-	if ( SDL_ProcessEvents[event.type] == SDL_ENABLE ) {
-		event.button.state = state;
-		event.button.button = button;
-		event.button.x = x;
-		event.button.y = y;
-		if ( (SDL_EventOK == NULL) || (*SDL_EventOK)(&event) ) {
-			posted = 1;
-			SDL_PushEvent(&event);
-		}
-	}
-	return(posted);
+    /* Post the event, if desired */
+    posted = 0;
+    if (SDL_ProcessEvents[event.type] == SDL_ENABLE) {
+        event.button.state = state;
+        event.button.button = button;
+        event.button.x = x;
+        event.button.y = y;
+        if ((SDL_EventOK == NULL) || (*SDL_EventOK) (&event)) {
+            posted = 1;
+            SDL_PushEvent (&event);
+        }
+    }
+    return (posted);
 }
 
+/* vi: set ts=4 sw=4 expandtab: */