xref: /reactos/sdk/include/psdk/dwmapi.h (revision 6bbf09b6)
1 /*
2  * This library is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU Lesser General Public
4  * License as published by the Free Software Foundation; either
5  * version 2.1 of the License, or (at your option) any later version.
6  *
7  * This library is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
10  * Lesser General Public License for more details.
11  *
12  * You should have received a copy of the GNU Lesser General Public
13  * License along with this library; if not, write to the Free Software
14  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
15  */
16 
17 #ifndef __WINE_DWMAPI_H
18 #define __WINE_DWMAPI_H
19 
20 #include "wtypes.h"
21 #include "uxtheme.h"
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 #ifndef DWMAPI
28 # define DWMAPI        STDAPI
29 # define DWMAPI_(type) STDAPI_(type)
30 #endif
31 
32 DECLARE_HANDLE(HTHUMBNAIL);
33 typedef HTHUMBNAIL *PHTHUMBNAIL;
34 
35 #include <pshpack1.h>
36 
37 static const UINT c_DwmMaxQueuedBuffers = 8;
38 static const UINT c_DwmMaxMonitors = 16;
39 static const UINT c_DwmMaxAdapters = 16;
40 
41 typedef ULONGLONG DWM_FRAME_COUNT;
42 typedef ULONGLONG QPC_TIME;
43 
44 enum DWMWINDOWATTRIBUTE {
45     DWMWA_NCRENDERING_ENABLED = 1,
46     DWMWA_NCRENDERING_POLICY,
47     DWMWA_TRANSITIONS_FORCEDISABLED,
48     DWMWA_ALLOW_NCPAINT,
49     DWMWA_CAPTION_BUTTON_BOUNDS,
50     DWMWA_NONCLIENT_RTL_LAYOUT,
51     DWMWA_FORCE_ICONIC_REPRESENTATION,
52     DWMWA_FLIP3D_POLICY,
53     DWMWA_EXTENDED_FRAME_BOUNDS,
54     DWMWA_HAS_ICONIC_BITMAP,
55     DWMWA_DISALLOW_PEEK,
56     DWMWA_EXCLUDED_FROM_PEEK,
57     DWMWA_CLOAK,
58     DWMWA_CLOAKED,
59     DWMWA_FREEZE_REPRESENTATION,
60     DWMWA_LAST
61 };
62 
63 enum DWMNCRENDERINGPOLICY {
64     DWMNCRP_USEWINDOWSTYLE,
65     DWMNCRP_DISABLED,
66     DWMNCRP_ENABLED,
67     DWMNCRP_LAST
68 };
69 
70 enum DWMFLIP3DWINDOWPOLICY {
71     DWMFLIP3D_DEFAULT,
72     DWMFLIP3D_EXCLUDEBELOW,
73     DWMFLIP3D_EXCLUDEABOVE,
74     DWMFLIP3D_LAST
75 };
76 
77 typedef enum _DWM_SOURCE_FRAME_SAMPLING {
78     DWM_SOURCE_FRAME_SAMPLING_POINT,
79     DWM_SOURCE_FRAME_SAMPLING_COVERAGE,
80     DWM_SOURCE_FRAME_SAMPLING_LAST
81 } DWM_SOURCE_FRAME_SAMPLING;
82 
83 typedef struct _UNSIGNED_RATIO {
84     UINT32 uiNumerator;
85     UINT32 uiDenominator;
86 } UNSIGNED_RATIO;
87 
88 typedef struct _DWM_TIMING_INFO {
89     UINT32 cbSize;
90     UNSIGNED_RATIO rateRefresh;
91     QPC_TIME qpcRefreshPeriod;
92     UNSIGNED_RATIO rateCompose;
93     QPC_TIME qpcVBlank;
94     DWM_FRAME_COUNT cRefresh;
95     UINT cDXRefresh;
96     QPC_TIME qpcCompose;
97     DWM_FRAME_COUNT cFrame;
98     UINT cDXPresent;
99     DWM_FRAME_COUNT cRefreshFrame;
100     DWM_FRAME_COUNT cFrameSubmitted;
101     UINT cDXPresentSubmitted;
102     DWM_FRAME_COUNT cFrameConfirmed;
103     UINT cDXPresentConfirmed;
104     DWM_FRAME_COUNT cRefreshConfirmed;
105     UINT cDXRefreshConfirmed;
106     DWM_FRAME_COUNT cFramesLate;
107     UINT cFramesOutstanding;
108     DWM_FRAME_COUNT cFrameDisplayed;
109     QPC_TIME qpcFrameDisplayed;
110     DWM_FRAME_COUNT cRefreshFrameDisplayed;
111     DWM_FRAME_COUNT cFrameComplete;
112     QPC_TIME qpcFrameComplete;
113     DWM_FRAME_COUNT cFramePending;
114     QPC_TIME qpcFramePending;
115     DWM_FRAME_COUNT cFramesDisplayed;
116     DWM_FRAME_COUNT cFramesComplete;
117     DWM_FRAME_COUNT cFramesPending;
118     DWM_FRAME_COUNT cFramesAvailable;
119     DWM_FRAME_COUNT cFramesDropped;
120     DWM_FRAME_COUNT cFramesMissed;
121     DWM_FRAME_COUNT cRefreshNextDisplayed;
122     DWM_FRAME_COUNT cRefreshNextPresented;
123     DWM_FRAME_COUNT cRefreshesDisplayed;
124     DWM_FRAME_COUNT cRefreshesPresented;
125     DWM_FRAME_COUNT cRefreshStarted;
126     ULONGLONG cPixelsReceived;
127     ULONGLONG cPixelsDrawn;
128     DWM_FRAME_COUNT cBuffersEmpty;
129 } DWM_TIMING_INFO;
130 
131 typedef struct _MilMatrix3x2D
132 {
133     DOUBLE S_11;
134     DOUBLE S_12;
135     DOUBLE S_21;
136     DOUBLE S_22;
137     DOUBLE DX;
138     DOUBLE DY;
139 } MilMatrix3x2D;
140 
141 #define DWM_FRAME_DURATION_DEFAULT    -1
142 
143 #define DWM_EC_DISABLECOMPOSITION     0
144 #define DWM_EC_ENABLECOMPOSITION      1
145 
146 #define DWM_BB_ENABLE                 0x00000001
147 #define DWM_BB_BLURREGION             0x00000002
148 #define DWM_BB_TRANSITIONONMAXIMIZED  0x00000004
149 
150 typedef struct _DWM_BLURBEHIND
151 {
152     DWORD dwFlags;
153     BOOL fEnable;
154     HRGN hRgnBlur;
155     BOOL fTransitionOnMaximized;
156 } DWM_BLURBEHIND, *PDWM_BLURBEHIND;
157 
158 #define DWM_SIT_DISPLAYFRAME          0x00000001
159 
160 #define DWM_CLOAKED_APP               0x00000001
161 #define DWM_CLOAKED_SHELL             0x00000002
162 #define DWM_CLOAKED_INHERITED         0x00000004
163 
164 #define DWM_TNP_RECTDESTINATION       0x00000001
165 #define DWM_TNP_RECTSOURCE            0x00000002
166 #define DWM_TNP_OPACITY               0x00000004
167 #define DWM_TNP_VISIBLE               0x00000008
168 #define DWM_TNP_SOURCECLIENTAREAONLY  0x00000010
169 
170 typedef struct _DWM_THUMBNAIL_PROPERTIES
171 {
172     DWORD dwFlags;
173     RECT  rcDestination;
174     RECT  rcSource;
175     BYTE  opacity;
176     BOOL  fVisible;
177     BOOL  fSourceClientAreaOnly;
178 } DWM_THUMBNAIL_PROPERTIES, *PDWM_THUMBNAIL_PROPERTIES;
179 
180 typedef struct _DWM_PRESENT_PARAMETERS {
181     UINT32 cbSize;
182     BOOL fQueue;
183     DWM_FRAME_COUNT cRefreshStart;
184     UINT cBuffer;
185     BOOL fUseSourceRate;
186     UNSIGNED_RATIO rateSource;
187     UINT cRefreshesPerFrame;
188     DWM_SOURCE_FRAME_SAMPLING eSampling;
189 } DWM_PRESENT_PARAMETERS;
190 
191 #include <poppack.h>
192 
193 DWMAPI DwmAttachMilContent(HWND);
194 DWMAPI_(BOOL) DwmDefWindowProc(HWND, UINT, WPARAM, LPARAM, LRESULT*);
195 DWMAPI DwmDetachMilContent(HWND);
196 DWMAPI DwmEnableBlurBehindWindow(HWND, const DWM_BLURBEHIND *);
197 DWMAPI DwmEnableComposition(UINT);
198 DWMAPI DwmEnableMMCSS(BOOL);
199 DWMAPI DwmExtendFrameIntoClientArea(HWND,const MARGINS*);
200 DWMAPI DwmFlush(void);
201 DWMAPI DwmGetColorizationColor(DWORD *, BOOL *);
202 DWMAPI DwmGetCompositionTimingInfo(HWND,DWM_TIMING_INFO*);
203 DWMAPI DwmGetGraphicsStreamClient(UINT, UUID *);
204 DWMAPI DwmGetGraphicsStreamTransformHint(UINT, MilMatrix3x2D *);
205 DWMAPI DwmGetTransportAttributes(BOOL*, BOOL*, DWORD*);
206 DWMAPI DwmGetWindowAttribute(HWND, DWORD, PVOID, DWORD);
207 DWMAPI DwmInvalidateIconicBitmaps(HWND);
208 DWMAPI DwmIsCompositionEnabled(BOOL*);
209 DWMAPI DwmRegisterThumbnail(HWND, HWND, PHTHUMBNAIL);
210 DWMAPI DwmSetIconicLivePreviewBitmap(HWND, HBITMAP, POINT*, DWORD);
211 DWMAPI DwmSetIconicThumbnail(HWND, HBITMAP, DWORD);
212 DWMAPI DwmSetPresentParameters(HWND, DWM_PRESENT_PARAMETERS *);
213 DWMAPI DwmSetWindowAttribute(HWND, DWORD, LPCVOID, DWORD);
214 DWMAPI DwmUnregisterThumbnail(HTHUMBNAIL);
215 DWMAPI DwmUpdateThumbnailProperties(HTHUMBNAIL, const DWM_THUMBNAIL_PROPERTIES *);
216 
217 #ifdef __cplusplus
218 }
219 #endif
220 
221 #endif  /* __WINE_DWMAPI_H */
222