// WARNING: Please don't edit this file. It was generated by C++/WinRT v2.0.250303.1

#pragma once
#ifndef WINRT_Microsoft_Graphics_Canvas_Geometry_0_H
#define WINRT_Microsoft_Graphics_Canvas_Geometry_0_H
WINRT_EXPORT namespace winrt::Microsoft::Graphics::Canvas
{
    struct CanvasDevice;
    struct ICanvasResourceCreator;
}
WINRT_EXPORT namespace winrt::Microsoft::Graphics::Canvas::Text
{
    struct CanvasFontFace;
    struct CanvasGlyph;
    enum class CanvasGlyphOrientation : int32_t;
    struct CanvasTextLayout;
    enum class CanvasTextMeasuringMode : int32_t;
}
WINRT_EXPORT namespace winrt::Windows::Foundation
{
    struct Rect;
}
WINRT_EXPORT namespace winrt::Windows::Foundation::Numerics
{
}
WINRT_EXPORT namespace winrt::Microsoft::Graphics::Canvas::Geometry
{
    enum class CanvasArcSize : int32_t
    {
        Small = 0,
        Large = 1,
    };
    enum class CanvasCapStyle : int32_t
    {
        Flat = 0,
        Square = 1,
        Round = 2,
        Triangle = 3,
    };
    enum class CanvasDashStyle : int32_t
    {
        Solid = 0,
        Dash = 1,
        Dot = 2,
        DashDot = 3,
        DashDotDot = 4,
    };
    enum class CanvasFigureFill : int32_t
    {
        Default = 0,
        DoesNotAffectFills = 1,
    };
    enum class CanvasFigureLoop : int32_t
    {
        Open = 0,
        Closed = 1,
    };
    enum class CanvasFigureSegmentOptions : uint32_t
    {
        None = 0,
        ForceUnstroked = 0x1,
        ForceRoundLineJoin = 0x2,
    };
    enum class CanvasFilledRegionDetermination : int32_t
    {
        Alternate = 0,
        Winding = 1,
    };
    enum class CanvasGeometryCombine : int32_t
    {
        Union = 0,
        Intersect = 1,
        Xor = 2,
        Exclude = 3,
    };
    enum class CanvasGeometryRelation : int32_t
    {
        Disjoint = 0,
        Contained = 1,
        Contains = 2,
        Overlap = 3,
    };
    enum class CanvasGeometrySimplification : int32_t
    {
        CubicsAndLines = 0,
        Lines = 1,
    };
    enum class CanvasGradientMeshPatchEdge : int32_t
    {
        Aliased = 0,
        Antialiased = 1,
        AliasedAndInflated = 2,
    };
    enum class CanvasLineJoin : int32_t
    {
        Miter = 0,
        Bevel = 1,
        Round = 2,
        MiterOrBevel = 3,
    };
    enum class CanvasStrokeTransformBehavior : int32_t
    {
        Normal = 0,
        Fixed = 1,
        Hairline = 2,
    };
    enum class CanvasSweepDirection : int32_t
    {
        CounterClockwise = 0,
        Clockwise = 1,
    };
    struct ICanvasCachedGeometry;
    struct ICanvasCachedGeometryStatics;
    struct ICanvasGeometry;
    struct ICanvasGeometryStatics;
    struct ICanvasGradientMesh;
    struct ICanvasGradientMeshFactory;
    struct ICanvasGradientMeshStatics;
    struct ICanvasPathBuilder;
    struct ICanvasPathBuilderFactory;
    struct ICanvasPathReceiver;
    struct ICanvasStrokeStyle;
    struct CanvasCachedGeometry;
    struct CanvasGeometry;
    struct CanvasGradientMesh;
    struct CanvasPathBuilder;
    struct CanvasStrokeStyle;
    struct CanvasGradientMeshPatch;
    struct CanvasTriangleVertices;
}
namespace winrt::impl
{
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasCachedGeometry>{ using type = interface_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasCachedGeometryStatics>{ using type = interface_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGeometry>{ using type = interface_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGeometryStatics>{ using type = interface_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGradientMesh>{ using type = interface_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGradientMeshFactory>{ using type = interface_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGradientMeshStatics>{ using type = interface_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasPathBuilder>{ using type = interface_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasPathBuilderFactory>{ using type = interface_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasPathReceiver>{ using type = interface_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasStrokeStyle>{ using type = interface_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasCachedGeometry>{ using type = class_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometry>{ using type = class_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGradientMesh>{ using type = class_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasPathBuilder>{ using type = class_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasStrokeStyle>{ using type = class_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasArcSize>{ using type = enum_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasCapStyle>{ using type = enum_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasDashStyle>{ using type = enum_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasFigureFill>{ using type = enum_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasFigureLoop>{ using type = enum_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasFigureSegmentOptions>{ using type = enum_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasFilledRegionDetermination>{ using type = enum_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometryCombine>{ using type = enum_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometryRelation>{ using type = enum_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometrySimplification>{ using type = enum_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGradientMeshPatchEdge>{ using type = enum_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasLineJoin>{ using type = enum_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasStrokeTransformBehavior>{ using type = enum_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasSweepDirection>{ using type = enum_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGradientMeshPatch>{ using type = struct_category<winrt::Windows::Foundation::Numerics::float2, winrt::Windows::Foundation::Numerics::float2, winrt::Windows::Foundation::Numerics::float2, winrt::Windows::Foundation::Numerics::float2, winrt::Windows::Foundation::Numerics::float2, winrt::Windows::Foundation::Numerics::float2, winrt::Windows::Foundation::Numerics::float2, winrt::Windows::Foundation::Numerics::float2, winrt::Windows::Foundation::Numerics::float2, winrt::Windows::Foundation::Numerics::float2, winrt::Windows::Foundation::Numerics::float2, winrt::Windows::Foundation::Numerics::float2, winrt::Windows::Foundation::Numerics::float2, winrt::Windows::Foundation::Numerics::float2, winrt::Windows::Foundation::Numerics::float2, winrt::Windows::Foundation::Numerics::float2, winrt::Windows::Foundation::Numerics::float4, winrt::Windows::Foundation::Numerics::float4, winrt::Windows::Foundation::Numerics::float4, winrt::Windows::Foundation::Numerics::float4, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGradientMeshPatchEdge, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGradientMeshPatchEdge, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGradientMeshPatchEdge, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGradientMeshPatchEdge>; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasTriangleVertices>{ using type = struct_category<winrt::Windows::Foundation::Numerics::float2, winrt::Windows::Foundation::Numerics::float2, winrt::Windows::Foundation::Numerics::float2>; };
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasCachedGeometry> = L"Microsoft.Graphics.Canvas.Geometry.CanvasCachedGeometry";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometry> = L"Microsoft.Graphics.Canvas.Geometry.CanvasGeometry";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGradientMesh> = L"Microsoft.Graphics.Canvas.Geometry.CanvasGradientMesh";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasPathBuilder> = L"Microsoft.Graphics.Canvas.Geometry.CanvasPathBuilder";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasStrokeStyle> = L"Microsoft.Graphics.Canvas.Geometry.CanvasStrokeStyle";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasArcSize> = L"Microsoft.Graphics.Canvas.Geometry.CanvasArcSize";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasCapStyle> = L"Microsoft.Graphics.Canvas.Geometry.CanvasCapStyle";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasDashStyle> = L"Microsoft.Graphics.Canvas.Geometry.CanvasDashStyle";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasFigureFill> = L"Microsoft.Graphics.Canvas.Geometry.CanvasFigureFill";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasFigureLoop> = L"Microsoft.Graphics.Canvas.Geometry.CanvasFigureLoop";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasFigureSegmentOptions> = L"Microsoft.Graphics.Canvas.Geometry.CanvasFigureSegmentOptions";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasFilledRegionDetermination> = L"Microsoft.Graphics.Canvas.Geometry.CanvasFilledRegionDetermination";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometryCombine> = L"Microsoft.Graphics.Canvas.Geometry.CanvasGeometryCombine";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometryRelation> = L"Microsoft.Graphics.Canvas.Geometry.CanvasGeometryRelation";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometrySimplification> = L"Microsoft.Graphics.Canvas.Geometry.CanvasGeometrySimplification";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGradientMeshPatchEdge> = L"Microsoft.Graphics.Canvas.Geometry.CanvasGradientMeshPatchEdge";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasLineJoin> = L"Microsoft.Graphics.Canvas.Geometry.CanvasLineJoin";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasStrokeTransformBehavior> = L"Microsoft.Graphics.Canvas.Geometry.CanvasStrokeTransformBehavior";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasSweepDirection> = L"Microsoft.Graphics.Canvas.Geometry.CanvasSweepDirection";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGradientMeshPatch> = L"Microsoft.Graphics.Canvas.Geometry.CanvasGradientMeshPatch";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasTriangleVertices> = L"Microsoft.Graphics.Canvas.Geometry.CanvasTriangleVertices";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasCachedGeometry> = L"Microsoft.Graphics.Canvas.Geometry.ICanvasCachedGeometry";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasCachedGeometryStatics> = L"Microsoft.Graphics.Canvas.Geometry.ICanvasCachedGeometryStatics";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGeometry> = L"Microsoft.Graphics.Canvas.Geometry.ICanvasGeometry";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGeometryStatics> = L"Microsoft.Graphics.Canvas.Geometry.ICanvasGeometryStatics";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGradientMesh> = L"Microsoft.Graphics.Canvas.Geometry.ICanvasGradientMesh";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGradientMeshFactory> = L"Microsoft.Graphics.Canvas.Geometry.ICanvasGradientMeshFactory";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGradientMeshStatics> = L"Microsoft.Graphics.Canvas.Geometry.ICanvasGradientMeshStatics";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasPathBuilder> = L"Microsoft.Graphics.Canvas.Geometry.ICanvasPathBuilder";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasPathBuilderFactory> = L"Microsoft.Graphics.Canvas.Geometry.ICanvasPathBuilderFactory";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasPathReceiver> = L"Microsoft.Graphics.Canvas.Geometry.ICanvasPathReceiver";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasStrokeStyle> = L"Microsoft.Graphics.Canvas.Geometry.ICanvasStrokeStyle";
    template <> inline constexpr guid guid_v<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasCachedGeometry>{ 0xBA6CB114,0xE1A1,0x448D,{ 0xAB,0x7C,0x8D,0x2B,0x92,0x67,0x41,0x19 } }; // BA6CB114-E1A1-448D-AB7C-8D2B92674119
    template <> inline constexpr guid guid_v<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasCachedGeometryStatics>{ 0x80BA1060,0xA9D7,0x41BA,{ 0x93,0x72,0xEC,0x3F,0xC1,0x74,0x4E,0x5D } }; // 80BA1060-A9D7-41BA-9372-EC3FC1744E5D
    template <> inline constexpr guid guid_v<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGeometry>{ 0x74EA89FA,0xC87C,0x4D0D,{ 0x90,0x57,0x27,0x43,0xB8,0xDB,0x67,0xEE } }; // 74EA89FA-C87C-4D0D-9057-2743B8DB67EE
    template <> inline constexpr guid guid_v<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGeometryStatics>{ 0xD94E33CF,0xCD59,0x46F2,{ 0x8D,0xF4,0x55,0x06,0x6A,0xAB,0xFD,0x56 } }; // D94E33CF-CD59-46F2-8DF4-55066AABFD56
    template <> inline constexpr guid guid_v<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGradientMesh>{ 0x6BFC2BF1,0x0A7A,0x449C,{ 0xA7,0xEF,0x67,0x06,0x32,0x1B,0x0C,0x1A } }; // 6BFC2BF1-0A7A-449C-A7EF-6706321B0C1A
    template <> inline constexpr guid guid_v<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGradientMeshFactory>{ 0x4756492D,0x251E,0x421D,{ 0x83,0x4D,0x87,0xEC,0x26,0x0D,0x5E,0x4D } }; // 4756492D-251E-421D-834D-87EC260D5E4D
    template <> inline constexpr guid guid_v<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGradientMeshStatics>{ 0x44027640,0x3EAB,0x4199,{ 0xAA,0x3B,0x64,0x48,0x90,0xD0,0x12,0x3D } }; // 44027640-3EAB-4199-AA3B-644890D0123D
    template <> inline constexpr guid guid_v<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasPathBuilder>{ 0xBCF5822F,0x8127,0x4E5C,{ 0x96,0xB8,0x29,0x98,0x3B,0x91,0x55,0x41 } }; // BCF5822F-8127-4E5C-96B8-29983B915541
    template <> inline constexpr guid guid_v<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasPathBuilderFactory>{ 0xAC2BEE14,0xEFD1,0x4343,{ 0x8E,0x53,0xBA,0x62,0x15,0x3D,0x89,0x66 } }; // AC2BEE14-EFD1-4343-8E53-BA62153D8966
    template <> inline constexpr guid guid_v<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasPathReceiver>{ 0x70E65373,0x7FB3,0x4645,{ 0x8B,0x6D,0xF6,0x16,0xD1,0xB9,0xA9,0xD7 } }; // 70E65373-7FB3-4645-8B6D-F616D1B9A9D7
    template <> inline constexpr guid guid_v<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasStrokeStyle>{ 0xFD3E1CD2,0x6019,0x40A1,{ 0xB3,0x15,0x26,0x7E,0xEF,0x6C,0x2A,0xEB } }; // FD3E1CD2-6019-40A1-B315-267EEF6C2AEB
    template <> struct default_interface<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasCachedGeometry>{ using type = winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasCachedGeometry; };
    template <> struct default_interface<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometry>{ using type = winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGeometry; };
    template <> struct default_interface<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGradientMesh>{ using type = winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGradientMesh; };
    template <> struct default_interface<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasPathBuilder>{ using type = winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasPathBuilder; };
    template <> struct default_interface<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasStrokeStyle>{ using type = winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasStrokeStyle; };
    template <> struct abi<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasCachedGeometry>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall get_Device(void**) noexcept = 0;
        };
    };
    template <> struct abi<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasCachedGeometryStatics>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall CreateFill(void*, void**) noexcept = 0;
            virtual int32_t __stdcall CreateFillWithFlatteningTolerance(void*, float, void**) noexcept = 0;
            virtual int32_t __stdcall CreateStroke(void*, float, void**) noexcept = 0;
            virtual int32_t __stdcall CreateStrokeWithStrokeStyle(void*, float, void*, void**) noexcept = 0;
            virtual int32_t __stdcall CreateStrokeWithStrokeStyleAndFlatteningTolerance(void*, float, void*, float, void**) noexcept = 0;
        };
    };
    template <> struct abi<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGeometry>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall CombineWith(void*, winrt::Windows::Foundation::Numerics::float3x2, int32_t, void**) noexcept = 0;
            virtual int32_t __stdcall CombineWithUsingFlatteningTolerance(void*, winrt::Windows::Foundation::Numerics::float3x2, int32_t, float, void**) noexcept = 0;
            virtual int32_t __stdcall Stroke(float, void**) noexcept = 0;
            virtual int32_t __stdcall StrokeWithStrokeStyle(float, void*, void**) noexcept = 0;
            virtual int32_t __stdcall StrokeWithAllOptions(float, void*, winrt::Windows::Foundation::Numerics::float3x2, float, void**) noexcept = 0;
            virtual int32_t __stdcall Outline(void**) noexcept = 0;
            virtual int32_t __stdcall OutlineWithTransformAndFlatteningTolerance(winrt::Windows::Foundation::Numerics::float3x2, float, void**) noexcept = 0;
            virtual int32_t __stdcall Simplify(int32_t, void**) noexcept = 0;
            virtual int32_t __stdcall SimplifyWithTransformAndFlatteningTolerance(int32_t, winrt::Windows::Foundation::Numerics::float3x2, float, void**) noexcept = 0;
            virtual int32_t __stdcall Transform(winrt::Windows::Foundation::Numerics::float3x2, void**) noexcept = 0;
            virtual int32_t __stdcall CompareWith(void*, int32_t*) noexcept = 0;
            virtual int32_t __stdcall CompareWithUsingTransformAndFlatteningTolerance(void*, winrt::Windows::Foundation::Numerics::float3x2, float, int32_t*) noexcept = 0;
            virtual int32_t __stdcall ComputeArea(float*) noexcept = 0;
            virtual int32_t __stdcall ComputeAreaWithTransformAndFlatteningTolerance(winrt::Windows::Foundation::Numerics::float3x2, float, float*) noexcept = 0;
            virtual int32_t __stdcall ComputePathLength(float*) noexcept = 0;
            virtual int32_t __stdcall ComputePathLengthWithTransformAndFlatteningTolerance(winrt::Windows::Foundation::Numerics::float3x2, float, float*) noexcept = 0;
            virtual int32_t __stdcall ComputePointOnPath(float, winrt::Windows::Foundation::Numerics::float2*) noexcept = 0;
            virtual int32_t __stdcall ComputePointOnPathWithTangent(float, winrt::Windows::Foundation::Numerics::float2*, winrt::Windows::Foundation::Numerics::float2*) noexcept = 0;
            virtual int32_t __stdcall ComputePointOnPathWithTransformAndFlatteningToleranceAndTangent(float, winrt::Windows::Foundation::Numerics::float3x2, float, winrt::Windows::Foundation::Numerics::float2*, winrt::Windows::Foundation::Numerics::float2*) noexcept = 0;
            virtual int32_t __stdcall FillContainsPoint(winrt::Windows::Foundation::Numerics::float2, bool*) noexcept = 0;
            virtual int32_t __stdcall FillContainsPointWithTransformAndFlatteningTolerance(winrt::Windows::Foundation::Numerics::float2, winrt::Windows::Foundation::Numerics::float3x2, float, bool*) noexcept = 0;
            virtual int32_t __stdcall ComputeBounds(winrt::Windows::Foundation::Rect*) noexcept = 0;
            virtual int32_t __stdcall ComputeBoundsWithTransform(winrt::Windows::Foundation::Numerics::float3x2, winrt::Windows::Foundation::Rect*) noexcept = 0;
            virtual int32_t __stdcall ComputeStrokeBounds(float, winrt::Windows::Foundation::Rect*) noexcept = 0;
            virtual int32_t __stdcall ComputeStrokeBoundsWithStrokeStyle(float, void*, winrt::Windows::Foundation::Rect*) noexcept = 0;
            virtual int32_t __stdcall ComputeStrokeBoundsWithAllOptions(float, void*, winrt::Windows::Foundation::Numerics::float3x2, float, winrt::Windows::Foundation::Rect*) noexcept = 0;
            virtual int32_t __stdcall StrokeContainsPoint(winrt::Windows::Foundation::Numerics::float2, float, bool*) noexcept = 0;
            virtual int32_t __stdcall StrokeContainsPointWithStrokeStyle(winrt::Windows::Foundation::Numerics::float2, float, void*, bool*) noexcept = 0;
            virtual int32_t __stdcall StrokeContainsPointWithAllOptions(winrt::Windows::Foundation::Numerics::float2, float, void*, winrt::Windows::Foundation::Numerics::float3x2, float, bool*) noexcept = 0;
            virtual int32_t __stdcall Tessellate(uint32_t* __trianglesSize, struct struct_Microsoft_Graphics_Canvas_Geometry_CanvasTriangleVertices**) noexcept = 0;
            virtual int32_t __stdcall TessellateWithTransformAndFlatteningTolerance(winrt::Windows::Foundation::Numerics::float3x2, float, uint32_t* __trianglesSize, struct struct_Microsoft_Graphics_Canvas_Geometry_CanvasTriangleVertices**) noexcept = 0;
            virtual int32_t __stdcall SendPathTo(void*) noexcept = 0;
            virtual int32_t __stdcall get_Device(void**) noexcept = 0;
        };
    };
    template <> struct abi<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGeometryStatics>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall CreateRectangle(void*, winrt::Windows::Foundation::Rect, void**) noexcept = 0;
            virtual int32_t __stdcall CreateRectangleAtCoords(void*, float, float, float, float, void**) noexcept = 0;
            virtual int32_t __stdcall CreateRoundedRectangle(void*, winrt::Windows::Foundation::Rect, float, float, void**) noexcept = 0;
            virtual int32_t __stdcall CreateRoundedRectangleAtCoords(void*, float, float, float, float, float, float, void**) noexcept = 0;
            virtual int32_t __stdcall CreateEllipse(void*, winrt::Windows::Foundation::Numerics::float2, float, float, void**) noexcept = 0;
            virtual int32_t __stdcall CreateEllipseAtCoords(void*, float, float, float, float, void**) noexcept = 0;
            virtual int32_t __stdcall CreateCircle(void*, winrt::Windows::Foundation::Numerics::float2, float, void**) noexcept = 0;
            virtual int32_t __stdcall CreateCircleAtCoords(void*, float, float, float, void**) noexcept = 0;
            virtual int32_t __stdcall CreatePath(void*, void**) noexcept = 0;
            virtual int32_t __stdcall CreatePolygon(void*, uint32_t, winrt::Windows::Foundation::Numerics::float2*, void**) noexcept = 0;
            virtual int32_t __stdcall CreateGroup(void*, uint32_t, void**, void**) noexcept = 0;
            virtual int32_t __stdcall CreateGroupWithFilledRegionDetermination(void*, uint32_t, void**, int32_t, void**) noexcept = 0;
            virtual int32_t __stdcall CreateText(void*, void**) noexcept = 0;
            virtual int32_t __stdcall CreateGlyphRun(void*, winrt::Windows::Foundation::Numerics::float2, void*, float, uint32_t, struct struct_Microsoft_Graphics_Canvas_Text_CanvasGlyph*, bool, uint32_t, int32_t, int32_t, void**) noexcept = 0;
            virtual int32_t __stdcall ComputeFlatteningTolerance(float, float, float*) noexcept = 0;
            virtual int32_t __stdcall ComputeFlatteningToleranceWithTransform(float, float, winrt::Windows::Foundation::Numerics::float3x2, float*) noexcept = 0;
            virtual int32_t __stdcall get_DefaultFlatteningTolerance(float*) noexcept = 0;
        };
    };
    template <> struct abi<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGradientMesh>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall get_Patches(uint32_t* __valueElementsSize, struct struct_Microsoft_Graphics_Canvas_Geometry_CanvasGradientMeshPatch**) noexcept = 0;
            virtual int32_t __stdcall GetBounds(void*, winrt::Windows::Foundation::Rect*) noexcept = 0;
            virtual int32_t __stdcall GetBoundsWithTransform(void*, winrt::Windows::Foundation::Numerics::float3x2, winrt::Windows::Foundation::Rect*) noexcept = 0;
            virtual int32_t __stdcall get_Device(void**) noexcept = 0;
        };
    };
    template <> struct abi<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGradientMeshFactory>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall Create(void*, uint32_t, struct struct_Microsoft_Graphics_Canvas_Geometry_CanvasGradientMeshPatch*, void**) noexcept = 0;
        };
    };
    template <> struct abi<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGradientMeshStatics>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall CreateCoonsPatch(uint32_t, winrt::Windows::Foundation::Numerics::float2*, uint32_t, winrt::Windows::Foundation::Numerics::float4*, uint32_t, int32_t*, struct struct_Microsoft_Graphics_Canvas_Geometry_CanvasGradientMeshPatch*) noexcept = 0;
            virtual int32_t __stdcall CreateTensorPatch(uint32_t, winrt::Windows::Foundation::Numerics::float2*, uint32_t, winrt::Windows::Foundation::Numerics::float4*, uint32_t, int32_t*, struct struct_Microsoft_Graphics_Canvas_Geometry_CanvasGradientMeshPatch*) noexcept = 0;
        };
    };
    template <> struct abi<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasPathBuilder>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall BeginFigureWithFigureFill(winrt::Windows::Foundation::Numerics::float2, int32_t) noexcept = 0;
            virtual int32_t __stdcall BeginFigure(winrt::Windows::Foundation::Numerics::float2) noexcept = 0;
            virtual int32_t __stdcall BeginFigureAtCoordsWithFigureFill(float, float, int32_t) noexcept = 0;
            virtual int32_t __stdcall BeginFigureAtCoords(float, float) noexcept = 0;
            virtual int32_t __stdcall AddArcToPoint(winrt::Windows::Foundation::Numerics::float2, float, float, float, int32_t, int32_t) noexcept = 0;
            virtual int32_t __stdcall AddArcAroundEllipse(winrt::Windows::Foundation::Numerics::float2, float, float, float, float) noexcept = 0;
            virtual int32_t __stdcall AddCubicBezier(winrt::Windows::Foundation::Numerics::float2, winrt::Windows::Foundation::Numerics::float2, winrt::Windows::Foundation::Numerics::float2) noexcept = 0;
            virtual int32_t __stdcall AddLine(winrt::Windows::Foundation::Numerics::float2) noexcept = 0;
            virtual int32_t __stdcall AddLineWithCoords(float, float) noexcept = 0;
            virtual int32_t __stdcall AddQuadraticBezier(winrt::Windows::Foundation::Numerics::float2, winrt::Windows::Foundation::Numerics::float2) noexcept = 0;
            virtual int32_t __stdcall SetFilledRegionDetermination(int32_t) noexcept = 0;
            virtual int32_t __stdcall SetSegmentOptions(uint32_t) noexcept = 0;
            virtual int32_t __stdcall EndFigure(int32_t) noexcept = 0;
            virtual int32_t __stdcall AddGeometry(void*) noexcept = 0;
        };
    };
    template <> struct abi<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasPathBuilderFactory>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall Create(void*, void**) noexcept = 0;
        };
    };
    template <> struct abi<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasPathReceiver>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall BeginFigure(winrt::Windows::Foundation::Numerics::float2, int32_t) noexcept = 0;
            virtual int32_t __stdcall AddArc(winrt::Windows::Foundation::Numerics::float2, float, float, float, int32_t, int32_t) noexcept = 0;
            virtual int32_t __stdcall AddCubicBezier(winrt::Windows::Foundation::Numerics::float2, winrt::Windows::Foundation::Numerics::float2, winrt::Windows::Foundation::Numerics::float2) noexcept = 0;
            virtual int32_t __stdcall AddLine(winrt::Windows::Foundation::Numerics::float2) noexcept = 0;
            virtual int32_t __stdcall AddQuadraticBezier(winrt::Windows::Foundation::Numerics::float2, winrt::Windows::Foundation::Numerics::float2) noexcept = 0;
            virtual int32_t __stdcall SetFilledRegionDetermination(int32_t) noexcept = 0;
            virtual int32_t __stdcall SetSegmentOptions(uint32_t) noexcept = 0;
            virtual int32_t __stdcall EndFigure(int32_t) noexcept = 0;
        };
    };
    template <> struct abi<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasStrokeStyle>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall get_StartCap(int32_t*) noexcept = 0;
            virtual int32_t __stdcall put_StartCap(int32_t) noexcept = 0;
            virtual int32_t __stdcall get_EndCap(int32_t*) noexcept = 0;
            virtual int32_t __stdcall put_EndCap(int32_t) noexcept = 0;
            virtual int32_t __stdcall get_DashCap(int32_t*) noexcept = 0;
            virtual int32_t __stdcall put_DashCap(int32_t) noexcept = 0;
            virtual int32_t __stdcall get_LineJoin(int32_t*) noexcept = 0;
            virtual int32_t __stdcall put_LineJoin(int32_t) noexcept = 0;
            virtual int32_t __stdcall get_MiterLimit(float*) noexcept = 0;
            virtual int32_t __stdcall put_MiterLimit(float) noexcept = 0;
            virtual int32_t __stdcall get_DashStyle(int32_t*) noexcept = 0;
            virtual int32_t __stdcall put_DashStyle(int32_t) noexcept = 0;
            virtual int32_t __stdcall get_DashOffset(float*) noexcept = 0;
            virtual int32_t __stdcall put_DashOffset(float) noexcept = 0;
            virtual int32_t __stdcall get_CustomDashStyle(uint32_t* __valueElementsSize, float**) noexcept = 0;
            virtual int32_t __stdcall put_CustomDashStyle(uint32_t, float*) noexcept = 0;
            virtual int32_t __stdcall get_TransformBehavior(int32_t*) noexcept = 0;
            virtual int32_t __stdcall put_TransformBehavior(int32_t) noexcept = 0;
        };
    };
    template <typename D>
    struct consume_Microsoft_Graphics_Canvas_Geometry_ICanvasCachedGeometry
    {
        [[nodiscard]] auto Device() const;
    };
    template <> struct consume<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasCachedGeometry>
    {
        template <typename D> using type = consume_Microsoft_Graphics_Canvas_Geometry_ICanvasCachedGeometry<D>;
    };
    template <typename D>
    struct consume_Microsoft_Graphics_Canvas_Geometry_ICanvasCachedGeometryStatics
    {
        auto CreateFill(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometry const& geometry) const;
        auto CreateFill(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometry const& geometry, float flatteningTolerance) const;
        auto CreateStroke(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometry const& geometry, float strokeWidth) const;
        auto CreateStroke(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometry const& geometry, float strokeWidth, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasStrokeStyle const& strokeStyle) const;
        auto CreateStroke(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometry const& geometry, float strokeWidth, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasStrokeStyle const& strokeStyle, float flatteningTolerance) const;
    };
    template <> struct consume<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasCachedGeometryStatics>
    {
        template <typename D> using type = consume_Microsoft_Graphics_Canvas_Geometry_ICanvasCachedGeometryStatics<D>;
    };
    template <typename D>
    struct consume_Microsoft_Graphics_Canvas_Geometry_ICanvasGeometry
    {
        auto CombineWith(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometry const& otherGeometry, winrt::Windows::Foundation::Numerics::float3x2 const& otherGeometryTransform, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometryCombine const& combine) const;
        auto CombineWith(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometry const& otherGeometry, winrt::Windows::Foundation::Numerics::float3x2 const& otherGeometryTransform, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometryCombine const& combine, float flatteningTolerance) const;
        auto Stroke(float strokeWidth) const;
        auto Stroke(float strokeWidth, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasStrokeStyle const& strokeStyle) const;
        auto Stroke(float strokeWidth, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasStrokeStyle const& strokeStyle, winrt::Windows::Foundation::Numerics::float3x2 const& transform, float flatteningTolerance) const;
        auto Outline() const;
        auto Outline(winrt::Windows::Foundation::Numerics::float3x2 const& transform, float flatteningTolerance) const;
        auto Simplify(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometrySimplification const& simplification) const;
        auto Simplify(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometrySimplification const& simplification, winrt::Windows::Foundation::Numerics::float3x2 const& transform, float flatteningTolerance) const;
        auto Transform(winrt::Windows::Foundation::Numerics::float3x2 const& transform) const;
        auto CompareWith(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometry const& otherGeometry) const;
        auto CompareWith(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometry const& otherGeometry, winrt::Windows::Foundation::Numerics::float3x2 const& otherGeometryTransform, float flatteningTolerance) const;
        auto ComputeArea() const;
        auto ComputeArea(winrt::Windows::Foundation::Numerics::float3x2 const& transform, float flatteningTolerance) const;
        auto ComputePathLength() const;
        auto ComputePathLength(winrt::Windows::Foundation::Numerics::float3x2 const& transform, float flatteningTolerance) const;
        auto ComputePointOnPath(float distance) const;
        auto ComputePointOnPath(float distance, winrt::Windows::Foundation::Numerics::float2& tangent) const;
        auto ComputePointOnPath(float length, winrt::Windows::Foundation::Numerics::float3x2 const& transform, float flatteningTolerance, winrt::Windows::Foundation::Numerics::float2& tangent) const;
        auto FillContainsPoint(winrt::Windows::Foundation::Numerics::float2 const& point) const;
        auto FillContainsPoint(winrt::Windows::Foundation::Numerics::float2 const& point, winrt::Windows::Foundation::Numerics::float3x2 const& transform, float flatteningTolerance) const;
        auto ComputeBounds() const;
        auto ComputeBounds(winrt::Windows::Foundation::Numerics::float3x2 const& transform) const;
        auto ComputeStrokeBounds(float strokeWidth) const;
        auto ComputeStrokeBounds(float strokeWidth, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasStrokeStyle const& strokeStyle) const;
        auto ComputeStrokeBounds(float strokeWidth, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasStrokeStyle const& strokeStyle, winrt::Windows::Foundation::Numerics::float3x2 const& transform, float flatteningTolerance) const;
        auto StrokeContainsPoint(winrt::Windows::Foundation::Numerics::float2 const& point, float strokeWidth) const;
        auto StrokeContainsPoint(winrt::Windows::Foundation::Numerics::float2 const& point, float strokeWidth, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasStrokeStyle const& strokeStyle) const;
        auto StrokeContainsPoint(winrt::Windows::Foundation::Numerics::float2 const& point, float strokeWidth, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasStrokeStyle const& strokeStyle, winrt::Windows::Foundation::Numerics::float3x2 const& transform, float flatteningTolerance) const;
        auto Tessellate() const;
        auto Tessellate(winrt::Windows::Foundation::Numerics::float3x2 const& transform, float flatteningTolerance) const;
        auto SendPathTo(winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasPathReceiver const& streamReader) const;
        [[nodiscard]] auto Device() const;
    };
    template <> struct consume<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGeometry>
    {
        template <typename D> using type = consume_Microsoft_Graphics_Canvas_Geometry_ICanvasGeometry<D>;
    };
    template <typename D>
    struct consume_Microsoft_Graphics_Canvas_Geometry_ICanvasGeometryStatics
    {
        auto CreateRectangle(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, winrt::Windows::Foundation::Rect const& rect) const;
        auto CreateRectangle(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, float x, float y, float w, float h) const;
        auto CreateRoundedRectangle(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, winrt::Windows::Foundation::Rect const& rect, float radiusX, float radiusY) const;
        auto CreateRoundedRectangle(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, float x, float y, float w, float h, float radiusX, float radiusY) const;
        auto CreateEllipse(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, winrt::Windows::Foundation::Numerics::float2 const& centerPoint, float radiusX, float radiusY) const;
        auto CreateEllipse(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, float x, float y, float radiusX, float radiusY) const;
        auto CreateCircle(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, winrt::Windows::Foundation::Numerics::float2 const& centerPoint, float radius) const;
        auto CreateCircle(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, float x, float y, float radius) const;
        auto CreatePath(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasPathBuilder const& pathBuilder) const;
        auto CreatePolygon(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, array_view<winrt::Windows::Foundation::Numerics::float2 const> points) const;
        auto CreateGroup(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, array_view<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometry const> geometries) const;
        auto CreateGroup(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, array_view<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometry const> geometries, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasFilledRegionDetermination const& filledRegionDetermination) const;
        auto CreateText(winrt::Microsoft::Graphics::Canvas::Text::CanvasTextLayout const& textLayout) const;
        auto CreateGlyphRun(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, winrt::Windows::Foundation::Numerics::float2 const& point, winrt::Microsoft::Graphics::Canvas::Text::CanvasFontFace const& fontFace, float fontSize, array_view<winrt::Microsoft::Graphics::Canvas::Text::CanvasGlyph const> glyphs, bool isSideways, uint32_t bidiLevel, winrt::Microsoft::Graphics::Canvas::Text::CanvasTextMeasuringMode const& measuringMode, winrt::Microsoft::Graphics::Canvas::Text::CanvasGlyphOrientation const& glyphOrientation) const;
        auto ComputeFlatteningTolerance(float dpi, float maximumZoomFactor) const;
        auto ComputeFlatteningTolerance(float dpi, float maximumZoomFactor, winrt::Windows::Foundation::Numerics::float3x2 const& expectedGeometryTransform) const;
        [[nodiscard]] auto DefaultFlatteningTolerance() const;
    };
    template <> struct consume<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGeometryStatics>
    {
        template <typename D> using type = consume_Microsoft_Graphics_Canvas_Geometry_ICanvasGeometryStatics<D>;
    };
    template <typename D>
    struct consume_Microsoft_Graphics_Canvas_Geometry_ICanvasGradientMesh
    {
        [[nodiscard]] auto Patches() const;
        auto GetBounds(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator) const;
        auto GetBounds(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, winrt::Windows::Foundation::Numerics::float3x2 const& transform) const;
        [[nodiscard]] auto Device() const;
    };
    template <> struct consume<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGradientMesh>
    {
        template <typename D> using type = consume_Microsoft_Graphics_Canvas_Geometry_ICanvasGradientMesh<D>;
    };
    template <typename D>
    struct consume_Microsoft_Graphics_Canvas_Geometry_ICanvasGradientMeshFactory
    {
        auto Create(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, array_view<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGradientMeshPatch const> patchElements) const;
    };
    template <> struct consume<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGradientMeshFactory>
    {
        template <typename D> using type = consume_Microsoft_Graphics_Canvas_Geometry_ICanvasGradientMeshFactory<D>;
    };
    template <typename D>
    struct consume_Microsoft_Graphics_Canvas_Geometry_ICanvasGradientMeshStatics
    {
        auto CreateCoonsPatch(array_view<winrt::Windows::Foundation::Numerics::float2 const> points, array_view<winrt::Windows::Foundation::Numerics::float4 const> colors, array_view<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGradientMeshPatchEdge const> edges) const;
        auto CreateTensorPatch(array_view<winrt::Windows::Foundation::Numerics::float2 const> points, array_view<winrt::Windows::Foundation::Numerics::float4 const> colors, array_view<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGradientMeshPatchEdge const> edges) const;
    };
    template <> struct consume<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGradientMeshStatics>
    {
        template <typename D> using type = consume_Microsoft_Graphics_Canvas_Geometry_ICanvasGradientMeshStatics<D>;
    };
    template <typename D>
    struct consume_Microsoft_Graphics_Canvas_Geometry_ICanvasPathBuilder
    {
        auto BeginFigure(winrt::Windows::Foundation::Numerics::float2 const& startPoint, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasFigureFill const& figureFill) const;
        auto BeginFigure(winrt::Windows::Foundation::Numerics::float2 const& startPoint) const;
        auto BeginFigure(float startX, float startY, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasFigureFill const& figureFill) const;
        auto BeginFigure(float startX, float startY) const;
        auto AddArc(winrt::Windows::Foundation::Numerics::float2 const& endPoint, float radiusX, float radiusY, float rotationAngle, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasSweepDirection const& sweepDirection, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasArcSize const& arcSize) const;
        auto AddArc(winrt::Windows::Foundation::Numerics::float2 const& centerPoint, float radiusX, float radiusY, float startAngle, float sweepAngle) const;
        auto AddCubicBezier(winrt::Windows::Foundation::Numerics::float2 const& controlPoint1, winrt::Windows::Foundation::Numerics::float2 const& controlPoint2, winrt::Windows::Foundation::Numerics::float2 const& endPoint) const;
        auto AddLine(winrt::Windows::Foundation::Numerics::float2 const& endPoint) const;
        auto AddLine(float x, float y) const;
        auto AddQuadraticBezier(winrt::Windows::Foundation::Numerics::float2 const& controlPoint, winrt::Windows::Foundation::Numerics::float2 const& endPoint) const;
        auto SetFilledRegionDetermination(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasFilledRegionDetermination const& filledRegionDetermination) const;
        auto SetSegmentOptions(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasFigureSegmentOptions const& figureSegmentOptions) const;
        auto EndFigure(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasFigureLoop const& figureLoop) const;
        auto AddGeometry(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometry const& geometry) const;
    };
    template <> struct consume<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasPathBuilder>
    {
        template <typename D> using type = consume_Microsoft_Graphics_Canvas_Geometry_ICanvasPathBuilder<D>;
    };
    template <typename D>
    struct consume_Microsoft_Graphics_Canvas_Geometry_ICanvasPathBuilderFactory
    {
        auto Create(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator) const;
    };
    template <> struct consume<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasPathBuilderFactory>
    {
        template <typename D> using type = consume_Microsoft_Graphics_Canvas_Geometry_ICanvasPathBuilderFactory<D>;
    };
    template <typename D>
    struct consume_Microsoft_Graphics_Canvas_Geometry_ICanvasPathReceiver
    {
        auto BeginFigure(winrt::Windows::Foundation::Numerics::float2 const& startPoint, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasFigureFill const& figureFill) const;
        auto AddArc(winrt::Windows::Foundation::Numerics::float2 const& endPoint, float radiusX, float radiusY, float rotationAngle, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasSweepDirection const& sweepDirection, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasArcSize const& arcSize) const;
        auto AddCubicBezier(winrt::Windows::Foundation::Numerics::float2 const& controlPoint1, winrt::Windows::Foundation::Numerics::float2 const& controlPoint2, winrt::Windows::Foundation::Numerics::float2 const& endPoint) const;
        auto AddLine(winrt::Windows::Foundation::Numerics::float2 const& endPoint) const;
        auto AddQuadraticBezier(winrt::Windows::Foundation::Numerics::float2 const& controlPoint, winrt::Windows::Foundation::Numerics::float2 const& endPoint) const;
        auto SetFilledRegionDetermination(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasFilledRegionDetermination const& filledRegionDetermination) const;
        auto SetSegmentOptions(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasFigureSegmentOptions const& figureSegmentOptions) const;
        auto EndFigure(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasFigureLoop const& figureLoop) const;
    };
    template <> struct consume<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasPathReceiver>
    {
        template <typename D> using type = consume_Microsoft_Graphics_Canvas_Geometry_ICanvasPathReceiver<D>;
    };
    template <typename D>
    struct consume_Microsoft_Graphics_Canvas_Geometry_ICanvasStrokeStyle
    {
        [[nodiscard]] auto StartCap() const;
        auto StartCap(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasCapStyle const& value) const;
        [[nodiscard]] auto EndCap() const;
        auto EndCap(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasCapStyle const& value) const;
        [[nodiscard]] auto DashCap() const;
        auto DashCap(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasCapStyle const& value) const;
        [[nodiscard]] auto LineJoin() const;
        auto LineJoin(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasLineJoin const& value) const;
        [[nodiscard]] auto MiterLimit() const;
        auto MiterLimit(float value) const;
        [[nodiscard]] auto DashStyle() const;
        auto DashStyle(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasDashStyle const& value) const;
        [[nodiscard]] auto DashOffset() const;
        auto DashOffset(float value) const;
        [[nodiscard]] auto CustomDashStyle() const;
        auto CustomDashStyle(array_view<float const> valueElements) const;
        [[nodiscard]] auto TransformBehavior() const;
        auto TransformBehavior(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasStrokeTransformBehavior const& value) const;
    };
    template <> struct consume<winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasStrokeStyle>
    {
        template <typename D> using type = consume_Microsoft_Graphics_Canvas_Geometry_ICanvasStrokeStyle<D>;
    };
    struct struct_Microsoft_Graphics_Canvas_Geometry_CanvasGradientMeshPatch
    {
        winrt::Windows::Foundation::Numerics::float2 Point00;
        winrt::Windows::Foundation::Numerics::float2 Point01;
        winrt::Windows::Foundation::Numerics::float2 Point02;
        winrt::Windows::Foundation::Numerics::float2 Point03;
        winrt::Windows::Foundation::Numerics::float2 Point10;
        winrt::Windows::Foundation::Numerics::float2 Point11;
        winrt::Windows::Foundation::Numerics::float2 Point12;
        winrt::Windows::Foundation::Numerics::float2 Point13;
        winrt::Windows::Foundation::Numerics::float2 Point20;
        winrt::Windows::Foundation::Numerics::float2 Point21;
        winrt::Windows::Foundation::Numerics::float2 Point22;
        winrt::Windows::Foundation::Numerics::float2 Point23;
        winrt::Windows::Foundation::Numerics::float2 Point30;
        winrt::Windows::Foundation::Numerics::float2 Point31;
        winrt::Windows::Foundation::Numerics::float2 Point32;
        winrt::Windows::Foundation::Numerics::float2 Point33;
        winrt::Windows::Foundation::Numerics::float4 Color00;
        winrt::Windows::Foundation::Numerics::float4 Color03;
        winrt::Windows::Foundation::Numerics::float4 Color30;
        winrt::Windows::Foundation::Numerics::float4 Color33;
        int32_t Edge00To03;
        int32_t Edge03To33;
        int32_t Edge33To30;
        int32_t Edge30To00;
    };
    template <> struct abi<Microsoft::Graphics::Canvas::Geometry::CanvasGradientMeshPatch>
    {
        using type = struct_Microsoft_Graphics_Canvas_Geometry_CanvasGradientMeshPatch;
    };
    struct struct_Microsoft_Graphics_Canvas_Geometry_CanvasTriangleVertices
    {
        winrt::Windows::Foundation::Numerics::float2 Vertex1;
        winrt::Windows::Foundation::Numerics::float2 Vertex2;
        winrt::Windows::Foundation::Numerics::float2 Vertex3;
    };
    template <> struct abi<Microsoft::Graphics::Canvas::Geometry::CanvasTriangleVertices>
    {
        using type = struct_Microsoft_Graphics_Canvas_Geometry_CanvasTriangleVertices;
    };
}
#endif
