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