Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Commit

Permalink
Project part 2
Browse files Browse the repository at this point in the history
  • Loading branch information
Szymon Wilczek committed Jul 30, 2008
1 parent b0c43de commit d6a836e
Show file tree
Hide file tree
Showing 2 changed files with 149 additions and 137 deletions.
23 changes: 17 additions & 6 deletions src/events/SDL_mouse.c
Expand Up @@ -56,7 +56,8 @@ SDL_AddMouse(const SDL_Mouse * mouse, int index, char* name,int pressure_max,int
{
SDL_Mouse **mice;
int selected_mouse;
//char* temp_name;
int length;

/* Add the mouse to the list of mice */
if (index < 0 || index >= SDL_num_mice || SDL_mice[index]) {
mice =
Expand All @@ -76,8 +77,10 @@ SDL_AddMouse(const SDL_Mouse * mouse, int index, char* name,int pressure_max,int
return -1;
}
*SDL_mice[index] = *mouse;
SDL_mice[index]->name=SDL_malloc(SDL_strlen(name)*sizeof(char));
SDL_strlcpy(SDL_mice[index]->name,name,255);
length=0;
length=SDL_strlen(name);
SDL_mice[index]->name=SDL_malloc((length+1)*sizeof(char));
SDL_strlcpy(SDL_mice[index]->name,name,length);
SDL_mice[index]->pressure_max=pressure_max;
SDL_mice[index]->pressure_min=pressure_min;
SDL_mice[index]->cursor_shown = SDL_TRUE;
Expand Down Expand Up @@ -356,7 +359,14 @@ SDL_SendMouseMotion(int id, int relative, int x, int y,int z)
int posted;
int xrel;
int yrel;

if(x>x_max)
{
x=x_max;
}
if(y>y_max)
{
y=y_max;
}
if (!mouse || mouse->flush_motion) {
return 0;
}
Expand Down Expand Up @@ -430,7 +440,7 @@ SDL_SendMouseMotion(int id, int relative, int x, int y,int z)
if (SDL_ProcessEvents[SDL_MOUSEMOTION] == SDL_ENABLE && SDL_mice[index]->proximity==SDL_TRUE) {
SDL_Event event;
event.motion.type = SDL_MOUSEMOTION;
event.motion.which = (Uint8) index;
event.motion.which = (Uint8) index;
event.motion.state = mouse->buttonstate;
event.motion.x = mouse->x;
event.motion.y = mouse->y;
Expand Down Expand Up @@ -572,7 +582,7 @@ SDL_CreateCursor(const Uint8 * data, const Uint8 * mask,
/* Make sure the width is a multiple of 8 */
w = ((w + 7) & ~7);

/* Create the surface from a bitmap */
/* Create the surface from a bitmap*/
surface =
SDL_CreateRGBSurface(0, w, h, 32, 0x00FF0000, 0x0000FF00, 0x000000FF,
0xFF000000);
Expand Down Expand Up @@ -777,3 +787,4 @@ void SDL_UpdateCoordinates(int x, int y)
y_max=y;
}
/* vi: set ts=4 sw=4 expandtab: */

263 changes: 132 additions & 131 deletions src/events/SDL_mouse_c.h
@@ -1,131 +1,132 @@
/*
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
*/
#include "SDL_config.h"

#ifndef _SDL_mouse_c_h
#define _SDL_mouse_c_h

typedef struct SDL_Mouse SDL_Mouse;

struct SDL_Cursor
{
SDL_Mouse *mouse;

SDL_Cursor *next;

void *driverdata;
};

struct SDL_Mouse
{
/* Create a cursor from a surface */
SDL_Cursor *(*CreateCursor) (SDL_Surface * surface, int hot_x, int hot_y);

/* Show the specified cursor, or hide if cursor is NULL */
int (*ShowCursor) (SDL_Cursor * cursor);

/* This is called when a mouse motion event occurs */
void (*MoveCursor) (SDL_Cursor * cursor);

/* Free a window manager cursor */
void (*FreeCursor) (SDL_Cursor * cursor);

/* Warp the mouse to (x,y) */
void (*WarpMouse) (SDL_Mouse * mouse, SDL_WindowID windowID, int x,
int y);

/* Free the mouse when it's time */
void (*FreeMouse) (SDL_Mouse * mouse);

/* Data common to all mice */
SDL_WindowID focus;
int which;
int x;
int y;
int z;/*for future use*/
int xdelta;
int ydelta;
int pressure;
int pressure_max;
int pressure_min;
int tilt;/*for future use*/
int rotation;/*for future use*/
char* name;
Uint8 buttonstate;
SDL_bool relative_mode;
SDL_bool proximity;
SDL_bool flush_motion;

SDL_Cursor *cursors;
SDL_Cursor *def_cursor;
SDL_Cursor *cur_cursor;
SDL_bool cursor_shown;

void *driverdata;
};


/* Initialize the mouse subsystem */
extern int SDL_MouseInit(void);

/* Get the mouse at an index */
extern SDL_Mouse *SDL_GetMouse(int index);

/* Add a mouse, possibly reattaching at a particular index (or -1),
returning the index of the mouse, or -1 if there was an error.
*/
extern int SDL_AddMouse(const SDL_Mouse * mouse, int index, char* name, int pressure_max, int pressure_min);

/* Remove a mouse at an index, clearing the slot for later */
extern void SDL_DelMouse(int index);

/* Clear the button state of a mouse at an index */
extern void SDL_ResetMouse(int index);

/* Set the mouse focus window */
extern void SDL_SetMouseFocus(int index, SDL_WindowID windowID);

/* Send a mouse motion event for a mouse at an index */
extern int SDL_SendMouseMotion(int index, int relative, int x, int y, int z);

/* Send a mouse button event for a mouse at an index */
extern int SDL_SendMouseButton(int index, Uint8 state, Uint8 button);

/* Send a mouse wheel event for a mouse at an index */
extern int SDL_SendMouseWheel(int index, int x, int y);

/* Shutdown the mouse subsystem */
extern void SDL_MouseQuit(void);

extern int SDL_GetIndexById(int id);

extern int SDL_SetIndexId(int id, int index);

extern int SDL_GetNumOfMice(void);

extern char* SDL_GetMouseName(int index);

extern void SDL_UpdateCoordinates(int x, int y);

#endif /* _SDL_mouse_c_h */

/* vi: set ts=4 sw=4 expandtab: */
/*
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
*/
#include "SDL_config.h"

#ifndef _SDL_mouse_c_h
#define _SDL_mouse_c_h

typedef struct SDL_Mouse SDL_Mouse;

struct SDL_Cursor
{
SDL_Mouse *mouse;

SDL_Cursor *next;

void *driverdata;
};

struct SDL_Mouse
{
/* Create a cursor from a surface */
SDL_Cursor *(*CreateCursor) (SDL_Surface * surface, int hot_x, int hot_y);

/* Show the specified cursor, or hide if cursor is NULL */
int (*ShowCursor) (SDL_Cursor * cursor);

/* This is called when a mouse motion event occurs */
void (*MoveCursor) (SDL_Cursor * cursor);

/* Free a window manager cursor */
void (*FreeCursor) (SDL_Cursor * cursor);

/* Warp the mouse to (x,y) */
void (*WarpMouse) (SDL_Mouse * mouse, SDL_WindowID windowID, int x,
int y);

/* Free the mouse when it's time */
void (*FreeMouse) (SDL_Mouse * mouse);

/* Data common to all mice */
SDL_WindowID focus;
int which;
int x;
int y;
int z;/*for future use*/
int xdelta;
int ydelta;
int pressure;
int pressure_max;
int pressure_min;
int tilt;/*for future use*/
int rotation;/*for future use*/
char* name;
Uint8 buttonstate;
SDL_bool relative_mode;
SDL_bool proximity;
SDL_bool flush_motion;

SDL_Cursor *cursors;
SDL_Cursor *def_cursor;
SDL_Cursor *cur_cursor;
SDL_bool cursor_shown;

void *driverdata;
};


/* Initialize the mouse subsystem */
extern int SDL_MouseInit(void);

/* Get the mouse at an index */
extern SDL_Mouse *SDL_GetMouse(int index);

/* Add a mouse, possibly reattaching at a particular index (or -1),
returning the index of the mouse, or -1 if there was an error.
*/
extern int SDL_AddMouse(const SDL_Mouse * mouse, int index, char* name, int pressure_max, int pressure_min);

/* Remove a mouse at an index, clearing the slot for later */
extern void SDL_DelMouse(int index);

/* Clear the button state of a mouse at an index */
extern void SDL_ResetMouse(int index);

/* Set the mouse focus window */
extern void SDL_SetMouseFocus(int index, SDL_WindowID windowID);

/* Send a mouse motion event for a mouse at an index */
extern int SDL_SendMouseMotion(int index, int relative, int x, int y, int z);

/* Send a mouse button event for a mouse at an index */
extern int SDL_SendMouseButton(int index, Uint8 state, Uint8 button);

/* Send a mouse wheel event for a mouse at an index */
extern int SDL_SendMouseWheel(int index, int x, int y);

/* Shutdown the mouse subsystem */
extern void SDL_MouseQuit(void);

extern int SDL_GetIndexById(int id);

extern int SDL_SetIndexId(int id, int index);

extern int SDL_GetNumOfMice(void);

extern char* SDL_GetMouseName(int index);

extern void SDL_UpdateCoordinates(int x, int y);

#endif /* _SDL_mouse_c_h */

/* vi: set ts=4 sw=4 expandtab: */

0 comments on commit d6a836e

Please sign in to comment.