summaryrefslogtreecommitdiff
path: root/packages/w32/dwmapi.go
diff options
context:
space:
mode:
authorKali Kaneko (leap communications) <kali@leap.se>2019-08-16 12:55:10 +0200
committerKali Kaneko (leap communications) <kali@leap.se>2019-08-16 15:50:28 +0200
commitec4974e7660776e8ab2883b109bfa3f96b4f5317 (patch)
tree6c6ae93cab7e3a0ff6ebb7ec07e3ef8757e5272f /packages/w32/dwmapi.go
parentf4ab1b0463e902f23224c37f1e217241084681df (diff)
[pkg] need to vendorize allendang w32 lib
we use go mod edit -replace
Diffstat (limited to 'packages/w32/dwmapi.go')
-rw-r--r--packages/w32/dwmapi.go254
1 files changed, 254 insertions, 0 deletions
diff --git a/packages/w32/dwmapi.go b/packages/w32/dwmapi.go
new file mode 100644
index 0000000..eb656d1
--- /dev/null
+++ b/packages/w32/dwmapi.go
@@ -0,0 +1,254 @@
+// Copyright 2010-2012 The W32 Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package w32
+
+import (
+ "fmt"
+ "syscall"
+ "unsafe"
+)
+
+// DEFINED IN THE DWM API BUT NOT IMPLEMENTED BY MS:
+// DwmAttachMilContent
+// DwmDetachMilContent
+// DwmEnableComposition
+// DwmGetGraphicsStreamClient
+// DwmGetGraphicsStreamTransformHint
+
+var (
+ moddwmapi = syscall.NewLazyDLL("dwmapi.dll")
+
+ procDwmDefWindowProc = moddwmapi.NewProc("DwmDefWindowProc")
+ procDwmEnableBlurBehindWindow = moddwmapi.NewProc("DwmEnableBlurBehindWindow")
+ procDwmEnableMMCSS = moddwmapi.NewProc("DwmEnableMMCSS")
+ procDwmExtendFrameIntoClientArea = moddwmapi.NewProc("DwmExtendFrameIntoClientArea")
+ procDwmFlush = moddwmapi.NewProc("DwmFlush")
+ procDwmGetColorizationColor = moddwmapi.NewProc("DwmGetColorizationColor")
+ procDwmGetCompositionTimingInfo = moddwmapi.NewProc("DwmGetCompositionTimingInfo")
+ procDwmGetTransportAttributes = moddwmapi.NewProc("DwmGetTransportAttributes")
+ procDwmGetWindowAttribute = moddwmapi.NewProc("DwmGetWindowAttribute")
+ procDwmInvalidateIconicBitmaps = moddwmapi.NewProc("DwmInvalidateIconicBitmaps")
+ procDwmIsCompositionEnabled = moddwmapi.NewProc("DwmIsCompositionEnabled")
+ procDwmModifyPreviousDxFrameDuration = moddwmapi.NewProc("DwmModifyPreviousDxFrameDuration")
+ procDwmQueryThumbnailSourceSize = moddwmapi.NewProc("DwmQueryThumbnailSourceSize")
+ procDwmRegisterThumbnail = moddwmapi.NewProc("DwmRegisterThumbnail")
+ procDwmRenderGesture = moddwmapi.NewProc("DwmRenderGesture")
+ procDwmSetDxFrameDuration = moddwmapi.NewProc("DwmSetDxFrameDuration")
+ procDwmSetIconicLivePreviewBitmap = moddwmapi.NewProc("DwmSetIconicLivePreviewBitmap")
+ procDwmSetIconicThumbnail = moddwmapi.NewProc("DwmSetIconicThumbnail")
+ procDwmSetPresentParameters = moddwmapi.NewProc("DwmSetPresentParameters")
+ procDwmSetWindowAttribute = moddwmapi.NewProc("DwmSetWindowAttribute")
+ procDwmShowContact = moddwmapi.NewProc("DwmShowContact")
+ procDwmTetherContact = moddwmapi.NewProc("DwmTetherContact")
+ procDwmTransitionOwnedWindow = moddwmapi.NewProc("DwmTransitionOwnedWindow")
+ procDwmUnregisterThumbnail = moddwmapi.NewProc("DwmUnregisterThumbnail")
+ procDwmUpdateThumbnailProperties = moddwmapi.NewProc("DwmUpdateThumbnailProperties")
+)
+
+func DwmDefWindowProc(hWnd HWND, msg uint, wParam, lParam uintptr) (bool, uint) {
+ var result uint
+ ret, _, _ := procDwmDefWindowProc.Call(
+ uintptr(hWnd),
+ uintptr(msg),
+ wParam,
+ lParam,
+ uintptr(unsafe.Pointer(&result)))
+ return ret != 0, result
+}
+
+func DwmEnableBlurBehindWindow(hWnd HWND, pBlurBehind *DWM_BLURBEHIND) HRESULT {
+ ret, _, _ := procDwmEnableBlurBehindWindow.Call(
+ uintptr(hWnd),
+ uintptr(unsafe.Pointer(pBlurBehind)))
+ return HRESULT(ret)
+}
+
+func DwmEnableMMCSS(fEnableMMCSS bool) HRESULT {
+ ret, _, _ := procDwmEnableMMCSS.Call(
+ uintptr(BoolToBOOL(fEnableMMCSS)))
+ return HRESULT(ret)
+}
+
+func DwmExtendFrameIntoClientArea(hWnd HWND, pMarInset *MARGINS) HRESULT {
+ ret, _, _ := procDwmExtendFrameIntoClientArea.Call(
+ uintptr(hWnd),
+ uintptr(unsafe.Pointer(pMarInset)))
+ return HRESULT(ret)
+}
+
+func DwmFlush() HRESULT {
+ ret, _, _ := procDwmFlush.Call()
+ return HRESULT(ret)
+}
+
+func DwmGetColorizationColor(pcrColorization *uint32, pfOpaqueBlend *BOOL) HRESULT {
+ ret, _, _ := procDwmGetColorizationColor.Call(
+ uintptr(unsafe.Pointer(pcrColorization)),
+ uintptr(unsafe.Pointer(pfOpaqueBlend)))
+ return HRESULT(ret)
+}
+
+func DwmGetCompositionTimingInfo(hWnd HWND, pTimingInfo *DWM_TIMING_INFO) HRESULT {
+ ret, _, _ := procDwmGetCompositionTimingInfo.Call(
+ uintptr(hWnd),
+ uintptr(unsafe.Pointer(pTimingInfo)))
+ return HRESULT(ret)
+}
+
+func DwmGetTransportAttributes(pfIsRemoting *BOOL, pfIsConnected *BOOL, pDwGeneration *uint32) HRESULT {
+ ret, _, _ := procDwmGetTransportAttributes.Call(
+ uintptr(unsafe.Pointer(pfIsRemoting)),
+ uintptr(unsafe.Pointer(pfIsConnected)),
+ uintptr(unsafe.Pointer(pDwGeneration)))
+ return HRESULT(ret)
+}
+
+// TODO: verify handling of variable arguments
+func DwmGetWindowAttribute(hWnd HWND, dwAttribute uint32) (pAttribute interface{}, result HRESULT) {
+ var pvAttribute, pvAttrSize uintptr
+ switch dwAttribute {
+ case DWMWA_NCRENDERING_ENABLED:
+ v := new(BOOL)
+ pAttribute = v
+ pvAttribute = uintptr(unsafe.Pointer(v))
+ pvAttrSize = unsafe.Sizeof(*v)
+ case DWMWA_CAPTION_BUTTON_BOUNDS, DWMWA_EXTENDED_FRAME_BOUNDS:
+ v := new(RECT)
+ pAttribute = v
+ pvAttribute = uintptr(unsafe.Pointer(v))
+ pvAttrSize = unsafe.Sizeof(*v)
+ case DWMWA_CLOAKED:
+ panic(fmt.Sprintf("DwmGetWindowAttribute(%d) is not currently supported.", dwAttribute))
+ default:
+ panic(fmt.Sprintf("DwmGetWindowAttribute(%d) is not valid.", dwAttribute))
+ }
+
+ ret, _, _ := procDwmGetWindowAttribute.Call(
+ uintptr(hWnd),
+ uintptr(dwAttribute),
+ pvAttribute,
+ pvAttrSize)
+ result = HRESULT(ret)
+ return
+}
+
+func DwmInvalidateIconicBitmaps(hWnd HWND) HRESULT {
+ ret, _, _ := procDwmInvalidateIconicBitmaps.Call(
+ uintptr(hWnd))
+ return HRESULT(ret)
+}
+
+func DwmIsCompositionEnabled(pfEnabled *BOOL) HRESULT {
+ ret, _, _ := procDwmIsCompositionEnabled.Call(
+ uintptr(unsafe.Pointer(pfEnabled)))
+ return HRESULT(ret)
+}
+
+func DwmModifyPreviousDxFrameDuration(hWnd HWND, cRefreshes int, fRelative bool) HRESULT {
+ ret, _, _ := procDwmModifyPreviousDxFrameDuration.Call(
+ uintptr(hWnd),
+ uintptr(cRefreshes),
+ uintptr(BoolToBOOL(fRelative)))
+ return HRESULT(ret)
+}
+
+func DwmQueryThumbnailSourceSize(hThumbnail HTHUMBNAIL, pSize *SIZE) HRESULT {
+ ret, _, _ := procDwmQueryThumbnailSourceSize.Call(
+ uintptr(hThumbnail),
+ uintptr(unsafe.Pointer(pSize)))
+ return HRESULT(ret)
+}
+
+func DwmRegisterThumbnail(hWndDestination HWND, hWndSource HWND, phThumbnailId *HTHUMBNAIL) HRESULT {
+ ret, _, _ := procDwmRegisterThumbnail.Call(
+ uintptr(hWndDestination),
+ uintptr(hWndSource),
+ uintptr(unsafe.Pointer(phThumbnailId)))
+ return HRESULT(ret)
+}
+
+func DwmRenderGesture(gt GESTURE_TYPE, cContacts uint, pdwPointerID *uint32, pPoints *POINT) {
+ procDwmRenderGesture.Call(
+ uintptr(gt),
+ uintptr(cContacts),
+ uintptr(unsafe.Pointer(pdwPointerID)),
+ uintptr(unsafe.Pointer(pPoints)))
+ return
+}
+
+func DwmSetDxFrameDuration(hWnd HWND, cRefreshes int) HRESULT {
+ ret, _, _ := procDwmSetDxFrameDuration.Call(
+ uintptr(hWnd),
+ uintptr(cRefreshes))
+ return HRESULT(ret)
+}
+
+func DwmSetIconicLivePreviewBitmap(hWnd HWND, hbmp HBITMAP, pptClient *POINT, dwSITFlags uint32) HRESULT {
+ ret, _, _ := procDwmSetIconicLivePreviewBitmap.Call(
+ uintptr(hWnd),
+ uintptr(hbmp),
+ uintptr(unsafe.Pointer(pptClient)),
+ uintptr(dwSITFlags))
+ return HRESULT(ret)
+}
+
+func DwmSetIconicThumbnail(hWnd HWND, hbmp HBITMAP, dwSITFlags uint32) HRESULT {
+ ret, _, _ := procDwmSetIconicThumbnail.Call(
+ uintptr(hWnd),
+ uintptr(hbmp),
+ uintptr(dwSITFlags))
+ return HRESULT(ret)
+}
+
+func DwmSetPresentParameters(hWnd HWND, pPresentParams *DWM_PRESENT_PARAMETERS) HRESULT {
+ ret, _, _ := procDwmSetPresentParameters.Call(
+ uintptr(hWnd),
+ uintptr(unsafe.Pointer(pPresentParams)))
+ return HRESULT(ret)
+}
+
+func DwmSetWindowAttribute(hWnd HWND, dwAttribute uint32, pvAttribute LPCVOID, cbAttribute uint32) HRESULT {
+ ret, _, _ := procDwmSetWindowAttribute.Call(
+ uintptr(hWnd),
+ uintptr(dwAttribute),
+ uintptr(pvAttribute),
+ uintptr(cbAttribute))
+ return HRESULT(ret)
+}
+
+func DwmShowContact(dwPointerID uint32, eShowContact DWM_SHOWCONTACT) {
+ procDwmShowContact.Call(
+ uintptr(dwPointerID),
+ uintptr(eShowContact))
+ return
+}
+
+func DwmTetherContact(dwPointerID uint32, fEnable bool, ptTether POINT) {
+ procDwmTetherContact.Call(
+ uintptr(dwPointerID),
+ uintptr(BoolToBOOL(fEnable)),
+ uintptr(unsafe.Pointer(&ptTether)))
+ return
+}
+
+func DwmTransitionOwnedWindow(hWnd HWND, target DWMTRANSITION_OWNEDWINDOW_TARGET) {
+ procDwmTransitionOwnedWindow.Call(
+ uintptr(hWnd),
+ uintptr(target))
+ return
+}
+
+func DwmUnregisterThumbnail(hThumbnailId HTHUMBNAIL) HRESULT {
+ ret, _, _ := procDwmUnregisterThumbnail.Call(
+ uintptr(hThumbnailId))
+ return HRESULT(ret)
+}
+
+func DwmUpdateThumbnailProperties(hThumbnailId HTHUMBNAIL, ptnProperties *DWM_THUMBNAIL_PROPERTIES) HRESULT {
+ ret, _, _ := procDwmUpdateThumbnailProperties.Call(
+ uintptr(hThumbnailId),
+ uintptr(unsafe.Pointer(ptnProperties)))
+ return HRESULT(ret)
+}