initial commit
[dos_imgv] / src / mouse.h
1 #ifndef MOUSE_H_
2 #define MOUSE_H_
3
4 enum { MOUSE_BUTTON, MOUSE_MOTION };
5
6 struct mouse_event {
7         int type;
8         int button;
9         int state;
10         int x, y, dx, dy;
11 };
12
13 struct mouse_state {
14         int active;                     /* mouse present and initialized */
15         int visible;            /* cached cursor visibility state */
16         int bn;
17         int x, y, dx, dy;
18 };
19
20 /* updated by proc_mouse */
21 extern struct mouse_state mouse;
22
23
24 int init_mouse(void);
25 void cleanup_mouse(void);
26
27 int reset_mouse(void);
28
29 void set_mouse_bounds(int x, int y, int w, int h);
30 void show_mouse(int en);
31
32 void move_mouse(int x, int y);
33 int mouse_state(int *xp, int *yp);
34
35 /* returns relative motion since last call */
36 void mouse_delta(int *dx, int *dy);
37
38 /* procs mouse input, adds events to the ev queue, returns how many added */
39 int proc_mouse(void);
40
41 /* if events are pending, dequeues one, writes it to ev and returns 1
42  * if no events are pending, returns 0
43  *
44  * usage: while(next_mouse_event(&ev)) { ... proc event ... }
45  */
46 int next_mouse_event(struct mouse_event *ev);
47
48 #endif  /* MOUSE_H_ */