[Win32k]
[reactos.git] / reactos / win32ss / user / ntuser / cursoricon.h
index 3bf5e19..a6d842c 100644 (file)
@@ -2,37 +2,53 @@
 
 #define MAXCURICONHANDLES 4096
 
-typedef struct tagCURICON_PROCESS
-{
-  LIST_ENTRY ListEntry;
-  PPROCESSINFO Process;
-} CURICON_PROCESS, *PCURICON_PROCESS;
-
 #ifdef NEW_CURSORICON
-typedef struct _CURICON_FRAME
+typedef struct _CURICON_OBJECT
 {
+    PROCMARKHEAD head;
+    struct _CURICON_OBJECT* pcurNext;
+    UNICODE_STRING strName;
+    USHORT atomModName;
+    USHORT rt;
+    ULONG CURSORF_flags;
+    SHORT xHotspot;
+    SHORT yHotspot;
     HBITMAP hbmMask;
     HBITMAP hbmColor;
     HBITMAP hbmAlpha;
-} CURICON_FRAME, *PCURICON_FRAME;
+    RECT rcBounds;
+    HBITMAP hbmUserAlpha;
+    ULONG bpp;
+    ULONG cx;
+    ULONG cy;
+} CURICON_OBJECT, *PCURICON_OBJECT;
 
-typedef struct _CURICON_OBJECT
+typedef struct tagACON
 {
-  PROCMARKHEAD head;
-  LIST_ENTRY ListEntry;
-  HANDLE Self;
-  LIST_ENTRY ProcessList;
-  HMODULE hModule;
-  HRSRC hRsrc;
-  SIZE Size;
-  BYTE Shadow;
-  BOOL bIcon;
-  POINTL ptlHotspot;
-  CURICON_FRAME aFrame[1];
-} CURICON_OBJECT, *PCURICON_OBJECT;
+    PROCMARKHEAD head;
+    struct _CURICON_OBJECT* pcurNext;
+    UNICODE_STRING strName;
+    USHORT atomModName;
+    USHORT rt;
+    ULONG CURSORF_flags;
+    INT cpcur;
+    INT cicur;
+    PCURICON_OBJECT * aspcur;
+    DWORD * aicur;
+    INT * ajifRate;
+    INT iicur;
+} ACON, *PACON;
+
+C_ASSERT(FIELD_OFFSET(ACON, cpcur) == FIELD_OFFSET(CURICON_OBJECT, xHotspot));
 
 #else
 
+typedef struct tagCURICON_PROCESS
+{
+  LIST_ENTRY ListEntry;
+  PPROCESSINFO Process;
+} CURICON_PROCESS, *PCURICON_PROCESS;
+
 typedef struct _CURICON_OBJECT
 {
   PROCMARKHEAD head;
@@ -88,7 +104,7 @@ typedef struct _SYSTEM_CURSORINFO
 } SYSTEM_CURSORINFO, *PSYSTEM_CURSORINFO;
 
 BOOL InitCursorImpl(VOID);
-PCURICON_OBJECT IntCreateCurIconHandle(VOID);
+HANDLE IntCreateCurIconHandle(BOOLEAN Anim);
 VOID FASTCALL IntCleanupCurIcons(struct _EPROCESS *Process, PPROCESSINFO Win32Process);
 
 BOOL UserDrawIconEx(HDC hDc, INT xLeft, INT yTop, PCURICON_OBJECT pIcon, INT cxWidth,
@@ -97,6 +113,8 @@ PCURICON_OBJECT FASTCALL UserGetCurIconObject(HCURSOR hCurIcon);
 BOOL UserSetCursorPos( INT x, INT y, DWORD flags, ULONG_PTR dwExtraInfo, BOOL Hook);
 BOOL APIENTRY UserClipCursor(RECTL *prcl);
 PSYSTEM_CURSORINFO IntGetSysCursorInfo(VOID);
+HCURSOR FASTCALL IntSetCursor(HCURSOR hCursor);
+BOOL FASTCALL IntDestroyCursor(HANDLE hCurIcon, BOOL bForce);
 
 #define IntReleaseCurIconObject(CurIconObj) \
   UserDereferenceObject(CurIconObj)