// 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_2_H
#define WINRT_Microsoft_Graphics_Canvas_Geometry_2_H
#include "winrt/impl/Microsoft.Graphics.Canvas.2.h"
#include "winrt/impl/Microsoft.Graphics.Canvas.Text.2.h"
#include "winrt/impl/Windows.Foundation.2.h"
#include "winrt/impl/Windows.Foundation.Numerics.2.h"
#include "winrt/impl/Windows.Graphics.2.h"
#include "winrt/impl/Microsoft.Graphics.Canvas.Geometry.1.h"
WINRT_EXPORT namespace winrt::Microsoft::Graphics::Canvas::Geometry
{
    struct 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 {};
        winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGradientMeshPatchEdge Edge00To03 {};
        winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGradientMeshPatchEdge Edge03To33 {};
        winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGradientMeshPatchEdge Edge33To30 {};
        winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGradientMeshPatchEdge Edge30To00 {};
    };
    inline bool operator==(CanvasGradientMeshPatch const& left, CanvasGradientMeshPatch const& right) noexcept
    {
        return left.Point00 == right.Point00 && left.Point01 == right.Point01 && left.Point02 == right.Point02 && left.Point03 == right.Point03 && left.Point10 == right.Point10 && left.Point11 == right.Point11 && left.Point12 == right.Point12 && left.Point13 == right.Point13 && left.Point20 == right.Point20 && left.Point21 == right.Point21 && left.Point22 == right.Point22 && left.Point23 == right.Point23 && left.Point30 == right.Point30 && left.Point31 == right.Point31 && left.Point32 == right.Point32 && left.Point33 == right.Point33 && left.Color00 == right.Color00 && left.Color03 == right.Color03 && left.Color30 == right.Color30 && left.Color33 == right.Color33 && left.Edge00To03 == right.Edge00To03 && left.Edge03To33 == right.Edge03To33 && left.Edge33To30 == right.Edge33To30 && left.Edge30To00 == right.Edge30To00;
    }
    inline bool operator!=(CanvasGradientMeshPatch const& left, CanvasGradientMeshPatch const& right) noexcept
    {
        return !(left == right);
    }
    struct CanvasTriangleVertices
    {
        winrt::Windows::Foundation::Numerics::float2 Vertex1 {};
        winrt::Windows::Foundation::Numerics::float2 Vertex2 {};
        winrt::Windows::Foundation::Numerics::float2 Vertex3 {};
    };
    inline bool operator==(CanvasTriangleVertices const& left, CanvasTriangleVertices const& right) noexcept
    {
        return left.Vertex1 == right.Vertex1 && left.Vertex2 == right.Vertex2 && left.Vertex3 == right.Vertex3;
    }
    inline bool operator!=(CanvasTriangleVertices const& left, CanvasTriangleVertices const& right) noexcept
    {
        return !(left == right);
    }
    struct WINRT_IMPL_EMPTY_BASES CanvasCachedGeometry : winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasCachedGeometry
    {
        CanvasCachedGeometry(std::nullptr_t) noexcept {}
        CanvasCachedGeometry(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasCachedGeometry(ptr, take_ownership_from_abi) {}
        static auto CreateFill(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometry const& geometry);
        static auto CreateFill(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometry const& geometry, float flatteningTolerance);
        static auto CreateStroke(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometry const& geometry, float strokeWidth);
        static auto CreateStroke(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometry const& geometry, float strokeWidth, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasStrokeStyle const& strokeStyle);
        static auto CreateStroke(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometry const& geometry, float strokeWidth, winrt::Microsoft::Graphics::Canvas::Geometry::CanvasStrokeStyle const& strokeStyle, float flatteningTolerance);
    };
    struct WINRT_IMPL_EMPTY_BASES CanvasGeometry : winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGeometry,
        impl::require<CanvasGeometry, winrt::Windows::Graphics::IGeometrySource2D>
    {
        CanvasGeometry(std::nullptr_t) noexcept {}
        CanvasGeometry(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGeometry(ptr, take_ownership_from_abi) {}
        static auto CreateRectangle(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, winrt::Windows::Foundation::Rect const& rect);
        static auto CreateRectangle(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, float x, float y, float w, float h);
        static auto CreateRoundedRectangle(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, winrt::Windows::Foundation::Rect const& rect, float radiusX, float radiusY);
        static auto CreateRoundedRectangle(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, float x, float y, float w, float h, float radiusX, float radiusY);
        static auto CreateEllipse(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, winrt::Windows::Foundation::Numerics::float2 const& centerPoint, float radiusX, float radiusY);
        static auto CreateEllipse(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, float x, float y, float radiusX, float radiusY);
        static auto CreateCircle(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, winrt::Windows::Foundation::Numerics::float2 const& centerPoint, float radius);
        static auto CreateCircle(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, float x, float y, float radius);
        static auto CreatePath(winrt::Microsoft::Graphics::Canvas::Geometry::CanvasPathBuilder const& pathBuilder);
        static auto CreatePolygon(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, array_view<winrt::Windows::Foundation::Numerics::float2 const> points);
        static auto CreateGroup(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, array_view<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGeometry const> geometries);
        static 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);
        static auto CreateText(winrt::Microsoft::Graphics::Canvas::Text::CanvasTextLayout const& textLayout);
        static 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);
        static auto ComputeFlatteningTolerance(float dpi, float maximumZoomFactor);
        static auto ComputeFlatteningTolerance(float dpi, float maximumZoomFactor, winrt::Windows::Foundation::Numerics::float3x2 const& expectedGeometryTransform);
        [[nodiscard]] static auto DefaultFlatteningTolerance();
    };
    struct WINRT_IMPL_EMPTY_BASES CanvasGradientMesh : winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGradientMesh
    {
        CanvasGradientMesh(std::nullptr_t) noexcept {}
        CanvasGradientMesh(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasGradientMesh(ptr, take_ownership_from_abi) {}
        CanvasGradientMesh(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator, array_view<winrt::Microsoft::Graphics::Canvas::Geometry::CanvasGradientMeshPatch const> patchElements);
        static 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);
        static 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);
    };
    struct WINRT_IMPL_EMPTY_BASES CanvasPathBuilder : winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasPathBuilder
    {
        CanvasPathBuilder(std::nullptr_t) noexcept {}
        CanvasPathBuilder(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasPathBuilder(ptr, take_ownership_from_abi) {}
        explicit CanvasPathBuilder(winrt::Microsoft::Graphics::Canvas::ICanvasResourceCreator const& resourceCreator);
    };
    struct WINRT_IMPL_EMPTY_BASES CanvasStrokeStyle : winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasStrokeStyle
    {
        CanvasStrokeStyle(std::nullptr_t) noexcept {}
        CanvasStrokeStyle(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Microsoft::Graphics::Canvas::Geometry::ICanvasStrokeStyle(ptr, take_ownership_from_abi) {}
        CanvasStrokeStyle();
    };
}
#endif
