[win32k]
[reactos.git] / reactos / subsystems / win32 / win32k / include / cursoricon.h
1 #ifndef _WIN32K_CURSORICON_H
2 #define _WIN32K_CURSORICON_H
3
4 #define MAXCURICONHANDLES 4096
5
6 typedef struct tagCURICON_PROCESS
7 {
8 LIST_ENTRY ListEntry;
9 PPROCESSINFO Process;
10 } CURICON_PROCESS, *PCURICON_PROCESS;
11
12 typedef struct _CURICON_OBJECT
13 {
14 LIST_ENTRY ListEntry;
15 HANDLE Self;
16 LIST_ENTRY ProcessList;
17 HMODULE hModule;
18 HRSRC hRsrc;
19 HRSRC hGroupRsrc;
20 SIZE Size;
21 BYTE Shadow;
22 ICONINFO IconInfo;
23 } CURICON_OBJECT, *PCURICON_OBJECT;
24
25 typedef struct _CURSORCLIP_INFO
26 {
27 BOOL IsClipped;
28 UINT Left;
29 UINT Top;
30 UINT Right;
31 UINT Bottom;
32 } CURSORCLIP_INFO, *PCURSORCLIP_INFO;
33
34 typedef struct _CURSORACCELERATION_INFO
35 {
36 UINT FirstThreshold;
37 UINT SecondThreshold;
38 UINT Acceleration;
39 } CURSORACCELERATION_INFO, *PCURSORACCELERATION_INFO;
40
41 typedef struct _SYSTEM_CURSORINFO
42 {
43 BOOL Enabled;
44 BOOL ClickLockActive;
45 DWORD ClickLockTime;
46 // BOOL SwapButtons;
47 UINT ButtonsDown;
48 CURSORCLIP_INFO CursorClipInfo;
49 PCURICON_OBJECT CurrentCursorObject;
50 INT ShowingCursor;
51 /*
52 UINT WheelScroLines;
53 UINT WheelScroChars;
54 UINT DblClickSpeed;
55 UINT DblClickWidth;
56 UINT DblClickHeight;
57
58 UINT MouseHoverTime;
59 UINT MouseHoverWidth;
60 UINT MouseHoverHeight;
61
62 UINT MouseSpeed;
63 CURSORACCELERATION_INFO CursorAccelerationInfo;
64 */
65 DWORD LastBtnDown;
66 LONG LastBtnDownX;
67 LONG LastBtnDownY;
68 HANDLE LastClkWnd;
69 BOOL ScreenSaverRunning;
70 } SYSTEM_CURSORINFO, *PSYSTEM_CURSORINFO;
71
72 BOOL FASTCALL InitCursorImpl();
73 PCURICON_OBJECT FASTCALL IntCreateCurIconHandle();
74 VOID FASTCALL IntCleanupCurIcons(struct _EPROCESS *Process, PPROCESSINFO Win32Process);
75
76 BOOL UserDrawIconEx(HDC hDc, INT xLeft, INT yTop, PCURICON_OBJECT pIcon, INT cxWidth,
77 INT cyHeight, UINT istepIfAniCur, HBRUSH hbrFlickerFreeDraw, UINT diFlags);
78 PCURICON_OBJECT FASTCALL UserGetCurIconObject(HCURSOR hCurIcon);
79
80 BOOL UserSetCursorPos( INT x, INT y);
81
82 int UserShowCursor(BOOL bShow);
83
84 PSYSTEM_CURSORINFO FASTCALL
85 IntGetSysCursorInfo();
86
87 #define IntReleaseCurIconObject(CurIconObj) \
88 UserDereferenceObject(CurIconObj)
89
90 ULONG
91 NTAPI
92 GreSetPointerShape(
93 HDC hdc,
94 HBITMAP hbmMask,
95 HBITMAP hbmColor,
96 LONG xHot,
97 LONG yHot,
98 LONG x,
99 LONG y);
100
101 VOID
102 NTAPI
103 GreMovePointer(
104 HDC hdc,
105 LONG x,
106 LONG y);
107
108 #endif /* _WIN32K_CURSORICON_H */
109
110 /* EOF */
111
112