//! NOTE: this file is autogenerated, DO NOT MODIFY
//--------------------------------------------------------------------------------
// Section: Constants (0)
//--------------------------------------------------------------------------------

//--------------------------------------------------------------------------------
// Section: Types (3)
//--------------------------------------------------------------------------------
pub const GRAPHICS_EFFECT_PROPERTY_MAPPING = enum(i32) {
    UNKNOWN = 0,
    DIRECT = 1,
    VECTORX = 2,
    VECTORY = 3,
    VECTORZ = 4,
    VECTORW = 5,
    RECT_TO_VECTOR4 = 6,
    RADIANS_TO_DEGREES = 7,
    COLORMATRIX_ALPHA_MODE = 8,
    COLOR_TO_VECTOR3 = 9,
    COLOR_TO_VECTOR4 = 10,
};
pub const GRAPHICS_EFFECT_PROPERTY_MAPPING_UNKNOWN = GRAPHICS_EFFECT_PROPERTY_MAPPING.UNKNOWN;
pub const GRAPHICS_EFFECT_PROPERTY_MAPPING_DIRECT = GRAPHICS_EFFECT_PROPERTY_MAPPING.DIRECT;
pub const GRAPHICS_EFFECT_PROPERTY_MAPPING_VECTORX = GRAPHICS_EFFECT_PROPERTY_MAPPING.VECTORX;
pub const GRAPHICS_EFFECT_PROPERTY_MAPPING_VECTORY = GRAPHICS_EFFECT_PROPERTY_MAPPING.VECTORY;
pub const GRAPHICS_EFFECT_PROPERTY_MAPPING_VECTORZ = GRAPHICS_EFFECT_PROPERTY_MAPPING.VECTORZ;
pub const GRAPHICS_EFFECT_PROPERTY_MAPPING_VECTORW = GRAPHICS_EFFECT_PROPERTY_MAPPING.VECTORW;
pub const GRAPHICS_EFFECT_PROPERTY_MAPPING_RECT_TO_VECTOR4 = GRAPHICS_EFFECT_PROPERTY_MAPPING.RECT_TO_VECTOR4;
pub const GRAPHICS_EFFECT_PROPERTY_MAPPING_RADIANS_TO_DEGREES = GRAPHICS_EFFECT_PROPERTY_MAPPING.RADIANS_TO_DEGREES;
pub const GRAPHICS_EFFECT_PROPERTY_MAPPING_COLORMATRIX_ALPHA_MODE = GRAPHICS_EFFECT_PROPERTY_MAPPING.COLORMATRIX_ALPHA_MODE;
pub const GRAPHICS_EFFECT_PROPERTY_MAPPING_COLOR_TO_VECTOR3 = GRAPHICS_EFFECT_PROPERTY_MAPPING.COLOR_TO_VECTOR3;
pub const GRAPHICS_EFFECT_PROPERTY_MAPPING_COLOR_TO_VECTOR4 = GRAPHICS_EFFECT_PROPERTY_MAPPING.COLOR_TO_VECTOR4;

const IID_IGraphicsEffectD2D1Interop_Value = Guid.initString("2fc57384-a068-44d7-a331-30982fcf7177");
pub const IID_IGraphicsEffectD2D1Interop = &IID_IGraphicsEffectD2D1Interop_Value;
pub const IGraphicsEffectD2D1Interop = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        GetEffectId: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IGraphicsEffectD2D1Interop,
                id: ?*Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IGraphicsEffectD2D1Interop,
                id: ?*Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetNamedPropertyMapping: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IGraphicsEffectD2D1Interop,
                name: ?[*:0]const u16,
                index: ?*u32,
                mapping: ?*GRAPHICS_EFFECT_PROPERTY_MAPPING,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IGraphicsEffectD2D1Interop,
                name: ?[*:0]const u16,
                index: ?*u32,
                mapping: ?*GRAPHICS_EFFECT_PROPERTY_MAPPING,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetPropertyCount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IGraphicsEffectD2D1Interop,
                count: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IGraphicsEffectD2D1Interop,
                count: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetProperty: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IGraphicsEffectD2D1Interop,
                index: u32,
                value: ?**struct { comment: []const u8 = "MissingClrType IPropertyValue.Windows.Foundation" },
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IGraphicsEffectD2D1Interop,
                index: u32,
                value: ?**struct { comment: []const u8 = "MissingClrType IPropertyValue.Windows.Foundation" },
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetSource: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IGraphicsEffectD2D1Interop,
                index: u32,
                source: ?**struct { comment: []const u8 = "MissingClrType IGraphicsEffectSource.Windows.Graphics.Effects" },
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IGraphicsEffectD2D1Interop,
                index: u32,
                source: ?**struct { comment: []const u8 = "MissingClrType IGraphicsEffectSource.Windows.Graphics.Effects" },
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetSourceCount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IGraphicsEffectD2D1Interop,
                count: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IGraphicsEffectD2D1Interop,
                count: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IGraphicsEffectD2D1Interop_GetEffectId(self: *const T, id: ?*Guid) HRESULT {
                return @as(*const IGraphicsEffectD2D1Interop.VTable, @ptrCast(self.vtable)).GetEffectId(@as(*const IGraphicsEffectD2D1Interop, @ptrCast(self)), id);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IGraphicsEffectD2D1Interop_GetNamedPropertyMapping(self: *const T, name: ?[*:0]const u16, index: ?*u32, mapping: ?*GRAPHICS_EFFECT_PROPERTY_MAPPING) HRESULT {
                return @as(*const IGraphicsEffectD2D1Interop.VTable, @ptrCast(self.vtable)).GetNamedPropertyMapping(@as(*const IGraphicsEffectD2D1Interop, @ptrCast(self)), name, index, mapping);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IGraphicsEffectD2D1Interop_GetPropertyCount(self: *const T, count: ?*u32) HRESULT {
                return @as(*const IGraphicsEffectD2D1Interop.VTable, @ptrCast(self.vtable)).GetPropertyCount(@as(*const IGraphicsEffectD2D1Interop, @ptrCast(self)), count);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IGraphicsEffectD2D1Interop_GetProperty(self: *const T, index: u32, value: ?**struct { comment: []const u8 = "MissingClrType IPropertyValue.Windows.Foundation" }) HRESULT {
                return @as(*const IGraphicsEffectD2D1Interop.VTable, @ptrCast(self.vtable)).GetProperty(@as(*const IGraphicsEffectD2D1Interop, @ptrCast(self)), index, value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IGraphicsEffectD2D1Interop_GetSource(self: *const T, index: u32, source: ?**struct { comment: []const u8 = "MissingClrType IGraphicsEffectSource.Windows.Graphics.Effects" }) HRESULT {
                return @as(*const IGraphicsEffectD2D1Interop.VTable, @ptrCast(self.vtable)).GetSource(@as(*const IGraphicsEffectD2D1Interop, @ptrCast(self)), index, source);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IGraphicsEffectD2D1Interop_GetSourceCount(self: *const T, count: ?*u32) HRESULT {
                return @as(*const IGraphicsEffectD2D1Interop.VTable, @ptrCast(self.vtable)).GetSourceCount(@as(*const IGraphicsEffectD2D1Interop, @ptrCast(self)), count);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IGeometrySource2DInterop_Value = Guid.initString("0657af73-53fd-47cf-84ff-c8492d2a80a3");
pub const IID_IGeometrySource2DInterop = &IID_IGeometrySource2DInterop_Value;
pub const IGeometrySource2DInterop = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        GetGeometry: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IGeometrySource2DInterop,
                value: ?*?*ID2D1Geometry,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IGeometrySource2DInterop,
                value: ?*?*ID2D1Geometry,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        TryGetGeometryUsingFactory: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IGeometrySource2DInterop,
                factory: ?*ID2D1Factory,
                value: ?*?*ID2D1Geometry,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IGeometrySource2DInterop,
                factory: ?*ID2D1Factory,
                value: ?*?*ID2D1Geometry,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IGeometrySource2DInterop_GetGeometry(self: *const T, value: ?*?*ID2D1Geometry) HRESULT {
                return @as(*const IGeometrySource2DInterop.VTable, @ptrCast(self.vtable)).GetGeometry(@as(*const IGeometrySource2DInterop, @ptrCast(self)), value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IGeometrySource2DInterop_TryGetGeometryUsingFactory(self: *const T, factory: ?*ID2D1Factory, value: ?*?*ID2D1Geometry) HRESULT {
                return @as(*const IGeometrySource2DInterop.VTable, @ptrCast(self.vtable)).TryGetGeometryUsingFactory(@as(*const IGeometrySource2DInterop, @ptrCast(self)), factory, value);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

//--------------------------------------------------------------------------------
// Section: Functions (0)
//--------------------------------------------------------------------------------

//--------------------------------------------------------------------------------
// 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 (6)
//--------------------------------------------------------------------------------
const Guid = @import("../../../zig.zig").Guid;
const HRESULT = @import("../../../foundation.zig").HRESULT;
const ID2D1Factory = @import("../../../graphics/direct2d.zig").ID2D1Factory;
const ID2D1Geometry = @import("../../../graphics/direct2d.zig").ID2D1Geometry;
const IUnknown = @import("../../../system/com.zig").IUnknown;
const PWSTR = @import("../../../foundation.zig").PWSTR;

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);
        }
    }
}
