1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5  */
6 
7 #ifndef _DCOMPTYPES_H_
8 #define _DCOMPTYPES_H_
9 
10 #include <dxgitype.h>
11 #include <dxgi1_2.h>
12 #include <winapifamily.h>
13 
14 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
15 
16 enum DCOMPOSITION_BITMAP_INTERPOLATION_MODE {
17     DCOMPOSITION_BITMAP_INTERPOLATION_MODE_NEAREST_NEIGHBOR = 0,
18     DCOMPOSITION_BITMAP_INTERPOLATION_MODE_LINEAR = 1,
19     DCOMPOSITION_BITMAP_INTERPOLATION_MODE_INHERIT = 0xffffffff
20 };
21 
22 enum DCOMPOSITION_BORDER_MODE {
23     DCOMPOSITION_BORDER_MODE_SOFT = 0,
24     DCOMPOSITION_BORDER_MODE_HARD = 1,
25     DCOMPOSITION_BORDER_MODE_INHERIT = 0xffffffff
26 };
27 
28 enum DCOMPOSITION_COMPOSITE_MODE {
29     DCOMPOSITION_COMPOSITE_MODE_SOURCE_OVER = 0,
30     DCOMPOSITION_COMPOSITE_MODE_DESTINATION_INVERT = 1,
31 #if _WIN32_WINNT >= _WIN32_WINNT_WINBLUE
32     DCOMPOSITION_COMPOSITE_MODE_MIN_BLEND = 2,
33 #endif
34     DCOMPOSITION_COMPOSITE_MODE_INHERIT = 0xffffffff
35 };
36 
37 #if _WIN32_WINNT >= _WIN32_WINNT_WINBLUE
38 enum DCOMPOSITION_BACKFACE_VISIBILITY {
39     DCOMPOSITION_BACKFACE_VISIBILITY_VISIBLE = 0,
40     DCOMPOSITION_BACKFACE_VISIBILITY_HIDDEN = 1,
41     DCOMPOSITION_BACKFACE_VISIBILITY_INHERIT = 0xffffffff
42 };
43 
44 enum DCOMPOSITION_OPACITY_MODE {
45     DCOMPOSITION_OPACITY_MODE_LAYER = 0,
46     DCOMPOSITION_OPACITY_MODE_MULTIPLY = 1,
47     DCOMPOSITION_OPACITY_MODE_INHERIT = 0xffffffff
48 };
49 #endif
50 
51 #if _WIN32_WINNT >= _WIN32_WINNT_WINTHRESHOLD
52 enum DCOMPOSITION_DEPTH_MODE {
53     DCOMPOSITION_DEPTH_MODE_TREE = 0,
54     DCOMPOSITION_DEPTH_MODE_SPATIAL = 1,
55     DCOMPOSITION_DEPTH_MODE_SORTED = 3,
56     DCOMPOSITION_DEPTH_MODE_INHERIT = 0xffffffff
57 };
58 #endif
59 
60 typedef struct {
61     LARGE_INTEGER lastFrameTime;
62     DXGI_RATIONAL currentCompositionRate;
63     LARGE_INTEGER currentTime;
64     LARGE_INTEGER timeFrequency;
65     LARGE_INTEGER nextEstimatedFrameTime;
66 } DCOMPOSITION_FRAME_STATISTICS;
67 
68 #define COMPOSITIONOBJECT_READ 0x01
69 #define COMPOSITIONOBJECT_WRITE 0x02
70 #define COMPOSITIONOBJECT_ALL_ACCESS (COMPOSITIONOBJECT_READ | COMPOSITIONOBJECT_WRITE)
71 
72 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
73 
74 #endif /* _DCOMPTYPES_H_ */
75