9c203183bb8b8e7b386596e8e9cbc1aefee9a19f
[reactos.git] / reactos / 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), GO_DCE_MAGIC))
38 #define DCEOBJ_FreeDCE(hDCE) GDIOBJ_FreeObj((HGDIOBJ)hDCE, GO_DCE_MAGIC, GDIOBJFLAG_DEFAULT)
39 #define DCEOBJ_LockDCE(hDCE) ((PDCE)GDIOBJ_LockObj((HGDIOBJ)hDCE, GO_DCE_MAGIC))
40 #define DCEOBJ_UnlockDCE(hDCE) GDIOBJ_UnlockObj((HGDIOBJ)hDCE, GO_DCE_MAGIC)
41
42 PDCE DCE_AllocDCE(HWND hWnd, DCE_TYPE type);
43 PDCE DCE_FreeDCE(PDCE dce);
44 VOID DCE_FreeWindowDCE(HWND);
45 INT DCE_ExcludeRgn(HDC, HWND, HRGN);
46 BOOL DCE_InvalidateDCE(HWND, const PRECTL);
47 BOOL DCE_InternalDelete(PDCE dce);
48
49 #endif