1 #pragma once
2 
3 #include <stdint.h>
4 #include <stdbool.h>
5 
6 enum
7 {
8 	MOUSE_MODE_NORMAL = 0,
9 	MOUSE_MODE_DELETE = 1,
10 	MOUSE_MODE_RENAME = 2,
11 
12 	MOUSE_WHEEL_DOWN = 0,
13 	MOUSE_WHEEL_UP = 1
14 };
15 
16 typedef struct mouse_t
17 {
18 	volatile bool setPosFlag;
19 	bool leftButtonPressed, rightButtonPressed, leftButtonReleased, rightButtonReleased;
20 	bool firstTimePressingButton, mouseOverTextBox;
21 	int8_t buttonCounter, mode;
22 	int16_t lastUsedObjectID, lastUsedObjectType, lastEditBox;
23 	int32_t x, y, lastX, lastY, xBias, yBias, setPosX, setPosY;
24 	int32_t lastScrollX, lastScrollXTmp, lastScrollY, saveMouseX, saveMouseY;
25 	uint32_t buttonState;
26 } mouse_t;
27 
28 extern mouse_t mouse; // ft2_mouse.c
29 
30 // do not change these!
31 #define MOUSE_CURSOR_W 26
32 #define MOUSE_CURSOR_H 23
33 #define MOUSE_GLASS_ANI_FRAMES 22
34 #define MOUSE_CLOCK_ANI_FRAMES 5
35 
36 void freeMouseCursors(void);
37 bool createMouseCursors(void);
38 void setMousePosToCenter(void);
39 void setMouseShape(int16_t shape);
40 void setMouseMode(uint8_t mode);
41 void mouseWheelHandler(bool directionUp);
42 void mouseButtonUpHandler(uint8_t mouseButton);
43 void mouseButtonDownHandler(uint8_t mouseButton);
44 void updateMouseScaling(void);
45 void setMouseBusy(bool busy); // can be called from other threads
46 void mouseAnimOn(void);
47 void mouseAnimOff(void);
48 void animateBusyMouse(void);
49 void handleLastGUIObjectDown(void);
50 void readMouseXY(void);
51 void resetMouseBusyAnimation(void);
52