edb75eb3bd32be684d0d05892fed4899de0f4868
[reactos.git] / subsys / win32k / include / dce.h
1 #ifndef __WIN32K_DCE_H
2 #define __WIN32K_DCE_H
3
4 /* Ported from WINE by Jason Filby */
5
6 #include <user32/wininternal.h>
7
8 typedef HANDLE HDCE;
9
10 /* DC hook codes */
11 #define DCHC_INVALIDVISRGN      0x0001
12 #define DCHC_DELETEDC           0x0002
13
14 #define DCHF_INVALIDATEVISRGN   0x0001
15 #define DCHF_VALIDATEVISRGN     0x0002
16
17 typedef enum
18 {
19     DCE_CACHE_DC,   /* This is a cached DC (allocated by USER) */
20     DCE_CLASS_DC,   /* This is a class DC (style CS_CLASSDC) */
21     DCE_WINDOW_DC   /* This is a window DC (style CS_OWNDC) */
22 } DCE_TYPE, *PDCE_TYPE;
23
24 typedef struct tagDCE
25 {
26     struct tagDCE *next;
27     HDC          hDC;
28     HWND         hwndCurrent;
29     HWND         hwndDC;
30     HRGN         hClipRgn;
31     DCE_TYPE     type;
32     DWORD        DCXFlags;
33 } DCE, *PDCE;
34
35
36 #define  DCEOBJ_AllocDCE()  \
37   ((HDCE) GDIOBJ_AllocObj (sizeof (DCE), GDI_OBJECT_TYPE_DCE, (GDICLEANUPPROC) DCE_InternalDelete))
38 #define  DCEOBJ_FreeDCE(hDCE)  GDIOBJ_FreeObj((HGDIOBJ)hDCE, GDI_OBJECT_TYPE_DCE, GDIOBJFLAG_DEFAULT)
39 #define  DCEOBJ_LockDCE(hDCE) ((PDCE)GDIOBJ_LockObj((HGDIOBJ)hDCE, GDI_OBJECT_TYPE_DCE))
40 #define  DCEOBJ_UnlockDCE(hDCE) GDIOBJ_UnlockObj((HGDIOBJ)hDCE, GDI_OBJECT_TYPE_DCE)
41
42 PDCE FASTCALL DCE_AllocDCE(HWND hWnd, DCE_TYPE type); // ???
43 PDCE FASTCALL DceAllocDCE(HWND hWnd, DCE_TYPE Type);
44 PDCE FASTCALL DCE_FreeDCE(PDCE dce);
45 VOID FASTCALL DCE_FreeWindowDCE(HWND);
46 HRGN STDCALL  DceGetVisRgn(HWND hWnd, ULONG Flags, HWND hWndChild, ULONG CFlags);
47 INT  FASTCALL DCE_ExcludeRgn(HDC, HWND, HRGN);
48 BOOL FASTCALL DCE_InvalidateDCE(HWND, const PRECTL);
49 BOOL FASTCALL DCE_InternalDelete(PDCE dce);
50 HWND FASTCALL IntWindowFromDC(HDC hDc);
51
52 #endif