21 #define MOUSE_MAX_BUTTONS 3
23 static struct mouseinfo {
24 struct mousebutton buttons[MOUSE_MAX_BUTTONS];
25 //added on 10/17/98 by Hans de Goede for mouse functionality
34 if (Mouse.x < Mouse.min_x)
35 Mouse.x = Mouse.min_x;
36 else if (Mouse.x > Mouse.max_x)
37 Mouse.x = Mouse.max_x;
38 if (Mouse.y < Mouse.min_y)
39 Mouse.y = Mouse.min_y;
40 else if (Mouse.y > Mouse.max_y)
41 Mouse.y = Mouse.max_y;
44 void mouse_handler_absolute(int x, int y)
46 Mouse.delta_x += (x - Mouse.x);
47 Mouse.delta_y += (y - Mouse.y);
53 void mouse_handler_relative(int x, int y)
62 void mouse_handler_button(int button, ubyte state)
64 if (!Mouse.buttons[button].pressed && state)
66 Mouse.buttons[button].time_went_down = timer_get_fixed_seconds();
67 Mouse.buttons[button].num_downs++;
69 else if (Mouse.buttons[button].pressed && !state)
71 Mouse.buttons[button].num_ups++;
74 Mouse.buttons[button].pressed = state;
77 void Mouse_close(void)
83 memset(&Mouse, 0, sizeof(Mouse));
86 int mouse_set_limits( int x1, int y1, int x2, int y2 )
92 return MOUSE_MAX_BUTTONS;
95 void mouse_flush() // clears all mice events...
103 //========================================================================
104 void mouse_get_pos( int *x, int *y)
111 void mouse_get_delta( int *dx, int *dy )
125 for (i = 0; i < MOUSE_MAX_BUTTONS; i++)
126 buttons |= (Mouse.buttons[i].pressed << i);
130 void mouse_set_pos( int x, int y)
136 void mouse_get_cyberman_pos( int *x, int *y )
140 // Returns how long this button has been down since last call.
141 fix mouse_button_down_time(int button)
143 if (Mouse.buttons[button].pressed)
144 return (timer_get_fixed_seconds() - Mouse.buttons[button].time_went_down);
149 // Returns how many times this button has went down since last call
150 int mouse_button_down_count(int button)
152 int count = Mouse.buttons[button].num_downs;
153 Mouse.buttons[button].num_downs = 0;
157 // Returns 1 if this button is currently down
158 int mouse_button_state(int button)
160 return Mouse.buttons[button].pressed;
163 #endif /* GII_INPUT */