- Move from using include guards to pragma once.
[reactos.git] / reactos / subsystems / win32 / win32k / include / dce.h
1 #pragma once
2
3 /* Ported from WINE by Jason Filby */
4
5 typedef struct tagDCE *PDCE;
6
7 #include <include/window.h>
8
9 typedef HANDLE HDCE;
10
11 /* DC hook codes */
12 #define DCHC_INVALIDVISRGN 0x0001
13 #define DCHC_DELETEDC 0x0002
14
15 #define DCHF_INVALIDATEVISRGN 0x0001
16 #define DCHF_VALIDATEVISRGN 0x0002
17
18 typedef enum
19 {
20 DCE_CACHE_DC, /* This is a cached DC (allocated by USER) */
21 DCE_CLASS_DC, /* This is a class DC (style CS_CLASSDC) */
22 DCE_WINDOW_DC /* This is a window DC (style CS_OWNDC) */
23 } DCE_TYPE, *PDCE_TYPE;
24
25 typedef struct tagDCE
26 {
27 LIST_ENTRY List;
28 HDC hDC;
29 HWND hwndCurrent;
30 PWND pwndOrg;
31 PWND pwndClip;
32 PWND pwndRedirect;
33 HRGN hrgnClip;
34 HRGN hrgnClipPublic;
35 HRGN hrgnSavedVis;
36 DWORD DCXFlags;
37 PTHREADINFO ptiOwner;
38 PPROCESSINFO ppiOwner;
39 struct _MONITOR* pMonitor;
40 } DCE; /* PDCE already declared at top of file */
41
42 /* internal DCX flags, see psdk/winuser.h for the rest */
43 #define DCX_DCEEMPTY 0x00000800
44 #define DCX_DCEBUSY 0x00001000
45 #define DCX_DCEDIRTY 0x00002000
46 #define DCX_LAYEREDWIN 0x00004000
47 #define DCX_DCPOWNED 0x00008000
48 #define DCX_NOCLIPCHILDREN 0x00080000
49 #define DCX_NORECOMPUTE 0x00100000
50 #define DCX_INDESTROY 0x00400000
51
52 BOOL FASTCALL DCE_Cleanup(PDCE pDce);
53 PDCE FASTCALL DceAllocDCE(PWINDOW_OBJECT Window, DCE_TYPE Type);
54 PDCE FASTCALL DCE_FreeDCE(PDCE dce);
55 VOID FASTCALL DCE_FreeWindowDCE(HWND);
56 INT FASTCALL DCE_ExcludeRgn(HDC, HWND, HRGN);
57 BOOL FASTCALL DCE_InvalidateDCE(HWND, const PRECTL);
58 HWND FASTCALL IntWindowFromDC(HDC hDc);
59 PDCE FASTCALL DceFreeDCE(PDCE dce, BOOLEAN Force);
60 void FASTCALL DceEmptyCache(void);
61 VOID FASTCALL DceResetActiveDCEs(PWINDOW_OBJECT Window);
62 void FASTCALL DceFreeClassDCE(HDC);
63 HWND FASTCALL UserGethWnd(HDC,PWNDOBJ*);
64 void FASTCALL DceFreeWindowDCE(PWINDOW_OBJECT);
65 void FASTCALL DceFreeThreadDCE(PTHREADINFO);