comparison src/events/SDL_mouse.c @ 3769:fe32943f86ec gsoc2008_manymouse

Project part 2
author Szymon Wilczek <kazeuser@gmail.com>
date Wed, 30 Jul 2008 16:20:32 +0000
parents abc8acb8e3d7
children 81b649bad6d2
comparison
equal deleted inserted replaced
3768:1b87a8beab9d 3769:fe32943f86ec
54 int 54 int
55 SDL_AddMouse(const SDL_Mouse * mouse, int index, char* name,int pressure_max,int pressure_min) 55 SDL_AddMouse(const SDL_Mouse * mouse, int index, char* name,int pressure_max,int pressure_min)
56 { 56 {
57 SDL_Mouse **mice; 57 SDL_Mouse **mice;
58 int selected_mouse; 58 int selected_mouse;
59 //char* temp_name; 59 int length;
60
60 /* Add the mouse to the list of mice */ 61 /* Add the mouse to the list of mice */
61 if (index < 0 || index >= SDL_num_mice || SDL_mice[index]) { 62 if (index < 0 || index >= SDL_num_mice || SDL_mice[index]) {
62 mice = 63 mice =
63 (SDL_Mouse **) SDL_realloc(SDL_mice, 64 (SDL_Mouse **) SDL_realloc(SDL_mice,
64 (SDL_num_mice + 1) * sizeof(*mice)); 65 (SDL_num_mice + 1) * sizeof(*mice));
74 if (!SDL_mice[index]) { 75 if (!SDL_mice[index]) {
75 SDL_OutOfMemory(); 76 SDL_OutOfMemory();
76 return -1; 77 return -1;
77 } 78 }
78 *SDL_mice[index] = *mouse; 79 *SDL_mice[index] = *mouse;
79 SDL_mice[index]->name=SDL_malloc(SDL_strlen(name)*sizeof(char)); 80 length=0;
80 SDL_strlcpy(SDL_mice[index]->name,name,255); 81 length=SDL_strlen(name);
82 SDL_mice[index]->name=SDL_malloc((length+1)*sizeof(char));
83 SDL_strlcpy(SDL_mice[index]->name,name,length);
81 SDL_mice[index]->pressure_max=pressure_max; 84 SDL_mice[index]->pressure_max=pressure_max;
82 SDL_mice[index]->pressure_min=pressure_min; 85 SDL_mice[index]->pressure_min=pressure_min;
83 SDL_mice[index]->cursor_shown = SDL_TRUE; 86 SDL_mice[index]->cursor_shown = SDL_TRUE;
84 selected_mouse = SDL_SelectMouse(index); 87 selected_mouse = SDL_SelectMouse(index);
85 SDL_mice[index]->cur_cursor = NULL; 88 SDL_mice[index]->cur_cursor = NULL;
354 int index=SDL_GetIndexById(id); 357 int index=SDL_GetIndexById(id);
355 SDL_Mouse *mouse = SDL_GetMouse(index); 358 SDL_Mouse *mouse = SDL_GetMouse(index);
356 int posted; 359 int posted;
357 int xrel; 360 int xrel;
358 int yrel; 361 int yrel;
359 362 if(x>x_max)
363 {
364 x=x_max;
365 }
366 if(y>y_max)
367 {
368 y=y_max;
369 }
360 if (!mouse || mouse->flush_motion) { 370 if (!mouse || mouse->flush_motion) {
361 return 0; 371 return 0;
362 } 372 }
363 if(mouse->proximity==SDL_FALSE) 373 if(mouse->proximity==SDL_FALSE)
364 { 374 {
428 /* Post the event, if desired */ 438 /* Post the event, if desired */
429 posted = 0; 439 posted = 0;
430 if (SDL_ProcessEvents[SDL_MOUSEMOTION] == SDL_ENABLE && SDL_mice[index]->proximity==SDL_TRUE) { 440 if (SDL_ProcessEvents[SDL_MOUSEMOTION] == SDL_ENABLE && SDL_mice[index]->proximity==SDL_TRUE) {
431 SDL_Event event; 441 SDL_Event event;
432 event.motion.type = SDL_MOUSEMOTION; 442 event.motion.type = SDL_MOUSEMOTION;
433 event.motion.which = (Uint8) index; 443 event.motion.which = (Uint8) index;
434 event.motion.state = mouse->buttonstate; 444 event.motion.state = mouse->buttonstate;
435 event.motion.x = mouse->x; 445 event.motion.x = mouse->x;
436 event.motion.y = mouse->y; 446 event.motion.y = mouse->y;
437 event.motion.pressure= mouse->pressure; 447 event.motion.pressure= mouse->pressure;
438 event.motion.xrel = xrel; 448 event.motion.xrel = xrel;
570 } 580 }
571 581
572 /* Make sure the width is a multiple of 8 */ 582 /* Make sure the width is a multiple of 8 */
573 w = ((w + 7) & ~7); 583 w = ((w + 7) & ~7);
574 584
575 /* Create the surface from a bitmap */ 585 /* Create the surface from a bitmap*/
576 surface = 586 surface =
577 SDL_CreateRGBSurface(0, w, h, 32, 0x00FF0000, 0x0000FF00, 0x000000FF, 587 SDL_CreateRGBSurface(0, w, h, 32, 0x00FF0000, 0x0000FF00, 0x000000FF,
578 0xFF000000); 588 0xFF000000);
579 if (!surface) { 589 if (!surface) {
580 return NULL; 590 return NULL;
775 { 785 {
776 x_max=x; 786 x_max=x;
777 y_max=y; 787 y_max=y;
778 } 788 }
779 /* vi: set ts=4 sw=4 expandtab: */ 789 /* vi: set ts=4 sw=4 expandtab: */
790