convert line ends
[canaan.git] / prj / tech / winsrc / input / mousesys.h
blob5a52f6ebe6f4dc46a5a6ccec66fbc0d612d7a21c
1 // Mousesys.h
2 // internal header stuff for the mouse
4 #ifndef __MOUSESYS_H
5 #define __MOUSESYS_H
7 #ifdef __cplusplus
8 extern "C" {
9 #endif // cplusplus
12 typedef struct _mouse_state
14 short x,y;
15 short butts;
16 } mouse_state;
18 #define NUM_MOUSEEVENTS 32
19 #define NUM_MOUSE_CALLBACKS 16
21 // These are global for fast access from interrupt routine & others
23 extern short gMouseCritical; // in critical region?
25 extern short mouseQueueSize;
26 extern volatile short mouseQueueIn; // back of event queue
27 extern volatile short mouseQueueOut; // front of event queue
28 extern lgMouseEvent mouseQueue[]; // array of events
29 extern short mouseInstantX; // instantaneous mouse xpos (int-based)
30 extern short mouseInstantY; // instantaneous mouse ypos (int-based)
31 extern short mouseInstantButts;
32 extern short mouseButtMask; // amt to mask to get buttons.
33 extern ubyte mouseXshift; // Extra bits of mouse resolution
34 extern ubyte mouseYshift;
36 extern ubyte mouseMask; // mask of events to put in the queue.
37 extern bool mouseLefty; // is the user left-handed?
39 extern mouse_callfunc mouseCall[];
40 extern void* mouseCallData[];
41 extern short mouseCalls; // current number of mouse calls.
42 extern short mouseCallSize;
44 extern bool mouse_installed; // was mouse found?
46 #ifndef _WIN32
47 extern ulong default_mouse_ticks;
48 extern ulong volatile *mouse_ticks; // Place to get mouse timestamps.
49 #else
50 typedef ulong (*fn_mouse_ticks_t)();
51 extern fn_mouse_ticks_t pfn_mouse_ticks; // Place to get mouse timestamps.
52 #endif
54 // MOUSE VELOCITY STUFF
56 extern int mouseVelX, mouseVelY;
57 extern int mouseVelXmax;
58 extern int mouseVelYmax;
59 extern int mouseVelXmin;
60 extern int mouseVelYmin;
62 // Macros & defines
64 #define MOUSECRITON() (gMouseCritical++)
65 #define MOUSECRITOFF() (gMouseCritical--)
67 #ifdef __cplusplus
69 #endif // cplusplus
71 #endif // __MOUSESYS_H