1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
#+build windows
package sys_windows
foreign import uxtheme "system:UxTheme.lib"
MARGINS :: struct {
cxLeftWidth: c_int,
cxRightWidth: c_int,
cyTopHeight: c_int,
cyBottomHeight: c_int,
}
PMARGINS :: ^MARGINS
@(default_calling_convention="system")
foreign uxtheme {
IsThemeActive :: proc() -> BOOL ---
GetWindowTheme :: proc(hwnd: HWND) -> HTHEME ---
SetWindowTheme :: proc(hWnd: HWND, pszSubAppName, pszSubIdList: LPCWSTR) -> HRESULT ---
// Buffered painting and buffered animation
BufferedPaintInit :: proc() -> HRESULT ---
BufferedPaintUnInit :: proc() -> HRESULT ---
BeginBufferedPaint :: proc(hdcTarget: HDC, prcTarget: ^RECT, dwFormat: BP_BUFFERFORMAT, pPaintParams: ^BP_PAINTPARAMS, phdc: ^HDC) -> HPAINTBUFFER ---
EndBufferedPaint :: proc(hBufferedPaint: HPAINTBUFFER, fUpdateTarget: BOOL) -> HRESULT ---
GetBufferedPaintTargetRect :: proc(hBufferedPaint: HPAINTBUFFER, prc: ^RECT) -> HRESULT ---
GetBufferedPaintTargetDC :: proc(hBufferedPaint: HPAINTBUFFER) -> HDC ---
GetBufferedPaintDC :: proc(hBufferedPaint: HPAINTBUFFER) -> HDC ---
GetBufferedPaintBits :: proc(hBufferedPaint, ppbBuffer: ^[^]RGBQUAD, pcxRow: ^c_int) -> HRESULT ---
BufferedPaintClear :: proc(hBufferedPaint: HPAINTBUFFER, prc: ^RECT) -> HRESULT ---
BufferedPaintSetAlpha :: proc(hBufferedPaint: HPAINTBUFFER, prc: ^RECT, alpha: BYTE) -> HRESULT ---
BufferedPaintStopAllAnimations :: proc(hwnd: HWND) -> HRESULT ---
BeginBufferedAnimation :: proc(hwnd: HWND, hdcTarget: HDC, prcTarget: ^RECT, dwFormat: BP_BUFFERFORMAT, pPaintParams: ^BP_PAINTPARAMS, pAnimationParams: ^BP_ANIMATIONPARAMS, phdcFrom: ^HDC, phdcTo: ^HDC) -> HANIMATIONBUFFER ---
BufferedPaintRenderAnimation :: proc(hwnd: HWND, hdcTarget: HDC) -> BOOL ---
}
HTHEME :: distinct HANDLE
HPAINTBUFFER :: distinct HANDLE
HANIMATIONBUFFER :: distinct HANDLE
BP_BUFFERFORMAT :: enum c_int {
BPBF_COMPATIBLEBITMAP,
BPBF_DIB,
BPBF_TOPDOWNDIB,
BPBF_TOPDOWNMONODIB,
}
BP_ANIMATIONSTYLE :: enum c_int {
BPAS_NONE,
BPAS_LINEAR,
BPAS_CUBIC,
BPAS_SINE,
}
// Constants for BP_PAINTPARAMS.dwFlags
BPPF_ERASE :: 0x0001
BPPF_NOCLIP :: 0x0002
BPPF_NONCLIENT :: 0x0004
BP_ANIMATIONPARAMS :: struct {
cbSize: DWORD,
dwFlags: DWORD,
style: BP_ANIMATIONSTYLE,
dwDuration: DWORD,
}
BP_PAINTPARAMS :: struct {
cbSize: DWORD,
dwFlags: DWORD,
prcExclude: ^RECT,
pBlendFunction: ^BLENDFUNCTION,
}
|