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

#pragma once
#ifndef WINRT_Microsoft_Graphics_Canvas_Svg_0_H
#define WINRT_Microsoft_Graphics_Canvas_Svg_0_H
WINRT_EXPORT namespace winrt::Microsoft::Graphics::Canvas
{
    struct CanvasDevice;
    enum class CanvasEdgeBehavior : int32_t;
    struct ICanvasResourceCreator;
}
WINRT_EXPORT namespace winrt::Microsoft::Graphics::Canvas::Geometry
{
    enum class CanvasCapStyle : int32_t;
    enum class CanvasFilledRegionDetermination : int32_t;
    struct CanvasGeometry;
    enum class CanvasLineJoin : int32_t;
}
WINRT_EXPORT namespace winrt::Windows::Foundation
{
    struct IAsyncAction;
    struct Rect;
}
WINRT_EXPORT namespace winrt::Windows::Foundation::Numerics
{
}
WINRT_EXPORT namespace winrt::Windows::Storage::Streams
{
    struct IRandomAccessStream;
}
WINRT_EXPORT namespace winrt::Windows::UI
{
    struct Color;
}
WINRT_EXPORT namespace winrt::Microsoft::Graphics::Canvas::Svg
{
    enum class CanvasSvgAspectAlignment : int32_t
    {
        None = 0,
        XMinYMin = 1,
        XMidYMin = 2,
        XMaxYMin = 3,
        XMinYMid = 4,
        XMidYMid = 5,
        XMaxYMid = 6,
        XMinYMax = 7,
        XMidYMax = 8,
        XMaxYMax = 9,
    };
    enum class CanvasSvgAspectScaling : int32_t
    {
        Meet = 0,
        Slice = 1,
    };
    enum class CanvasSvgDisplay : int32_t
    {
        Inline = 0,
        None = 1,
    };
    enum class CanvasSvgLengthUnits : int32_t
    {
        Number = 0,
        Percentage = 1,
    };
    enum class CanvasSvgOverflow : int32_t
    {
        DoNotClipToViewport = 0,
        ClipToViewport = 1,
    };
    enum class CanvasSvgPaintType : int32_t
    {
        None = 0,
        Color = 1,
        CurrentColor = 2,
        Uri = 3,
        UriThenNone = 4,
        UriThenColor = 5,
        UriThenCurrentColor = 6,
    };
    enum class CanvasSvgPathCommand : int32_t
    {
        ClosePath = 0,
        MoveAbsolute = 1,
        MoveRelative = 2,
        LineAbsolute = 3,
        LineRelative = 4,
        CubicAbsolute = 5,
        CubicRelative = 6,
        QuadraticAbsolute = 7,
        QuadraticRelative = 8,
        ArcAbsolute = 9,
        ArcRelative = 10,
        HorizontalAbsolute = 11,
        HorizontalRelative = 12,
        VerticalAbsolute = 13,
        VerticalRelative = 14,
        CubicSmoothAbsolute = 15,
        CubicSmoothRelative = 16,
        QuadraticSmoothAbsolute = 17,
        QuadraticSmoothRelative = 18,
    };
    enum class CanvasSvgUnits : int32_t
    {
        UserSpaceOnUse = 0,
        ObjectBoundingBox = 1,
    };
    enum class CanvasSvgVisibility : int32_t
    {
        Visible = 0,
        Hidden = 1,
    };
    struct ICanvasSvgAttribute;
    struct ICanvasSvgDocument;
    struct ICanvasSvgDocumentFactory;
    struct ICanvasSvgDocumentStatics;
    struct ICanvasSvgElement;
    struct ICanvasSvgNamedElement;
    struct ICanvasSvgPaintAttribute;
    struct ICanvasSvgPathAttribute;
    struct ICanvasSvgPointsAttribute;
    struct ICanvasSvgStrokeDashArrayAttribute;
    struct ICanvasSvgTextElement;
    struct CanvasSvgDocument;
    struct CanvasSvgNamedElement;
    struct CanvasSvgPaintAttribute;
    struct CanvasSvgPathAttribute;
    struct CanvasSvgPointsAttribute;
    struct CanvasSvgStrokeDashArrayAttribute;
    struct CanvasSvgTextElement;
}
namespace winrt::impl
{
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgAttribute>{ using type = interface_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgDocument>{ using type = interface_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgDocumentFactory>{ using type = interface_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgDocumentStatics>{ using type = interface_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgElement>{ using type = interface_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgNamedElement>{ using type = interface_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgPaintAttribute>{ using type = interface_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgPathAttribute>{ using type = interface_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgPointsAttribute>{ using type = interface_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgStrokeDashArrayAttribute>{ using type = interface_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgTextElement>{ using type = interface_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgDocument>{ using type = class_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgNamedElement>{ using type = class_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgPaintAttribute>{ using type = class_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgPathAttribute>{ using type = class_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgPointsAttribute>{ using type = class_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgStrokeDashArrayAttribute>{ using type = class_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgTextElement>{ using type = class_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgAspectAlignment>{ using type = enum_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgAspectScaling>{ using type = enum_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgDisplay>{ using type = enum_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgLengthUnits>{ using type = enum_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgOverflow>{ using type = enum_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgPaintType>{ using type = enum_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgPathCommand>{ using type = enum_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgUnits>{ using type = enum_category; };
    template <> struct category<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgVisibility>{ using type = enum_category; };
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgDocument> = L"Microsoft.Graphics.Canvas.Svg.CanvasSvgDocument";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgNamedElement> = L"Microsoft.Graphics.Canvas.Svg.CanvasSvgNamedElement";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgPaintAttribute> = L"Microsoft.Graphics.Canvas.Svg.CanvasSvgPaintAttribute";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgPathAttribute> = L"Microsoft.Graphics.Canvas.Svg.CanvasSvgPathAttribute";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgPointsAttribute> = L"Microsoft.Graphics.Canvas.Svg.CanvasSvgPointsAttribute";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgStrokeDashArrayAttribute> = L"Microsoft.Graphics.Canvas.Svg.CanvasSvgStrokeDashArrayAttribute";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgTextElement> = L"Microsoft.Graphics.Canvas.Svg.CanvasSvgTextElement";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgAspectAlignment> = L"Microsoft.Graphics.Canvas.Svg.CanvasSvgAspectAlignment";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgAspectScaling> = L"Microsoft.Graphics.Canvas.Svg.CanvasSvgAspectScaling";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgDisplay> = L"Microsoft.Graphics.Canvas.Svg.CanvasSvgDisplay";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgLengthUnits> = L"Microsoft.Graphics.Canvas.Svg.CanvasSvgLengthUnits";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgOverflow> = L"Microsoft.Graphics.Canvas.Svg.CanvasSvgOverflow";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgPaintType> = L"Microsoft.Graphics.Canvas.Svg.CanvasSvgPaintType";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgPathCommand> = L"Microsoft.Graphics.Canvas.Svg.CanvasSvgPathCommand";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgUnits> = L"Microsoft.Graphics.Canvas.Svg.CanvasSvgUnits";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgVisibility> = L"Microsoft.Graphics.Canvas.Svg.CanvasSvgVisibility";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgAttribute> = L"Microsoft.Graphics.Canvas.Svg.ICanvasSvgAttribute";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgDocument> = L"Microsoft.Graphics.Canvas.Svg.ICanvasSvgDocument";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgDocumentFactory> = L"Microsoft.Graphics.Canvas.Svg.ICanvasSvgDocumentFactory";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgDocumentStatics> = L"Microsoft.Graphics.Canvas.Svg.ICanvasSvgDocumentStatics";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgElement> = L"Microsoft.Graphics.Canvas.Svg.ICanvasSvgElement";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgNamedElement> = L"Microsoft.Graphics.Canvas.Svg.ICanvasSvgNamedElement";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgPaintAttribute> = L"Microsoft.Graphics.Canvas.Svg.ICanvasSvgPaintAttribute";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgPathAttribute> = L"Microsoft.Graphics.Canvas.Svg.ICanvasSvgPathAttribute";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgPointsAttribute> = L"Microsoft.Graphics.Canvas.Svg.ICanvasSvgPointsAttribute";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgStrokeDashArrayAttribute> = L"Microsoft.Graphics.Canvas.Svg.ICanvasSvgStrokeDashArrayAttribute";
    template <> inline constexpr auto& name_v<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgTextElement> = L"Microsoft.Graphics.Canvas.Svg.ICanvasSvgTextElement";
    template <> inline constexpr guid guid_v<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgAttribute>{ 0x652786A8,0xF3AB,0x4083,{ 0x99,0x1D,0x97,0x48,0xAA,0x86,0xBD,0x6E } }; // 652786A8-F3AB-4083-991D-9748AA86BD6E
    template <> inline constexpr guid guid_v<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgDocument>{ 0xA0E34929,0x3551,0x44FE,{ 0xA6,0x70,0xD9,0xB3,0xFD,0x80,0x05,0x16 } }; // A0E34929-3551-44FE-A670-D9B3FD800516
    template <> inline constexpr guid guid_v<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgDocumentFactory>{ 0xBAB0F16D,0x4050,0x4EF6,{ 0x80,0x22,0x8A,0x07,0xE9,0xE7,0x4A,0x9D } }; // BAB0F16D-4050-4EF6-8022-8A07E9E74A9D
    template <> inline constexpr guid guid_v<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgDocumentStatics>{ 0x7740E748,0xCB9A,0x453F,{ 0xA6,0x78,0x8B,0x3B,0x3A,0x72,0x54,0xD3 } }; // 7740E748-CB9A-453F-A678-8B3B3A7254D3
    template <> inline constexpr guid guid_v<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgElement>{ 0x0775CB81,0xC555,0x45BF,{ 0x97,0x95,0x0F,0xF5,0x91,0x51,0xC3,0xBE } }; // 0775CB81-C555-45BF-9795-0FF59151C3BE
    template <> inline constexpr guid guid_v<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgNamedElement>{ 0xD8B7CB94,0x8167,0x495D,{ 0x9C,0x71,0x5E,0x97,0xE5,0xD0,0x8D,0x2B } }; // D8B7CB94-8167-495D-9C71-5E97E5D08D2B
    template <> inline constexpr guid guid_v<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgPaintAttribute>{ 0x653786A8,0xF3AB,0x4083,{ 0x99,0x1D,0x97,0x48,0xAA,0x86,0xBD,0x6E } }; // 653786A8-F3AB-4083-991D-9748AA86BD6E
    template <> inline constexpr guid guid_v<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgPathAttribute>{ 0x652786A8,0xF3AB,0x4083,{ 0x99,0x1D,0x97,0x48,0xAB,0x86,0xBD,0x6E } }; // 652786A8-F3AB-4083-991D-9748AB86BD6E
    template <> inline constexpr guid guid_v<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgPointsAttribute>{ 0x652786A8,0xF3AB,0x4083,{ 0x99,0x1D,0x97,0x48,0xAA,0x86,0xBD,0x6F } }; // 652786A8-F3AB-4083-991D-9748AA86BD6F
    template <> inline constexpr guid guid_v<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgStrokeDashArrayAttribute>{ 0x652786A8,0xF3AB,0x4083,{ 0x99,0x1D,0x97,0x48,0xAA,0x86,0xBD,0x70 } }; // 652786A8-F3AB-4083-991D-9748AA86BD70
    template <> inline constexpr guid guid_v<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgTextElement>{ 0x652786A8,0xF3AB,0x4083,{ 0x99,0x1D,0x97,0x48,0xAA,0x86,0xBD,0x6D } }; // 652786A8-F3AB-4083-991D-9748AA86BD6D
    template <> struct default_interface<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgDocument>{ using type = winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgDocument; };
    template <> struct default_interface<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgNamedElement>{ using type = winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgNamedElement; };
    template <> struct default_interface<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgPaintAttribute>{ using type = winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgPaintAttribute; };
    template <> struct default_interface<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgPathAttribute>{ using type = winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgPathAttribute; };
    template <> struct default_interface<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgPointsAttribute>{ using type = winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgPointsAttribute; };
    template <> struct default_interface<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgStrokeDashArrayAttribute>{ using type = winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgStrokeDashArrayAttribute; };
    template <> struct default_interface<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgTextElement>{ using type = winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgTextElement; };
    template <> struct abi<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgAttribute>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall Clone(void**) noexcept = 0;
            virtual int32_t __stdcall GetElement(void**) noexcept = 0;
            virtual int32_t __stdcall get_Device(void**) noexcept = 0;
        };
    };
    template <> struct abi<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgDocument>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall get_Device(void**) noexcept = 0;
            virtual int32_t __stdcall GetXml(void**) noexcept = 0;
            virtual int32_t __stdcall SaveAsync(void*, void**) noexcept = 0;
            virtual int32_t __stdcall put_Root(void*) noexcept = 0;
            virtual int32_t __stdcall get_Root(void**) noexcept = 0;
            virtual int32_t __stdcall FindElementById(void*, void**) noexcept = 0;
            virtual int32_t __stdcall CreatePaintAttributeWithDefaults(void**) noexcept = 0;
            virtual int32_t __stdcall CreatePaintAttribute(int32_t, struct struct_Windows_UI_Color, void*, void**) noexcept = 0;
            virtual int32_t __stdcall CreatePathAttributeWithDefaults(void**) noexcept = 0;
            virtual int32_t __stdcall CreatePathAttribute(uint32_t, float*, uint32_t, int32_t*, void**) noexcept = 0;
            virtual int32_t __stdcall CreatePointsAttributeWithDefaults(void**) noexcept = 0;
            virtual int32_t __stdcall CreatePointsAttribute(uint32_t, winrt::Windows::Foundation::Numerics::float2*, void**) noexcept = 0;
            virtual int32_t __stdcall CreateStrokeDashArrayAttributeWithDefaults(void**) noexcept = 0;
            virtual int32_t __stdcall CreateStrokeDashArrayAttribute(uint32_t, float*, uint32_t, int32_t*, void**) noexcept = 0;
            virtual int32_t __stdcall LoadElementFromXml(void*, void**) noexcept = 0;
            virtual int32_t __stdcall LoadElementAsync(void*, void**) noexcept = 0;
        };
    };
    template <> struct abi<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgDocumentFactory>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall CreateEmpty(void*, void**) noexcept = 0;
        };
    };
    template <> struct abi<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgDocumentStatics>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall LoadFromXml(void*, void*, void**) noexcept = 0;
            virtual int32_t __stdcall LoadAsync(void*, void*, void**) noexcept = 0;
            virtual int32_t __stdcall IsSupported(void*, bool*) noexcept = 0;
        };
    };
    template <> struct abi<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgElement>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall get_ContainingDocument(void**) noexcept = 0;
            virtual int32_t __stdcall get_Parent(void**) noexcept = 0;
            virtual int32_t __stdcall get_Device(void**) noexcept = 0;
        };
    };
    template <> struct abi<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgNamedElement>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall AppendChild(void*) noexcept = 0;
            virtual int32_t __stdcall CreateAndAppendNamedChildElement(void*, void**) noexcept = 0;
            virtual int32_t __stdcall CreateAndAppendTextChildElement(void*, void**) noexcept = 0;
            virtual int32_t __stdcall get_FirstChild(void**) noexcept = 0;
            virtual int32_t __stdcall get_LastChild(void**) noexcept = 0;
            virtual int32_t __stdcall GetPreviousSibling(void*, void**) noexcept = 0;
            virtual int32_t __stdcall GetNextSibling(void*, void**) noexcept = 0;
            virtual int32_t __stdcall get_SpecifiedAttributes(uint32_t* __valueElementsSize, void***) noexcept = 0;
            virtual int32_t __stdcall get_Tag(void**) noexcept = 0;
            virtual int32_t __stdcall get_HasChildren(bool*) noexcept = 0;
            virtual int32_t __stdcall InsertChildBefore(void*, void*) noexcept = 0;
            virtual int32_t __stdcall IsAttributeSpecified(void*, bool*) noexcept = 0;
            virtual int32_t __stdcall IsAttributeSpecifiedWithInherhited(void*, bool, bool*) noexcept = 0;
            virtual int32_t __stdcall RemoveAttribute(void*) noexcept = 0;
            virtual int32_t __stdcall RemoveChild(void*) noexcept = 0;
            virtual int32_t __stdcall ReplaceChild(void*, void*) noexcept = 0;
            virtual int32_t __stdcall SetStringAttribute(void*, void*) noexcept = 0;
            virtual int32_t __stdcall GetStringAttribute(void*, void**) noexcept = 0;
            virtual int32_t __stdcall SetAttribute(void*, void*) noexcept = 0;
            virtual int32_t __stdcall GetAttribute(void*, void**) noexcept = 0;
            virtual int32_t __stdcall SetIdAttribute(void*, void*) noexcept = 0;
            virtual int32_t __stdcall GetIdAttribute(void*, void**) noexcept = 0;
            virtual int32_t __stdcall SetFloatAttribute(void*, float) noexcept = 0;
            virtual int32_t __stdcall GetFloatAttribute(void*, float*) noexcept = 0;
            virtual int32_t __stdcall SetColorAttribute(void*, struct struct_Windows_UI_Color) noexcept = 0;
            virtual int32_t __stdcall GetColorAttribute(void*, struct struct_Windows_UI_Color*) noexcept = 0;
            virtual int32_t __stdcall SetFilledRegionDeterminationAttribute(void*, int32_t) noexcept = 0;
            virtual int32_t __stdcall GetFilledRegionDeterminationAttribute(void*, int32_t*) noexcept = 0;
            virtual int32_t __stdcall SetDisplayAttribute(void*, int32_t) noexcept = 0;
            virtual int32_t __stdcall GetDisplayAttribute(void*, int32_t*) noexcept = 0;
            virtual int32_t __stdcall SetOverflowAttribute(void*, int32_t) noexcept = 0;
            virtual int32_t __stdcall GetOverflowAttribute(void*, int32_t*) noexcept = 0;
            virtual int32_t __stdcall SetCapStyleAttribute(void*, int32_t) noexcept = 0;
            virtual int32_t __stdcall GetCapStyleAttribute(void*, int32_t*) noexcept = 0;
            virtual int32_t __stdcall SetLineJoinAttribute(void*, int32_t) noexcept = 0;
            virtual int32_t __stdcall GetLineJoinAttribute(void*, int32_t*) noexcept = 0;
            virtual int32_t __stdcall SetVisibilityAttribute(void*, int32_t) noexcept = 0;
            virtual int32_t __stdcall GetVisibilityAttribute(void*, int32_t*) noexcept = 0;
            virtual int32_t __stdcall SetTransformAttribute(void*, winrt::Windows::Foundation::Numerics::float3x2) noexcept = 0;
            virtual int32_t __stdcall GetTransformAttribute(void*, winrt::Windows::Foundation::Numerics::float3x2*) noexcept = 0;
            virtual int32_t __stdcall SetUnitsAttribute(void*, int32_t) noexcept = 0;
            virtual int32_t __stdcall GetUnitsAttribute(void*, int32_t*) noexcept = 0;
            virtual int32_t __stdcall SetEdgeBehaviorAttribute(void*, int32_t) noexcept = 0;
            virtual int32_t __stdcall GetEdgeBehaviorAttribute(void*, int32_t*) noexcept = 0;
            virtual int32_t __stdcall SetRectangleAttribute(void*, winrt::Windows::Foundation::Rect) noexcept = 0;
            virtual int32_t __stdcall GetRectangleAttribute(void*, winrt::Windows::Foundation::Rect*) noexcept = 0;
            virtual int32_t __stdcall SetLengthAttribute(void*, float, int32_t) noexcept = 0;
            virtual int32_t __stdcall GetLengthAttribute(void*, int32_t*, float*) noexcept = 0;
            virtual int32_t __stdcall SetAspectRatioAttribute(void*, int32_t, int32_t) noexcept = 0;
            virtual int32_t __stdcall GetAspectRatioAttribute(void*, int32_t*, int32_t*) noexcept = 0;
        };
    };
    template <> struct abi<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgPaintAttribute>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall put_PaintType(int32_t) noexcept = 0;
            virtual int32_t __stdcall get_PaintType(int32_t*) noexcept = 0;
            virtual int32_t __stdcall put_Color(struct struct_Windows_UI_Color) noexcept = 0;
            virtual int32_t __stdcall get_Color(struct struct_Windows_UI_Color*) noexcept = 0;
            virtual int32_t __stdcall put_Id(void*) noexcept = 0;
            virtual int32_t __stdcall get_Id(void**) noexcept = 0;
        };
    };
    template <> struct abi<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgPathAttribute>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall CreatePathGeometry(void**) noexcept = 0;
            virtual int32_t __stdcall CreatePathGeometryWithFill(int32_t, void**) noexcept = 0;
            virtual int32_t __stdcall get_Commands(uint32_t* __valueElementsSize, int32_t**) noexcept = 0;
            virtual int32_t __stdcall GetCommands(int32_t, int32_t, uint32_t* __outputValueElementsSize, int32_t**) noexcept = 0;
            virtual int32_t __stdcall get_SegmentData(uint32_t* __valueElementsSize, float**) noexcept = 0;
            virtual int32_t __stdcall GetSegmentData(int32_t, int32_t, uint32_t* __outputValueElementsSize, float**) noexcept = 0;
            virtual int32_t __stdcall RemoveCommandsAtEnd(int32_t) noexcept = 0;
            virtual int32_t __stdcall RemoveSegmentDataAtEnd(int32_t) noexcept = 0;
            virtual int32_t __stdcall SetCommands(int32_t, uint32_t, int32_t*) noexcept = 0;
            virtual int32_t __stdcall SetSegmentData(int32_t, uint32_t, float*) noexcept = 0;
        };
    };
    template <> struct abi<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgPointsAttribute>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall get_Points(uint32_t* __valueElementsSize, winrt::Windows::Foundation::Numerics::float2**) noexcept = 0;
            virtual int32_t __stdcall GetPoints(int32_t, int32_t, uint32_t* __outputValueElementsSize, winrt::Windows::Foundation::Numerics::float2**) noexcept = 0;
            virtual int32_t __stdcall RemovePointsAtEnd(int32_t) noexcept = 0;
            virtual int32_t __stdcall SetPoints(int32_t, uint32_t, winrt::Windows::Foundation::Numerics::float2*) noexcept = 0;
        };
    };
    template <> struct abi<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgStrokeDashArrayAttribute>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall GetDashes(uint32_t* __valueElementsSize, float**) noexcept = 0;
            virtual int32_t __stdcall GetDashesWithUnits(int32_t, int32_t, uint32_t*, int32_t**, uint32_t* __outputValueElementsSize, float**) noexcept = 0;
            virtual int32_t __stdcall RemoveDashesAtEnd(int32_t) noexcept = 0;
            virtual int32_t __stdcall SetDashes(int32_t, uint32_t, float*) noexcept = 0;
            virtual int32_t __stdcall SetDashesWithUnit(int32_t, uint32_t, float*, int32_t) noexcept = 0;
            virtual int32_t __stdcall SetDashesWithUnits(int32_t, uint32_t, float*, uint32_t, int32_t*) noexcept = 0;
        };
    };
    template <> struct abi<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgTextElement>
    {
        struct WINRT_IMPL_NOVTABLE type : inspectable_abi
        {
            virtual int32_t __stdcall put_Text(void*) noexcept = 0;
            virtual int32_t __stdcall get_Text(void**) noexcept = 0;
        };
    };
    template <typename D>
    struct consume_Microsoft_Graphics_Canvas_Svg_ICanvasSvgAttribute
    {
        auto Clone() const;
        auto GetElement() const;
        [[nodiscard]] auto Device() const;
    };
    template <> struct consume<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgAttribute>
    {
        template <typename D> using type = consume_Microsoft_Graphics_Canvas_Svg_ICanvasSvgAttribute<D>;
    };
    template <typename D>
    struct consume_Microsoft_Graphics_Canvas_Svg_ICanvasSvgDocument
    {
        [[nodiscard]] auto Device() const;
        auto GetXml() const;
        auto SaveAsync(winrt::Windows::Storage::Streams::IRandomAccessStream const& stream) const;
        auto Root(winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgNamedElement const& value) const;
        [[nodiscard]] auto Root() const;
        auto FindElementById(param::hstring const& id) const;
        auto CreatePaintAttribute() const;
        auto CreatePaintAttribute(winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgPaintType const& paintType, winrt::Windows::UI::Color const& color, param::hstring const& id) const;
        auto CreatePathAttribute() const;
        auto CreatePathAttribute(array_view<float const> segmentData, array_view<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgPathCommand const> commands) const;
        auto CreatePointsAttribute() const;
        auto CreatePointsAttribute(array_view<winrt::Windows::Foundation::Numerics::float2 const> points) const;
        auto CreateStrokeDashArrayAttribute() const;
        auto CreateStrokeDashArrayAttribute(array_view<float const> dashValues, array_view<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgLengthUnits const> unitValues) const;
        auto LoadElementFromXml(param::hstring const& xmlString) const;
        auto LoadElementAsync(winrt::Windows::Storage::Streams::IRandomAccessStream const& stream) const;
    };
    template <> struct consume<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgDocument>
    {
        template <typename D> using type = consume_Microsoft_Graphics_Canvas_Svg_ICanvasSvgDocument<D>;
    };
    template <typename D>
    struct consume_Microsoft_Graphics_Canvas_Svg_ICanvasSvgDocumentFactory
    {
        auto CreateEmpty(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator) const;
    };
    template <> struct consume<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgDocumentFactory>
    {
        template <typename D> using type = consume_Microsoft_Graphics_Canvas_Svg_ICanvasSvgDocumentFactory<D>;
    };
    template <typename D>
    struct consume_Microsoft_Graphics_Canvas_Svg_ICanvasSvgDocumentStatics
    {
        auto LoadFromXml(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, param::hstring const& xmlString) const;
        auto LoadAsync(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, winrt::Windows::Storage::Streams::IRandomAccessStream const& stream) const;
        auto IsSupported(winrt::Microsoft::Graphics::Canvas::CanvasDevice const& device) const;
    };
    template <> struct consume<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgDocumentStatics>
    {
        template <typename D> using type = consume_Microsoft_Graphics_Canvas_Svg_ICanvasSvgDocumentStatics<D>;
    };
    template <typename D>
    struct consume_Microsoft_Graphics_Canvas_Svg_ICanvasSvgElement
    {
        [[nodiscard]] auto ContainingDocument() const;
        [[nodiscard]] auto Parent() const;
        [[nodiscard]] auto Device() const;
    };
    template <> struct consume<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgElement>
    {
        template <typename D> using type = consume_Microsoft_Graphics_Canvas_Svg_ICanvasSvgElement<D>;
    };
    template <typename D>
    struct consume_Microsoft_Graphics_Canvas_Svg_ICanvasSvgNamedElement
    {
        auto AppendChild(winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgElement const& child) const;
        auto CreateAndAppendNamedChildElement(param::hstring const& childName) const;
        auto CreateAndAppendTextChildElement(param::hstring const& textContent) const;
        [[nodiscard]] auto FirstChild() const;
        [[nodiscard]] auto LastChild() const;
        auto GetPreviousSibling(winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgElement const& child) const;
        auto GetNextSibling(winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgElement const& child) const;
        [[nodiscard]] auto SpecifiedAttributes() const;
        [[nodiscard]] auto Tag() const;
        [[nodiscard]] auto HasChildren() const;
        auto InsertChildBefore(winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgElement const& child, winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgElement const& referenceChild) const;
        auto IsAttributeSpecified(param::hstring const& attributeName) const;
        auto IsAttributeSpecified(param::hstring const& attributeName, bool inherited) const;
        auto RemoveAttribute(param::hstring const& attributeName) const;
        auto RemoveChild(winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgElement const& child) const;
        auto ReplaceChild(winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgElement const& newChild, winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgElement const& oldChild) const;
        auto SetStringAttribute(param::hstring const& attributeName, param::hstring const& attributeValue) const;
        auto GetStringAttribute(param::hstring const& attributeName) const;
        auto SetAttribute(param::hstring const& attributeName, winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgAttribute const& attributeValue) const;
        auto GetAttribute(param::hstring const& attributeName) const;
        auto SetIdAttribute(param::hstring const& attributeName, param::hstring const& attributeValue) const;
        auto GetIdAttribute(param::hstring const& attributeName) const;
        auto SetFloatAttribute(param::hstring const& attributeName, float attributeValue) const;
        auto GetFloatAttribute(param::hstring const& attributeName) const;
        auto SetColorAttribute(param::hstring const& attributeName, winrt::Windows::UI::Color const& attributeValue) const;
        auto GetColorAttribute(param::hstring const& attributeName) const;
        auto SetFilledRegionDeterminationAttribute(param::hstring const& attributeName, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasFilledRegionDetermination const& attributeValue) const;
        auto GetFilledRegionDeterminationAttribute(param::hstring const& attributeName) const;
        auto SetDisplayAttribute(param::hstring const& attributeName, winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgDisplay const& attributeValue) const;
        auto GetDisplayAttribute(param::hstring const& attributeName) const;
        auto SetOverflowAttribute(param::hstring const& attributeName, winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgOverflow const& attributeValue) const;
        auto GetOverflowAttribute(param::hstring const& attributeName) const;
        auto SetCapStyleAttribute(param::hstring const& attributeName, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasCapStyle const& attributeValue) const;
        auto GetCapStyleAttribute(param::hstring const& attributeName) const;
        auto SetLineJoinAttribute(param::hstring const& attributeName, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasLineJoin const& attributeValue) const;
        auto GetLineJoinAttribute(param::hstring const& attributeName) const;
        auto SetVisibilityAttribute(param::hstring const& attributeName, winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgVisibility const& attributeValue) const;
        auto GetVisibilityAttribute(param::hstring const& attributeName) const;
        auto SetTransformAttribute(param::hstring const& attributeName, winrt::Windows::Foundation::Numerics::float3x2 const& attributeValue) const;
        auto GetTransformAttribute(param::hstring const& attributeName) const;
        auto SetUnitsAttribute(param::hstring const& attributeName, winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgUnits const& attributeValue) const;
        auto GetUnitsAttribute(param::hstring const& attributeName) const;
        auto SetEdgeBehaviorAttribute(param::hstring const& attributeName, winrt::Microsoft::Graphics::Canvas::CanvasEdgeBehavior const& attributeValue) const;
        auto GetEdgeBehaviorAttribute(param::hstring const& attributeName) const;
        auto SetRectangleAttribute(param::hstring const& attributeName, winrt::Windows::Foundation::Rect const& attributeValue) const;
        auto GetRectangleAttribute(param::hstring const& attributeName) const;
        auto SetLengthAttribute(param::hstring const& attributeName, float value, winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgLengthUnits const& units) const;
        auto GetLengthAttribute(param::hstring const& attributeName, winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgLengthUnits& units) const;
        auto SetAspectRatioAttribute(param::hstring const& attributeName, winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgAspectAlignment const& alignment, winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgAspectScaling const& meetOrSlice) const;
        auto GetAspectRatioAttribute(param::hstring const& attributeName, winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgAspectScaling& meetOrSlice) const;
    };
    template <> struct consume<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgNamedElement>
    {
        template <typename D> using type = consume_Microsoft_Graphics_Canvas_Svg_ICanvasSvgNamedElement<D>;
    };
    template <typename D>
    struct consume_Microsoft_Graphics_Canvas_Svg_ICanvasSvgPaintAttribute
    {
        auto PaintType(winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgPaintType const& value) const;
        [[nodiscard]] auto PaintType() const;
        auto Color(winrt::Windows::UI::Color const& value) const;
        [[nodiscard]] auto Color() const;
        auto Id(param::hstring const& value) const;
        [[nodiscard]] auto Id() const;
    };
    template <> struct consume<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgPaintAttribute>
    {
        template <typename D> using type = consume_Microsoft_Graphics_Canvas_Svg_ICanvasSvgPaintAttribute<D>;
    };
    template <typename D>
    struct consume_Microsoft_Graphics_Canvas_Svg_ICanvasSvgPathAttribute
    {
        auto CreatePathGeometry() const;
        auto CreatePathGeometry(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasFilledRegionDetermination const& fill) const;
        [[nodiscard]] auto Commands() const;
        auto GetCommands(int32_t startIndex, int32_t elementCount) const;
        [[nodiscard]] auto SegmentData() const;
        auto GetSegmentData(int32_t startIndex, int32_t elementCount) const;
        auto RemoveCommandsAtEnd(int32_t commandsCount) const;
        auto RemoveSegmentDataAtEnd(int32_t commandsCount) const;
        auto SetCommands(int32_t startIndex, array_view<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgPathCommand const> commands) const;
        auto SetSegmentData(int32_t startIndex, array_view<float const> segmentData) const;
    };
    template <> struct consume<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgPathAttribute>
    {
        template <typename D> using type = consume_Microsoft_Graphics_Canvas_Svg_ICanvasSvgPathAttribute<D>;
    };
    template <typename D>
    struct consume_Microsoft_Graphics_Canvas_Svg_ICanvasSvgPointsAttribute
    {
        [[nodiscard]] auto Points() const;
        auto GetPoints(int32_t startIndex, int32_t elementCount) const;
        auto RemovePointsAtEnd(int32_t pointCount) const;
        auto SetPoints(int32_t startIndex, array_view<winrt::Windows::Foundation::Numerics::float2 const> points) const;
    };
    template <> struct consume<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgPointsAttribute>
    {
        template <typename D> using type = consume_Microsoft_Graphics_Canvas_Svg_ICanvasSvgPointsAttribute<D>;
    };
    template <typename D>
    struct consume_Microsoft_Graphics_Canvas_Svg_ICanvasSvgStrokeDashArrayAttribute
    {
        auto GetDashes() const;
        auto GetDashes(int32_t startIndex, int32_t elementCount, com_array<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgLengthUnits>& outputUnitsElements) const;
        auto RemoveDashesAtEnd(int32_t dashCount) const;
        auto SetDashes(int32_t startIndex, array_view<float const> dashes) const;
        auto SetDashes(int32_t startIndex, array_view<float const> dashes, winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgLengthUnits const& units) const;
        auto SetDashes(int32_t startIndex, array_view<float const> dashValues, array_view<winrt::Microsoft::Graphics::Canvas::Svg::CanvasSvgLengthUnits const> unitValues) const;
    };
    template <> struct consume<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgStrokeDashArrayAttribute>
    {
        template <typename D> using type = consume_Microsoft_Graphics_Canvas_Svg_ICanvasSvgStrokeDashArrayAttribute<D>;
    };
    template <typename D>
    struct consume_Microsoft_Graphics_Canvas_Svg_ICanvasSvgTextElement
    {
        auto Text(param::hstring const& value) const;
        [[nodiscard]] auto Text() const;
    };
    template <> struct consume<winrt::Microsoft::Graphics::Canvas::Svg::ICanvasSvgTextElement>
    {
        template <typename D> using type = consume_Microsoft_Graphics_Canvas_Svg_ICanvasSvgTextElement<D>;
    };
}
#endif
