[KERNEL32][CONSRV]
[reactos.git] / win32ss / user / ntuser / cursoricon.h
1 #pragma once
2
3 #define MAXCURICONHANDLES 4096
4
5 #ifdef NEW_CURSORICON
6 typedef struct _CURICON_OBJECT
7 {
8 PROCMARKHEAD head;
9 struct _CURICON_OBJECT* pcurNext;
10 UNICODE_STRING strName;
11 USHORT atomModName;
12 USHORT rt;
13 ULONG CURSORF_flags;
14 SHORT xHotspot;
15 SHORT yHotspot;
16 HBITMAP hbmMask;
17 HBITMAP hbmColor;
18 HBITMAP hbmAlpha;
19 RECT rcBounds;
20 HBITMAP hbmUserAlpha;
21 ULONG bpp;
22 ULONG cx;
23 ULONG cy;
24 } CURICON_OBJECT, *PCURICON_OBJECT;
25
26 typedef struct tagACON
27 {
28 PROCMARKHEAD head;
29 struct _CURICON_OBJECT* pcurNext;
30 UNICODE_STRING strName;
31 USHORT atomModName;
32 USHORT rt;
33 ULONG CURSORF_flags;
34 INT cpcur;
35 INT cicur;
36 PCURICON_OBJECT * aspcur;
37 DWORD * aicur;
38 INT * ajifRate;
39 INT iicur;
40 } ACON, *PACON;
41
42 C_ASSERT(FIELD_OFFSET(ACON, cpcur) == FIELD_OFFSET(CURICON_OBJECT, xHotspot));
43
44 #else
45
46 typedef struct tagCURICON_PROCESS
47 {
48 LIST_ENTRY ListEntry;
49 PPROCESSINFO Process;
50 } CURICON_PROCESS, *PCURICON_PROCESS;
51
52 typedef struct _CURICON_OBJECT
53 {
54 PROCMARKHEAD head;
55 LIST_ENTRY ListEntry;
56 HANDLE Self;
57 LIST_ENTRY ProcessList;
58 HMODULE hModule;
59 HRSRC hRsrc;
60 HRSRC hGroupRsrc;
61 SIZE Size;
62 BYTE Shadow;
63 ICONINFO IconInfo;
64 } CURICON_OBJECT, *PCURICON_OBJECT;
65 #endif
66
67 typedef struct _CURSORACCELERATION_INFO
68 {
69 UINT FirstThreshold;
70 UINT SecondThreshold;
71 UINT Acceleration;
72 } CURSORACCELERATION_INFO, *PCURSORACCELERATION_INFO;
73
74 typedef struct _SYSTEM_CURSORINFO
75 {
76 BOOL Enabled;
77 BOOL ClickLockActive;
78 DWORD ClickLockTime;
79 // BOOL SwapButtons;
80 UINT ButtonsDown;
81 RECTL rcClip;
82 BOOL bClipped;
83 PCURICON_OBJECT CurrentCursorObject;
84 INT ShowingCursor;
85 /*
86 UINT WheelScroLines;
87 UINT WheelScroChars;
88 UINT DblClickSpeed;
89 UINT DblClickWidth;
90 UINT DblClickHeight;
91
92 UINT MouseHoverTime;
93 UINT MouseHoverWidth;
94 UINT MouseHoverHeight;
95
96 UINT MouseSpeed;
97 CURSORACCELERATION_INFO CursorAccelerationInfo;
98 */
99 DWORD LastBtnDown;
100 LONG LastBtnDownX;
101 LONG LastBtnDownY;
102 HANDLE LastClkWnd;
103 BOOL ScreenSaverRunning;
104 } SYSTEM_CURSORINFO, *PSYSTEM_CURSORINFO;
105
106 BOOL InitCursorImpl(VOID);
107 HANDLE IntCreateCurIconHandle(BOOLEAN Anim);
108 VOID FASTCALL IntCleanupCurIcons(struct _EPROCESS *Process, PPROCESSINFO Win32Process);
109
110 BOOL UserDrawIconEx(HDC hDc, INT xLeft, INT yTop, PCURICON_OBJECT pIcon, INT cxWidth,
111 INT cyHeight, UINT istepIfAniCur, HBRUSH hbrFlickerFreeDraw, UINT diFlags);
112 PCURICON_OBJECT FASTCALL UserGetCurIconObject(HCURSOR hCurIcon);
113 BOOL UserSetCursorPos( INT x, INT y, DWORD flags, ULONG_PTR dwExtraInfo, BOOL Hook);
114 BOOL APIENTRY UserClipCursor(RECTL *prcl);
115 PSYSTEM_CURSORINFO IntGetSysCursorInfo(VOID);
116 HCURSOR FASTCALL IntSetCursor(HCURSOR hCursor);
117 BOOL FASTCALL IntDestroyCursor(HANDLE hCurIcon, BOOL bForce);
118
119 #define IntReleaseCurIconObject(CurIconObj) \
120 UserDereferenceObject(CurIconObj)
121
122 /* EOF */