xref: /reactos/sdk/include/psdk/dwmapi.h (revision 1734f297)
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 typedef ULONGLONG DWM_FRAME_COUNT;
38 typedef ULONGLONG QPC_TIME;
39 
40 typedef struct _UNSIGNED_RATIO {
41     UINT32 uiNumerator;
42     UINT32 uiDenominator;
43 } UNSIGNED_RATIO;
44 
45 typedef struct _DWM_TIMING_INFO {
46     UINT32 cbSize;
47     UNSIGNED_RATIO rateRefresh;
48     QPC_TIME qpcRefreshPeriod;
49     UNSIGNED_RATIO rateCompose;
50     QPC_TIME qpcVBlank;
51     DWM_FRAME_COUNT cRefresh;
52     UINT cDXRefresh;
53     QPC_TIME qpcCompose;
54     DWM_FRAME_COUNT cFrame;
55     UINT cDXPresent;
56     DWM_FRAME_COUNT cRefreshFrame;
57     DWM_FRAME_COUNT cFrameSubmitted;
58     UINT cDXPresentSubmitted;
59     DWM_FRAME_COUNT cFrameConfirmed;
60     UINT cDXPresentConfirmed;
61     DWM_FRAME_COUNT cRefreshConfirmed;
62     UINT cDXRefreshConfirmed;
63     DWM_FRAME_COUNT cFramesLate;
64     UINT cFramesOutstanding;
65     DWM_FRAME_COUNT cFrameDisplayed;
66     QPC_TIME qpcFrameDisplayed;
67     DWM_FRAME_COUNT cRefreshFrameDisplayed;
68     DWM_FRAME_COUNT cFrameComplete;
69     QPC_TIME qpcFrameComplete;
70     DWM_FRAME_COUNT cFramePending;
71     QPC_TIME qpcFramePending;
72     DWM_FRAME_COUNT cFramesDisplayed;
73     DWM_FRAME_COUNT cFramesComplete;
74     DWM_FRAME_COUNT cFramesPending;
75     DWM_FRAME_COUNT cFramesAvailable;
76     DWM_FRAME_COUNT cFramesDropped;
77     DWM_FRAME_COUNT cFramesMissed;
78     DWM_FRAME_COUNT cRefreshNextDisplayed;
79     DWM_FRAME_COUNT cRefreshNextPresented;
80     DWM_FRAME_COUNT cRefreshesDisplayed;
81     DWM_FRAME_COUNT cRefreshesPresented;
82     DWM_FRAME_COUNT cRefreshStarted;
83     ULONGLONG cPixelsReceived;
84     ULONGLONG cPixelsDrawn;
85     DWM_FRAME_COUNT cBuffersEmpty;
86 } DWM_TIMING_INFO;
87 
88 typedef struct _MilMatrix3x2D
89 {
90     DOUBLE S_11;
91     DOUBLE S_12;
92     DOUBLE S_21;
93     DOUBLE S_22;
94     DOUBLE DX;
95     DOUBLE DY;
96 } MilMatrix3x2D;
97 
98 #define DWM_BB_ENABLE                 0x00000001
99 #define DWM_BB_BLURREGION             0x00000002
100 #define DWM_BB_TRANSITIONONMAXIMIZED  0x00000004
101 
102 typedef struct _DWM_BLURBEHIND
103 {
104     DWORD dwFlags;
105     BOOL fEnable;
106     HRGN hRgnBlur;
107     BOOL fTransitionOnMaximized;
108 } DWM_BLURBEHIND, *PDWM_BLURBEHIND;
109 
110 typedef struct _DWM_THUMBNAIL_PROPERTIES
111 {
112     DWORD dwFlags;
113     RECT  rcDestination;
114     RECT  rcSource;
115     BYTE  opacity;
116     BOOL  fVisible;
117     BOOL  fSourceClientAreaOnly;
118 } DWM_THUMBNAIL_PROPERTIES, *PDWM_THUMBNAIL_PROPERTIES;
119 
120 #include <poppack.h>
121 
122 DWMAPI DwmDefWindowProc(HWND, UINT, WPARAM, LPARAM, LRESULT*);
123 DWMAPI DwmEnableBlurBehindWindow(HWND, const DWM_BLURBEHIND *);
124 DWMAPI DwmEnableComposition(UINT);
125 DWMAPI DwmEnableMMCSS(BOOL);
126 DWMAPI DwmExtendFrameIntoClientArea(HWND,const MARGINS*);
127 DWMAPI DwmGetColorizationColor(DWORD*,BOOL);
128 DWMAPI DwmGetCompositionTimingInfo(HWND,DWM_TIMING_INFO*);
129 DWMAPI DwmInvalidateIconicBitmaps(HWND);
130 DWMAPI DwmIsCompositionEnabled(BOOL*);
131 DWMAPI DwmRegisterThumbnail(HWND, HWND, PHTHUMBNAIL);
132 DWMAPI DwmSetWindowAttribute(HWND, DWORD, LPCVOID, DWORD);
133 DWMAPI DwmUnregisterThumbnail(HTHUMBNAIL);
134 DWMAPI DwmUpdateThumbnailProperties(HTHUMBNAIL, const DWM_THUMBNAIL_PROPERTIES *);
135 
136 #ifdef __cplusplus
137 }
138 #endif
139 
140 #endif  /* __WINE_DWMAPI_H */
141