//! NOTE: this file is autogenerated, DO NOT MODIFY
//--------------------------------------------------------------------------------
// Section: Constants (20)
//--------------------------------------------------------------------------------
pub const DWM_BB_ENABLE = @as(u32, 1);
pub const DWM_BB_BLURREGION = @as(u32, 2);
pub const DWM_BB_TRANSITIONONMAXIMIZED = @as(u32, 4);
pub const DWMWA_COLOR_DEFAULT = @as(u32, 4294967295);
pub const DWMWA_COLOR_NONE = @as(u32, 4294967294);
pub const DWM_CLOAKED_APP = @as(u32, 1);
pub const DWM_CLOAKED_SHELL = @as(u32, 2);
pub const DWM_CLOAKED_INHERITED = @as(u32, 4);
pub const DWM_TNP_RECTDESTINATION = @as(u32, 1);
pub const DWM_TNP_RECTSOURCE = @as(u32, 2);
pub const DWM_TNP_OPACITY = @as(u32, 4);
pub const DWM_TNP_VISIBLE = @as(u32, 8);
pub const DWM_TNP_SOURCECLIENTAREAONLY = @as(u32, 16);
pub const DWM_FRAME_DURATION_DEFAULT = @as(i32, -1);
pub const DWM_EC_DISABLECOMPOSITION = @as(u32, 0);
pub const DWM_EC_ENABLECOMPOSITION = @as(u32, 1);
pub const DWM_SIT_DISPLAYFRAME = @as(u32, 1);
pub const c_DwmMaxQueuedBuffers = @as(u32, 8);
pub const c_DwmMaxMonitors = @as(u32, 16);
pub const c_DwmMaxAdapters = @as(u32, 16);

//--------------------------------------------------------------------------------
// Section: Types (15)
//--------------------------------------------------------------------------------
pub const DWM_BLURBEHIND = extern struct {
    dwFlags: u32 align(1),
    fEnable: BOOL align(1),
    hRgnBlur: ?HRGN align(1),
    fTransitionOnMaximized: BOOL align(1),
};

pub const DWMWINDOWATTRIBUTE = enum(i32) {
    NCRENDERING_ENABLED = 1,
    NCRENDERING_POLICY = 2,
    TRANSITIONS_FORCEDISABLED = 3,
    ALLOW_NCPAINT = 4,
    CAPTION_BUTTON_BOUNDS = 5,
    NONCLIENT_RTL_LAYOUT = 6,
    FORCE_ICONIC_REPRESENTATION = 7,
    FLIP3D_POLICY = 8,
    EXTENDED_FRAME_BOUNDS = 9,
    HAS_ICONIC_BITMAP = 10,
    DISALLOW_PEEK = 11,
    EXCLUDED_FROM_PEEK = 12,
    CLOAK = 13,
    CLOAKED = 14,
    FREEZE_REPRESENTATION = 15,
    PASSIVE_UPDATE_MODE = 16,
    USE_HOSTBACKDROPBRUSH = 17,
    USE_IMMERSIVE_DARK_MODE = 20,
    WINDOW_CORNER_PREFERENCE = 33,
    BORDER_COLOR = 34,
    CAPTION_COLOR = 35,
    TEXT_COLOR = 36,
    VISIBLE_FRAME_BORDER_THICKNESS = 37,
    LAST = 38,
};
pub const DWMWA_NCRENDERING_ENABLED = DWMWINDOWATTRIBUTE.NCRENDERING_ENABLED;
pub const DWMWA_NCRENDERING_POLICY = DWMWINDOWATTRIBUTE.NCRENDERING_POLICY;
pub const DWMWA_TRANSITIONS_FORCEDISABLED = DWMWINDOWATTRIBUTE.TRANSITIONS_FORCEDISABLED;
pub const DWMWA_ALLOW_NCPAINT = DWMWINDOWATTRIBUTE.ALLOW_NCPAINT;
pub const DWMWA_CAPTION_BUTTON_BOUNDS = DWMWINDOWATTRIBUTE.CAPTION_BUTTON_BOUNDS;
pub const DWMWA_NONCLIENT_RTL_LAYOUT = DWMWINDOWATTRIBUTE.NONCLIENT_RTL_LAYOUT;
pub const DWMWA_FORCE_ICONIC_REPRESENTATION = DWMWINDOWATTRIBUTE.FORCE_ICONIC_REPRESENTATION;
pub const DWMWA_FLIP3D_POLICY = DWMWINDOWATTRIBUTE.FLIP3D_POLICY;
pub const DWMWA_EXTENDED_FRAME_BOUNDS = DWMWINDOWATTRIBUTE.EXTENDED_FRAME_BOUNDS;
pub const DWMWA_HAS_ICONIC_BITMAP = DWMWINDOWATTRIBUTE.HAS_ICONIC_BITMAP;
pub const DWMWA_DISALLOW_PEEK = DWMWINDOWATTRIBUTE.DISALLOW_PEEK;
pub const DWMWA_EXCLUDED_FROM_PEEK = DWMWINDOWATTRIBUTE.EXCLUDED_FROM_PEEK;
pub const DWMWA_CLOAK = DWMWINDOWATTRIBUTE.CLOAK;
pub const DWMWA_CLOAKED = DWMWINDOWATTRIBUTE.CLOAKED;
pub const DWMWA_FREEZE_REPRESENTATION = DWMWINDOWATTRIBUTE.FREEZE_REPRESENTATION;
pub const DWMWA_PASSIVE_UPDATE_MODE = DWMWINDOWATTRIBUTE.PASSIVE_UPDATE_MODE;
pub const DWMWA_USE_HOSTBACKDROPBRUSH = DWMWINDOWATTRIBUTE.USE_HOSTBACKDROPBRUSH;
pub const DWMWA_USE_IMMERSIVE_DARK_MODE = DWMWINDOWATTRIBUTE.USE_IMMERSIVE_DARK_MODE;
pub const DWMWA_WINDOW_CORNER_PREFERENCE = DWMWINDOWATTRIBUTE.WINDOW_CORNER_PREFERENCE;
pub const DWMWA_BORDER_COLOR = DWMWINDOWATTRIBUTE.BORDER_COLOR;
pub const DWMWA_CAPTION_COLOR = DWMWINDOWATTRIBUTE.CAPTION_COLOR;
pub const DWMWA_TEXT_COLOR = DWMWINDOWATTRIBUTE.TEXT_COLOR;
pub const DWMWA_VISIBLE_FRAME_BORDER_THICKNESS = DWMWINDOWATTRIBUTE.VISIBLE_FRAME_BORDER_THICKNESS;
pub const DWMWA_LAST = DWMWINDOWATTRIBUTE.LAST;

pub const DWM_WINDOW_CORNER_PREFERENCE = enum(i32) {
    DEFAULT = 0,
    DONOTROUND = 1,
    ROUND = 2,
    ROUNDSMALL = 3,
};
pub const DWMWCP_DEFAULT = DWM_WINDOW_CORNER_PREFERENCE.DEFAULT;
pub const DWMWCP_DONOTROUND = DWM_WINDOW_CORNER_PREFERENCE.DONOTROUND;
pub const DWMWCP_ROUND = DWM_WINDOW_CORNER_PREFERENCE.ROUND;
pub const DWMWCP_ROUNDSMALL = DWM_WINDOW_CORNER_PREFERENCE.ROUNDSMALL;

pub const DWMNCRENDERINGPOLICY = enum(i32) {
    USEWINDOWSTYLE = 0,
    DISABLED = 1,
    ENABLED = 2,
    LAST = 3,
};
pub const DWMNCRP_USEWINDOWSTYLE = DWMNCRENDERINGPOLICY.USEWINDOWSTYLE;
pub const DWMNCRP_DISABLED = DWMNCRENDERINGPOLICY.DISABLED;
pub const DWMNCRP_ENABLED = DWMNCRENDERINGPOLICY.ENABLED;
pub const DWMNCRP_LAST = DWMNCRENDERINGPOLICY.LAST;

pub const DWMFLIP3DWINDOWPOLICY = enum(i32) {
    DEFAULT = 0,
    EXCLUDEBELOW = 1,
    EXCLUDEABOVE = 2,
    LAST = 3,
};
pub const DWMFLIP3D_DEFAULT = DWMFLIP3DWINDOWPOLICY.DEFAULT;
pub const DWMFLIP3D_EXCLUDEBELOW = DWMFLIP3DWINDOWPOLICY.EXCLUDEBELOW;
pub const DWMFLIP3D_EXCLUDEABOVE = DWMFLIP3DWINDOWPOLICY.EXCLUDEABOVE;
pub const DWMFLIP3D_LAST = DWMFLIP3DWINDOWPOLICY.LAST;

pub const DWM_THUMBNAIL_PROPERTIES = extern struct {
    dwFlags: u32 align(1),
    rcDestination: RECT align(1),
    rcSource: RECT align(1),
    opacity: u8 align(1),
    fVisible: BOOL align(1),
    fSourceClientAreaOnly: BOOL align(1),
};

pub const UNSIGNED_RATIO = extern struct {
    uiNumerator: u32 align(1),
    uiDenominator: u32 align(1),
};

pub const DWM_TIMING_INFO = extern struct {
    cbSize: u32 align(1),
    rateRefresh: UNSIGNED_RATIO align(1),
    qpcRefreshPeriod: u64 align(1),
    rateCompose: UNSIGNED_RATIO align(1),
    qpcVBlank: u64 align(1),
    cRefresh: u64 align(1),
    cDXRefresh: u32 align(1),
    qpcCompose: u64 align(1),
    cFrame: u64 align(1),
    cDXPresent: u32 align(1),
    cRefreshFrame: u64 align(1),
    cFrameSubmitted: u64 align(1),
    cDXPresentSubmitted: u32 align(1),
    cFrameConfirmed: u64 align(1),
    cDXPresentConfirmed: u32 align(1),
    cRefreshConfirmed: u64 align(1),
    cDXRefreshConfirmed: u32 align(1),
    cFramesLate: u64 align(1),
    cFramesOutstanding: u32 align(1),
    cFrameDisplayed: u64 align(1),
    qpcFrameDisplayed: u64 align(1),
    cRefreshFrameDisplayed: u64 align(1),
    cFrameComplete: u64 align(1),
    qpcFrameComplete: u64 align(1),
    cFramePending: u64 align(1),
    qpcFramePending: u64 align(1),
    cFramesDisplayed: u64 align(1),
    cFramesComplete: u64 align(1),
    cFramesPending: u64 align(1),
    cFramesAvailable: u64 align(1),
    cFramesDropped: u64 align(1),
    cFramesMissed: u64 align(1),
    cRefreshNextDisplayed: u64 align(1),
    cRefreshNextPresented: u64 align(1),
    cRefreshesDisplayed: u64 align(1),
    cRefreshesPresented: u64 align(1),
    cRefreshStarted: u64 align(1),
    cPixelsReceived: u64 align(1),
    cPixelsDrawn: u64 align(1),
    cBuffersEmpty: u64 align(1),
};

pub const DWM_SOURCE_FRAME_SAMPLING = enum(i32) {
    POINT = 0,
    COVERAGE = 1,
    LAST = 2,
};
pub const DWM_SOURCE_FRAME_SAMPLING_POINT = DWM_SOURCE_FRAME_SAMPLING.POINT;
pub const DWM_SOURCE_FRAME_SAMPLING_COVERAGE = DWM_SOURCE_FRAME_SAMPLING.COVERAGE;
pub const DWM_SOURCE_FRAME_SAMPLING_LAST = DWM_SOURCE_FRAME_SAMPLING.LAST;

pub const DWM_PRESENT_PARAMETERS = extern struct {
    cbSize: u32 align(1),
    fQueue: BOOL align(1),
    cRefreshStart: u64 align(1),
    cBuffer: u32 align(1),
    fUseSourceRate: BOOL align(1),
    rateSource: UNSIGNED_RATIO align(1),
    cRefreshesPerFrame: u32 align(1),
    eSampling: DWM_SOURCE_FRAME_SAMPLING align(1),
};

pub const MilMatrix3x2D = extern struct {
    S_11: f64 align(1),
    S_12: f64 align(1),
    S_21: f64 align(1),
    S_22: f64 align(1),
    DX: f64 align(1),
    DY: f64 align(1),
};

pub const DWMTRANSITION_OWNEDWINDOW_TARGET = enum(i32) {
    NULL = -1,
    REPOSITION = 0,
};
pub const DWMTRANSITION_OWNEDWINDOW_NULL = DWMTRANSITION_OWNEDWINDOW_TARGET.NULL;
pub const DWMTRANSITION_OWNEDWINDOW_REPOSITION = DWMTRANSITION_OWNEDWINDOW_TARGET.REPOSITION;

pub const GESTURE_TYPE = enum(i32) {
    PEN_TAP = 0,
    PEN_DOUBLETAP = 1,
    PEN_RIGHTTAP = 2,
    PEN_PRESSANDHOLD = 3,
    PEN_PRESSANDHOLDABORT = 4,
    TOUCH_TAP = 5,
    TOUCH_DOUBLETAP = 6,
    TOUCH_RIGHTTAP = 7,
    TOUCH_PRESSANDHOLD = 8,
    TOUCH_PRESSANDHOLDABORT = 9,
    TOUCH_PRESSANDTAP = 10,
};
pub const GT_PEN_TAP = GESTURE_TYPE.PEN_TAP;
pub const GT_PEN_DOUBLETAP = GESTURE_TYPE.PEN_DOUBLETAP;
pub const GT_PEN_RIGHTTAP = GESTURE_TYPE.PEN_RIGHTTAP;
pub const GT_PEN_PRESSANDHOLD = GESTURE_TYPE.PEN_PRESSANDHOLD;
pub const GT_PEN_PRESSANDHOLDABORT = GESTURE_TYPE.PEN_PRESSANDHOLDABORT;
pub const GT_TOUCH_TAP = GESTURE_TYPE.TOUCH_TAP;
pub const GT_TOUCH_DOUBLETAP = GESTURE_TYPE.TOUCH_DOUBLETAP;
pub const GT_TOUCH_RIGHTTAP = GESTURE_TYPE.TOUCH_RIGHTTAP;
pub const GT_TOUCH_PRESSANDHOLD = GESTURE_TYPE.TOUCH_PRESSANDHOLD;
pub const GT_TOUCH_PRESSANDHOLDABORT = GESTURE_TYPE.TOUCH_PRESSANDHOLDABORT;
pub const GT_TOUCH_PRESSANDTAP = GESTURE_TYPE.TOUCH_PRESSANDTAP;

pub const DWM_SHOWCONTACT = enum(u32) {
    DOWN = 1,
    UP = 2,
    DRAG = 4,
    HOLD = 8,
    PENBARREL = 16,
    NONE = 0,
    ALL = 4294967295,
    _,
    pub fn initFlags(o: struct {
        DOWN: u1 = 0,
        UP: u1 = 0,
        DRAG: u1 = 0,
        HOLD: u1 = 0,
        PENBARREL: u1 = 0,
        NONE: u1 = 0,
        ALL: u1 = 0,
    }) DWM_SHOWCONTACT {
        return @as(DWM_SHOWCONTACT, @enumFromInt((if (o.DOWN == 1) @intFromEnum(DWM_SHOWCONTACT.DOWN) else 0) | (if (o.UP == 1) @intFromEnum(DWM_SHOWCONTACT.UP) else 0) | (if (o.DRAG == 1) @intFromEnum(DWM_SHOWCONTACT.DRAG) else 0) | (if (o.HOLD == 1) @intFromEnum(DWM_SHOWCONTACT.HOLD) else 0) | (if (o.PENBARREL == 1) @intFromEnum(DWM_SHOWCONTACT.PENBARREL) else 0) | (if (o.NONE == 1) @intFromEnum(DWM_SHOWCONTACT.NONE) else 0) | (if (o.ALL == 1) @intFromEnum(DWM_SHOWCONTACT.ALL) else 0)));
    }
};
pub const DWMSC_DOWN = DWM_SHOWCONTACT.DOWN;
pub const DWMSC_UP = DWM_SHOWCONTACT.UP;
pub const DWMSC_DRAG = DWM_SHOWCONTACT.DRAG;
pub const DWMSC_HOLD = DWM_SHOWCONTACT.HOLD;
pub const DWMSC_PENBARREL = DWM_SHOWCONTACT.PENBARREL;
pub const DWMSC_NONE = DWM_SHOWCONTACT.NONE;
pub const DWMSC_ALL = DWM_SHOWCONTACT.ALL;

pub const DWM_TAB_WINDOW_REQUIREMENTS = enum(u32) {
    NONE = 0,
    IMPLEMENTED_BY_SYSTEM = 1,
    WINDOW_RELATIONSHIP = 2,
    WINDOW_STYLES = 4,
    WINDOW_REGION = 8,
    WINDOW_DWM_ATTRIBUTES = 16,
    WINDOW_MARGINS = 32,
    TABBING_ENABLED = 64,
    USER_POLICY = 128,
    GROUP_POLICY = 256,
    APP_COMPAT = 512,
    _,
    pub fn initFlags(o: struct {
        NONE: u1 = 0,
        IMPLEMENTED_BY_SYSTEM: u1 = 0,
        WINDOW_RELATIONSHIP: u1 = 0,
        WINDOW_STYLES: u1 = 0,
        WINDOW_REGION: u1 = 0,
        WINDOW_DWM_ATTRIBUTES: u1 = 0,
        WINDOW_MARGINS: u1 = 0,
        TABBING_ENABLED: u1 = 0,
        USER_POLICY: u1 = 0,
        GROUP_POLICY: u1 = 0,
        APP_COMPAT: u1 = 0,
    }) DWM_TAB_WINDOW_REQUIREMENTS {
        return @as(DWM_TAB_WINDOW_REQUIREMENTS, @enumFromInt((if (o.NONE == 1) @intFromEnum(DWM_TAB_WINDOW_REQUIREMENTS.NONE) else 0) | (if (o.IMPLEMENTED_BY_SYSTEM == 1) @intFromEnum(DWM_TAB_WINDOW_REQUIREMENTS.IMPLEMENTED_BY_SYSTEM) else 0) | (if (o.WINDOW_RELATIONSHIP == 1) @intFromEnum(DWM_TAB_WINDOW_REQUIREMENTS.WINDOW_RELATIONSHIP) else 0) | (if (o.WINDOW_STYLES == 1) @intFromEnum(DWM_TAB_WINDOW_REQUIREMENTS.WINDOW_STYLES) else 0) | (if (o.WINDOW_REGION == 1) @intFromEnum(DWM_TAB_WINDOW_REQUIREMENTS.WINDOW_REGION) else 0) | (if (o.WINDOW_DWM_ATTRIBUTES == 1) @intFromEnum(DWM_TAB_WINDOW_REQUIREMENTS.WINDOW_DWM_ATTRIBUTES) else 0) | (if (o.WINDOW_MARGINS == 1) @intFromEnum(DWM_TAB_WINDOW_REQUIREMENTS.WINDOW_MARGINS) else 0) | (if (o.TABBING_ENABLED == 1) @intFromEnum(DWM_TAB_WINDOW_REQUIREMENTS.TABBING_ENABLED) else 0) | (if (o.USER_POLICY == 1) @intFromEnum(DWM_TAB_WINDOW_REQUIREMENTS.USER_POLICY) else 0) | (if (o.GROUP_POLICY == 1) @intFromEnum(DWM_TAB_WINDOW_REQUIREMENTS.GROUP_POLICY) else 0) | (if (o.APP_COMPAT == 1) @intFromEnum(DWM_TAB_WINDOW_REQUIREMENTS.APP_COMPAT) else 0)));
    }
};
pub const DWMTWR_NONE = DWM_TAB_WINDOW_REQUIREMENTS.NONE;
pub const DWMTWR_IMPLEMENTED_BY_SYSTEM = DWM_TAB_WINDOW_REQUIREMENTS.IMPLEMENTED_BY_SYSTEM;
pub const DWMTWR_WINDOW_RELATIONSHIP = DWM_TAB_WINDOW_REQUIREMENTS.WINDOW_RELATIONSHIP;
pub const DWMTWR_WINDOW_STYLES = DWM_TAB_WINDOW_REQUIREMENTS.WINDOW_STYLES;
pub const DWMTWR_WINDOW_REGION = DWM_TAB_WINDOW_REQUIREMENTS.WINDOW_REGION;
pub const DWMTWR_WINDOW_DWM_ATTRIBUTES = DWM_TAB_WINDOW_REQUIREMENTS.WINDOW_DWM_ATTRIBUTES;
pub const DWMTWR_WINDOW_MARGINS = DWM_TAB_WINDOW_REQUIREMENTS.WINDOW_MARGINS;
pub const DWMTWR_TABBING_ENABLED = DWM_TAB_WINDOW_REQUIREMENTS.TABBING_ENABLED;
pub const DWMTWR_USER_POLICY = DWM_TAB_WINDOW_REQUIREMENTS.USER_POLICY;
pub const DWMTWR_GROUP_POLICY = DWM_TAB_WINDOW_REQUIREMENTS.GROUP_POLICY;
pub const DWMTWR_APP_COMPAT = DWM_TAB_WINDOW_REQUIREMENTS.APP_COMPAT;

//--------------------------------------------------------------------------------
// Section: Functions (31)
//--------------------------------------------------------------------------------
// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dwmapi" fn DwmDefWindowProc(
    hWnd: ?HWND,
    msg: u32,
    wParam: WPARAM,
    lParam: LPARAM,
    plResult: ?*LRESULT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dwmapi" fn DwmEnableBlurBehindWindow(
    hWnd: ?HWND,
    pBlurBehind: ?*const DWM_BLURBEHIND,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dwmapi" fn DwmEnableComposition(
    uCompositionAction: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dwmapi" fn DwmEnableMMCSS(
    fEnableMMCSS: BOOL,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dwmapi" fn DwmExtendFrameIntoClientArea(
    hWnd: ?HWND,
    pMarInset: ?*const MARGINS,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dwmapi" fn DwmGetColorizationColor(
    pcrColorization: ?*u32,
    pfOpaqueBlend: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dwmapi" fn DwmGetCompositionTimingInfo(
    hwnd: ?HWND,
    pTimingInfo: ?*DWM_TIMING_INFO,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dwmapi" fn DwmGetWindowAttribute(
    hwnd: ?HWND,
    dwAttribute: DWMWINDOWATTRIBUTE,
    // TODO: what to do with BytesParamIndex 3?
    pvAttribute: ?*anyopaque,
    cbAttribute: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dwmapi" fn DwmIsCompositionEnabled(
    pfEnabled: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dwmapi" fn DwmModifyPreviousDxFrameDuration(
    hwnd: ?HWND,
    cRefreshes: i32,
    fRelative: BOOL,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dwmapi" fn DwmQueryThumbnailSourceSize(
    hThumbnail: isize,
    pSize: ?*SIZE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dwmapi" fn DwmRegisterThumbnail(
    hwndDestination: ?HWND,
    hwndSource: ?HWND,
    phThumbnailId: ?*isize,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dwmapi" fn DwmSetDxFrameDuration(
    hwnd: ?HWND,
    cRefreshes: i32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dwmapi" fn DwmSetPresentParameters(
    hwnd: ?HWND,
    pPresentParams: ?*DWM_PRESENT_PARAMETERS,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dwmapi" fn DwmSetWindowAttribute(
    hwnd: ?HWND,
    dwAttribute: DWMWINDOWATTRIBUTE,
    // TODO: what to do with BytesParamIndex 3?
    pvAttribute: ?*const anyopaque,
    cbAttribute: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dwmapi" fn DwmUnregisterThumbnail(
    hThumbnailId: isize,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dwmapi" fn DwmUpdateThumbnailProperties(
    hThumbnailId: isize,
    ptnProperties: ?*const DWM_THUMBNAIL_PROPERTIES,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.1'
pub extern "dwmapi" fn DwmSetIconicThumbnail(
    hwnd: ?HWND,
    hbmp: ?HBITMAP,
    dwSITFlags: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.1'
pub extern "dwmapi" fn DwmSetIconicLivePreviewBitmap(
    hwnd: ?HWND,
    hbmp: ?HBITMAP,
    pptClient: ?*POINT,
    dwSITFlags: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.1'
pub extern "dwmapi" fn DwmInvalidateIconicBitmaps(
    hwnd: ?HWND,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dwmapi" fn DwmAttachMilContent(
    hwnd: ?HWND,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dwmapi" fn DwmDetachMilContent(
    hwnd: ?HWND,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dwmapi" fn DwmFlush() callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dwmapi" fn DwmGetGraphicsStreamTransformHint(
    uIndex: u32,
    pTransform: ?*MilMatrix3x2D,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dwmapi" fn DwmGetGraphicsStreamClient(
    uIndex: u32,
    pClientUuid: ?*Guid,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dwmapi" fn DwmGetTransportAttributes(
    pfIsRemoting: ?*BOOL,
    pfIsConnected: ?*BOOL,
    pDwGeneration: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows8.0'
pub extern "dwmapi" fn DwmTransitionOwnedWindow(
    hwnd: ?HWND,
    target: DWMTRANSITION_OWNEDWINDOW_TARGET,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows8.0'
pub extern "dwmapi" fn DwmRenderGesture(
    gt: GESTURE_TYPE,
    cContacts: u32,
    pdwPointerID: [*]const u32,
    pPoints: [*]const POINT,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows8.0'
pub extern "dwmapi" fn DwmTetherContact(
    dwPointerID: u32,
    fEnable: BOOL,
    ptTether: POINT,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows8.0'
pub extern "dwmapi" fn DwmShowContact(
    dwPointerID: u32,
    eShowContact: DWM_SHOWCONTACT,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows10.0.17134'
pub extern "dwmapi" fn DwmGetUnmetTabRequirements(
    appWindow: ?HWND,
    value: ?*DWM_TAB_WINDOW_REQUIREMENTS,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

//--------------------------------------------------------------------------------
// Section: Unicode Aliases (0)
//--------------------------------------------------------------------------------
const thismodule = @This();
pub usingnamespace switch (@import("../zig.zig").unicode_mode) {
    .ansi => struct {},
    .wide => struct {},
    .unspecified => if (@import("builtin").is_test) struct {} else struct {},
};
//--------------------------------------------------------------------------------
// Section: Imports (13)
//--------------------------------------------------------------------------------
const Guid = @import("../zig.zig").Guid;
const BOOL = @import("../foundation.zig").BOOL;
const HBITMAP = @import("../graphics/gdi.zig").HBITMAP;
const HRESULT = @import("../foundation.zig").HRESULT;
const HRGN = @import("../graphics/gdi.zig").HRGN;
const HWND = @import("../foundation.zig").HWND;
const LPARAM = @import("../foundation.zig").LPARAM;
const LRESULT = @import("../foundation.zig").LRESULT;
const MARGINS = @import("../ui/controls.zig").MARGINS;
const POINT = @import("../foundation.zig").POINT;
const RECT = @import("../foundation.zig").RECT;
const SIZE = @import("../foundation.zig").SIZE;
const WPARAM = @import("../foundation.zig").WPARAM;

test {
    @setEvalBranchQuota(comptime @import("std").meta.declarations(@This()).len * 3);

    // reference all the pub declarations
    if (!@import("builtin").is_test) return;
    inline for (comptime @import("std").meta.declarations(@This())) |decl| {
        if (decl.is_pub) {
            _ = @field(@This(), decl.name);
        }
    }
}
