test/testjoystick.c
changeset 1895 c121d94672cb
parent 1855 5ff2c01e475e
child 2200 893c862eed86
--- a/test/testjoystick.c	Thu Jul 06 18:01:37 2006 +0000
+++ b/test/testjoystick.c	Mon Jul 10 21:04:37 2006 +0000
@@ -10,169 +10,167 @@
 #define SCREEN_WIDTH	640
 #define SCREEN_HEIGHT	480
 
-void WatchJoystick(SDL_Joystick *joystick)
+void
+WatchJoystick(SDL_Joystick * joystick)
 {
-	SDL_Surface *screen;
-	const char *name;
-	int i, done;
-	SDL_Event event;
-	int x, y, draw;
-	SDL_Rect axis_area[2];
+    SDL_Surface *screen;
+    const char *name;
+    int i, done;
+    SDL_Event event;
+    int x, y, draw;
+    SDL_Rect axis_area[6][2];
 
-	/* Set a video mode to display joystick axis position */
-	screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, 16, 0);
-	if ( screen == NULL ) {
-		fprintf(stderr, "Couldn't set video mode: %s\n",SDL_GetError());
-		return;
-	}
+    /* Set a video mode to display joystick axis position */
+    screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, 16, 0);
+    if (screen == NULL) {
+        fprintf(stderr, "Couldn't set video mode: %s\n", SDL_GetError());
+        return;
+    }
 
-	/* Print info about the joystick we are watching */
-	name = SDL_JoystickName(SDL_JoystickIndex(joystick));
-	printf("Watching joystick %d: (%s)\n", SDL_JoystickIndex(joystick),
-	       name ? name : "Unknown Joystick");
-	printf("Joystick has %d axes, %d hats, %d balls, and %d buttons\n",
-	       SDL_JoystickNumAxes(joystick), SDL_JoystickNumHats(joystick),
-	       SDL_JoystickNumBalls(joystick),SDL_JoystickNumButtons(joystick));
+    /* Print info about the joystick we are watching */
+    name = SDL_JoystickName(SDL_JoystickIndex(joystick));
+    printf("Watching joystick %d: (%s)\n", SDL_JoystickIndex(joystick),
+           name ? name : "Unknown Joystick");
+    printf("Joystick has %d axes, %d hats, %d balls, and %d buttons\n",
+           SDL_JoystickNumAxes(joystick), SDL_JoystickNumHats(joystick),
+           SDL_JoystickNumBalls(joystick), SDL_JoystickNumButtons(joystick));
 
-	/* Initialize drawing rectangles */
-	memset(axis_area, 0, (sizeof axis_area));
-	draw = 0;
+    /* Initialize drawing rectangles */
+    memset(axis_area, 0, (sizeof axis_area));
+    draw = 0;
 
-	/* Loop, getting joystick events! */
-	done = 0;
-	while ( ! done ) {
-		while ( SDL_PollEvent(&event) ) {
-			switch (event.type) {
-			    case SDL_JOYAXISMOTION:
-				printf("Joystick %d axis %d value: %d\n",
-				       event.jaxis.which,
-				       event.jaxis.axis,
-				       event.jaxis.value);
-				break;
-			    case SDL_JOYHATMOTION:
-				printf("Joystick %d hat %d value:",
-				       event.jhat.which,
-				       event.jhat.hat);
-				if ( event.jhat.value == SDL_HAT_CENTERED )
-					printf(" centered");
-				if ( event.jhat.value & SDL_HAT_UP )
-					printf(" up");
-				if ( event.jhat.value & SDL_HAT_RIGHT )
-					printf(" right");
-				if ( event.jhat.value & SDL_HAT_DOWN )
-					printf(" down");
-				if ( event.jhat.value & SDL_HAT_LEFT )
-					printf(" left");
-				printf("\n");
-				break;
-			    case SDL_JOYBALLMOTION:
-				printf("Joystick %d ball %d delta: (%d,%d)\n",
-				       event.jball.which,
-				       event.jball.ball,
-				       event.jball.xrel,
-				       event.jball.yrel);
-				break;
-			    case SDL_JOYBUTTONDOWN:
-				printf("Joystick %d button %d down\n",
-				       event.jbutton.which,
-				       event.jbutton.button);
-				break;
-			    case SDL_JOYBUTTONUP:
-				printf("Joystick %d button %d up\n",
-				       event.jbutton.which,
-				       event.jbutton.button);
-				break;
-			    case SDL_KEYDOWN:
-				if ( event.key.keysym.sym != SDLK_ESCAPE ) {
-					break;
-				}
-				/* Fall through to signal quit */
-			    case SDL_QUIT:
-				done = 1;
-				break;
-			    default:
-				break;
-			}
-		}
-		/* Update visual joystick state */
-		for ( i=0; i<SDL_JoystickNumButtons(joystick); ++i ) {
-			SDL_Rect area;
+    /* Loop, getting joystick events! */
+    done = 0;
+    while (!done) {
+        while (SDL_PollEvent(&event)) {
+            switch (event.type) {
+            case SDL_JOYAXISMOTION:
+                printf("Joystick %d axis %d value: %d\n",
+                       event.jaxis.which,
+                       event.jaxis.axis, event.jaxis.value);
+                break;
+            case SDL_JOYHATMOTION:
+                printf("Joystick %d hat %d value:",
+                       event.jhat.which, event.jhat.hat);
+                if (event.jhat.value == SDL_HAT_CENTERED)
+                    printf(" centered");
+                if (event.jhat.value & SDL_HAT_UP)
+                    printf(" up");
+                if (event.jhat.value & SDL_HAT_RIGHT)
+                    printf(" right");
+                if (event.jhat.value & SDL_HAT_DOWN)
+                    printf(" down");
+                if (event.jhat.value & SDL_HAT_LEFT)
+                    printf(" left");
+                printf("\n");
+                break;
+            case SDL_JOYBALLMOTION:
+                printf("Joystick %d ball %d delta: (%d,%d)\n",
+                       event.jball.which,
+                       event.jball.ball, event.jball.xrel, event.jball.yrel);
+                break;
+            case SDL_JOYBUTTONDOWN:
+                printf("Joystick %d button %d down\n",
+                       event.jbutton.which, event.jbutton.button);
+                break;
+            case SDL_JOYBUTTONUP:
+                printf("Joystick %d button %d up\n",
+                       event.jbutton.which, event.jbutton.button);
+                break;
+            case SDL_KEYDOWN:
+                if (event.key.keysym.sym != SDLK_ESCAPE) {
+                    break;
+                }
+                /* Fall through to signal quit */
+            case SDL_QUIT:
+                done = 1;
+                break;
+            default:
+                break;
+            }
+        }
+        /* Update visual joystick state */
+        for (i = 0; i < SDL_JoystickNumButtons(joystick); ++i) {
+            SDL_Rect area;
 
-			area.x = i*34;
-			area.y = SCREEN_HEIGHT-34;
-			area.w = 32;
-			area.h = 32;
-			if (SDL_JoystickGetButton(joystick, i) == SDL_PRESSED) {
-				SDL_FillRect(screen, &area, 0xFFFF);
-			} else {
-				SDL_FillRect(screen, &area, 0x0000);
-			}
-			SDL_UpdateRects(screen, 1, &area);
-		}
+            area.x = i * 34;
+            area.y = SCREEN_HEIGHT - 34;
+            area.w = 32;
+            area.h = 32;
+            if (SDL_JoystickGetButton(joystick, i) == SDL_PRESSED) {
+                SDL_FillRect(screen, &area, 0xFFFF);
+            } else {
+                SDL_FillRect(screen, &area, 0x0000);
+            }
+            SDL_UpdateRects(screen, 1, &area);
+        }
 
-		/* Erase previous axes */
-		SDL_FillRect(screen, &axis_area[draw], 0x0000);
+        for (i = 0;
+             i < SDL_JoystickNumAxes(joystick) / 2
+             && i < SDL_arraysize(axis_area); ++i) {
+            /* Erase previous axes */
+            SDL_FillRect(screen, &axis_area[i][draw], 0x0000);
 
-		/* Draw the X/Y axis */
-		draw = !draw;
-		x = (((int)SDL_JoystickGetAxis(joystick, 0))+32768);
-		x *= SCREEN_WIDTH;
-		x /= 65535;
-		if ( x < 0 ) {
-			x = 0;
-		} else
-		if ( x > (SCREEN_WIDTH-16) ) {
-			x = SCREEN_WIDTH-16;
-		}
-		y = (((int)SDL_JoystickGetAxis(joystick, 1))+32768);
-		y *= SCREEN_HEIGHT;
-		y /= 65535;
-		if ( y < 0 ) {
-			y = 0;
-		} else
-		if ( y > (SCREEN_HEIGHT-16) ) {
-			y = SCREEN_HEIGHT-16;
-		}
-		axis_area[draw].x = (Sint16)x;
-		axis_area[draw].y = (Sint16)y;
-		axis_area[draw].w = 16;
-		axis_area[draw].h = 16;
-		SDL_FillRect(screen, &axis_area[draw], 0xFFFF);
+            /* Draw the X/Y axis */
+            draw = !draw;
+            x = (((int) SDL_JoystickGetAxis(joystick, i * 2 + 0)) + 32768);
+            x *= SCREEN_WIDTH;
+            x /= 65535;
+            if (x < 0) {
+                x = 0;
+            } else if (x > (SCREEN_WIDTH - 16)) {
+                x = SCREEN_WIDTH - 16;
+            }
+            y = (((int) SDL_JoystickGetAxis(joystick, i * 2 + 1)) + 32768);
+            y *= SCREEN_HEIGHT;
+            y /= 65535;
+            if (y < 0) {
+                y = 0;
+            } else if (y > (SCREEN_HEIGHT - 16)) {
+                y = SCREEN_HEIGHT - 16;
+            }
+            axis_area[i][draw].x = (Sint16) x;
+            axis_area[i][draw].y = (Sint16) y;
+            axis_area[i][draw].w = 16;
+            axis_area[i][draw].h = 16;
+            SDL_FillRect(screen, &axis_area[i][draw], 0xFFFF);
 
-		SDL_UpdateRects(screen, 2, axis_area);
-	}
+            SDL_UpdateRects(screen, 2, axis_area[i]);
+        }
+    }
 }
 
-int main(int argc, char *argv[])
+int
+main(int argc, char *argv[])
 {
-	const char *name;
-	int i;
-	SDL_Joystick *joystick;
+    const char *name;
+    int i;
+    SDL_Joystick *joystick;
 
-	/* Initialize SDL (Note: video is required to start event loop) */
-	if ( SDL_Init(SDL_INIT_VIDEO|SDL_INIT_JOYSTICK) < 0 ) {
-		fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError());
-		exit(1);
-	}
+    /* Initialize SDL (Note: video is required to start event loop) */
+    if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK) < 0) {
+        fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError());
+        exit(1);
+    }
 
-	/* Print information about the joysticks */
-	printf("There are %d joysticks attached\n", SDL_NumJoysticks());
-	for ( i=0; i<SDL_NumJoysticks(); ++i ) {
-		name = SDL_JoystickName(i);
-		printf("Joystick %d: %s\n",i,name ? name : "Unknown Joystick");
-	}
+    /* Print information about the joysticks */
+    printf("There are %d joysticks attached\n", SDL_NumJoysticks());
+    for (i = 0; i < SDL_NumJoysticks(); ++i) {
+        name = SDL_JoystickName(i);
+        printf("Joystick %d: %s\n", i, name ? name : "Unknown Joystick");
+    }
 
-	if ( argv[1] ) {
-		joystick = SDL_JoystickOpen(atoi(argv[1]));
-		if ( joystick == NULL ) {
-			printf("Couldn't open joystick %d: %s\n", atoi(argv[1]),
-			       SDL_GetError());
-		} else {
-			WatchJoystick(joystick);
-			SDL_JoystickClose(joystick);
-		}
-	}
-	SDL_QuitSubSystem(SDL_INIT_VIDEO|SDL_INIT_JOYSTICK);
+    if (argv[1]) {
+        joystick = SDL_JoystickOpen(atoi(argv[1]));
+        if (joystick == NULL) {
+            printf("Couldn't open joystick %d: %s\n", atoi(argv[1]),
+                   SDL_GetError());
+        } else {
+            WatchJoystick(joystick);
+            SDL_JoystickClose(joystick);
+        }
+    }
+    SDL_QuitSubSystem(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK);
 
-	return(0);
+    return (0);
 }