// C++/WinRT v2.0.190620.2

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

#ifndef WINRT_Windows_UI_Xaml_Shapes_H
#define WINRT_Windows_UI_Xaml_Shapes_H
#include "base.h"
static_assert(winrt::check_version(CPPWINRT_VERSION, "2.0.190620.2"), "Mismatched C++/WinRT headers.");
#include "Windows.UI.Xaml.h"
#include "impl/Windows.UI.Composition.2.h"
#include "impl/Windows.UI.Xaml.2.h"
#include "impl/Windows.UI.Xaml.Media.2.h"
#include "impl/Windows.UI.Xaml.Shapes.2.h"
namespace winrt::impl
{
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_ILine<D>::X1() const
    {
        double value;
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::ILine)->get_X1(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_ILine<D>::X1(double value) const
    {
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::ILine)->put_X1(value));
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_ILine<D>::Y1() const
    {
        double value;
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::ILine)->get_Y1(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_ILine<D>::Y1(double value) const
    {
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::ILine)->put_Y1(value));
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_ILine<D>::X2() const
    {
        double value;
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::ILine)->get_X2(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_ILine<D>::X2(double value) const
    {
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::ILine)->put_X2(value));
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_ILine<D>::Y2() const
    {
        double value;
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::ILine)->get_Y2(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_ILine<D>::Y2(double value) const
    {
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::ILine)->put_Y2(value));
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_ILineStatics<D>::X1Property() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::ILineStatics)->get_X1Property(&value));
        return Windows::UI::Xaml::DependencyProperty{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_ILineStatics<D>::Y1Property() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::ILineStatics)->get_Y1Property(&value));
        return Windows::UI::Xaml::DependencyProperty{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_ILineStatics<D>::X2Property() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::ILineStatics)->get_X2Property(&value));
        return Windows::UI::Xaml::DependencyProperty{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_ILineStatics<D>::Y2Property() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::ILineStatics)->get_Y2Property(&value));
        return Windows::UI::Xaml::DependencyProperty{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IPath<D>::Data() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IPath)->get_Data(&value));
        return Windows::UI::Xaml::Media::Geometry{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IPath<D>::Data(Windows::UI::Xaml::Media::Geometry const& value) const
    {
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IPath)->put_Data(*(void**)(&value)));
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IPathFactory<D>::CreateInstance(Windows::Foundation::IInspectable const& baseInterface, Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IPathFactory)->CreateInstance(*(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        return Windows::UI::Xaml::Shapes::Path{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IPathStatics<D>::DataProperty() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IPathStatics)->get_DataProperty(&value));
        return Windows::UI::Xaml::DependencyProperty{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IPolygon<D>::FillRule() const
    {
        Windows::UI::Xaml::Media::FillRule value;
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IPolygon)->get_FillRule(put_abi(value)));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IPolygon<D>::FillRule(Windows::UI::Xaml::Media::FillRule const& value) const
    {
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IPolygon)->put_FillRule(static_cast<int32_t>(value)));
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IPolygon<D>::Points() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IPolygon)->get_Points(&value));
        return Windows::UI::Xaml::Media::PointCollection{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IPolygon<D>::Points(Windows::UI::Xaml::Media::PointCollection const& value) const
    {
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IPolygon)->put_Points(*(void**)(&value)));
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IPolygonStatics<D>::FillRuleProperty() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IPolygonStatics)->get_FillRuleProperty(&value));
        return Windows::UI::Xaml::DependencyProperty{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IPolygonStatics<D>::PointsProperty() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IPolygonStatics)->get_PointsProperty(&value));
        return Windows::UI::Xaml::DependencyProperty{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IPolyline<D>::FillRule() const
    {
        Windows::UI::Xaml::Media::FillRule value;
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IPolyline)->get_FillRule(put_abi(value)));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IPolyline<D>::FillRule(Windows::UI::Xaml::Media::FillRule const& value) const
    {
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IPolyline)->put_FillRule(static_cast<int32_t>(value)));
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IPolyline<D>::Points() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IPolyline)->get_Points(&value));
        return Windows::UI::Xaml::Media::PointCollection{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IPolyline<D>::Points(Windows::UI::Xaml::Media::PointCollection const& value) const
    {
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IPolyline)->put_Points(*(void**)(&value)));
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IPolylineStatics<D>::FillRuleProperty() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IPolylineStatics)->get_FillRuleProperty(&value));
        return Windows::UI::Xaml::DependencyProperty{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IPolylineStatics<D>::PointsProperty() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IPolylineStatics)->get_PointsProperty(&value));
        return Windows::UI::Xaml::DependencyProperty{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IRectangle<D>::RadiusX() const
    {
        double value;
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IRectangle)->get_RadiusX(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IRectangle<D>::RadiusX(double value) const
    {
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IRectangle)->put_RadiusX(value));
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IRectangle<D>::RadiusY() const
    {
        double value;
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IRectangle)->get_RadiusY(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IRectangle<D>::RadiusY(double value) const
    {
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IRectangle)->put_RadiusY(value));
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IRectangleStatics<D>::RadiusXProperty() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IRectangleStatics)->get_RadiusXProperty(&value));
        return Windows::UI::Xaml::DependencyProperty{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IRectangleStatics<D>::RadiusYProperty() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IRectangleStatics)->get_RadiusYProperty(&value));
        return Windows::UI::Xaml::DependencyProperty{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShape<D>::Fill() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShape)->get_Fill(&value));
        return Windows::UI::Xaml::Media::Brush{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShape<D>::Fill(Windows::UI::Xaml::Media::Brush const& value) const
    {
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShape)->put_Fill(*(void**)(&value)));
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShape<D>::Stroke() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShape)->get_Stroke(&value));
        return Windows::UI::Xaml::Media::Brush{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShape<D>::Stroke(Windows::UI::Xaml::Media::Brush const& value) const
    {
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShape)->put_Stroke(*(void**)(&value)));
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShape<D>::StrokeMiterLimit() const
    {
        double value;
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShape)->get_StrokeMiterLimit(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShape<D>::StrokeMiterLimit(double value) const
    {
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShape)->put_StrokeMiterLimit(value));
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShape<D>::StrokeThickness() const
    {
        double value;
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShape)->get_StrokeThickness(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShape<D>::StrokeThickness(double value) const
    {
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShape)->put_StrokeThickness(value));
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShape<D>::StrokeStartLineCap() const
    {
        Windows::UI::Xaml::Media::PenLineCap value;
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShape)->get_StrokeStartLineCap(put_abi(value)));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShape<D>::StrokeStartLineCap(Windows::UI::Xaml::Media::PenLineCap const& value) const
    {
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShape)->put_StrokeStartLineCap(static_cast<int32_t>(value)));
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShape<D>::StrokeEndLineCap() const
    {
        Windows::UI::Xaml::Media::PenLineCap value;
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShape)->get_StrokeEndLineCap(put_abi(value)));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShape<D>::StrokeEndLineCap(Windows::UI::Xaml::Media::PenLineCap const& value) const
    {
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShape)->put_StrokeEndLineCap(static_cast<int32_t>(value)));
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShape<D>::StrokeLineJoin() const
    {
        Windows::UI::Xaml::Media::PenLineJoin value;
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShape)->get_StrokeLineJoin(put_abi(value)));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShape<D>::StrokeLineJoin(Windows::UI::Xaml::Media::PenLineJoin const& value) const
    {
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShape)->put_StrokeLineJoin(static_cast<int32_t>(value)));
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShape<D>::StrokeDashOffset() const
    {
        double value;
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShape)->get_StrokeDashOffset(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShape<D>::StrokeDashOffset(double value) const
    {
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShape)->put_StrokeDashOffset(value));
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShape<D>::StrokeDashCap() const
    {
        Windows::UI::Xaml::Media::PenLineCap value;
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShape)->get_StrokeDashCap(put_abi(value)));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShape<D>::StrokeDashCap(Windows::UI::Xaml::Media::PenLineCap const& value) const
    {
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShape)->put_StrokeDashCap(static_cast<int32_t>(value)));
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShape<D>::StrokeDashArray() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShape)->get_StrokeDashArray(&value));
        return Windows::UI::Xaml::Media::DoubleCollection{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShape<D>::StrokeDashArray(Windows::UI::Xaml::Media::DoubleCollection const& value) const
    {
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShape)->put_StrokeDashArray(*(void**)(&value)));
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShape<D>::Stretch() const
    {
        Windows::UI::Xaml::Media::Stretch value;
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShape)->get_Stretch(put_abi(value)));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShape<D>::Stretch(Windows::UI::Xaml::Media::Stretch const& value) const
    {
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShape)->put_Stretch(static_cast<int32_t>(value)));
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShape<D>::GeometryTransform() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShape)->get_GeometryTransform(&value));
        return Windows::UI::Xaml::Media::Transform{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShape2<D>::GetAlphaMask() const
    {
        void* result{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShape2)->GetAlphaMask(&result));
        return Windows::UI::Composition::CompositionBrush{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShapeFactory<D>::CreateInstance(Windows::Foundation::IInspectable const& baseInterface, Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShapeFactory)->CreateInstance(*(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        return Windows::UI::Xaml::Shapes::Shape{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShapeStatics<D>::FillProperty() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShapeStatics)->get_FillProperty(&value));
        return Windows::UI::Xaml::DependencyProperty{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShapeStatics<D>::StrokeProperty() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShapeStatics)->get_StrokeProperty(&value));
        return Windows::UI::Xaml::DependencyProperty{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShapeStatics<D>::StrokeMiterLimitProperty() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShapeStatics)->get_StrokeMiterLimitProperty(&value));
        return Windows::UI::Xaml::DependencyProperty{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShapeStatics<D>::StrokeThicknessProperty() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShapeStatics)->get_StrokeThicknessProperty(&value));
        return Windows::UI::Xaml::DependencyProperty{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShapeStatics<D>::StrokeStartLineCapProperty() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShapeStatics)->get_StrokeStartLineCapProperty(&value));
        return Windows::UI::Xaml::DependencyProperty{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShapeStatics<D>::StrokeEndLineCapProperty() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShapeStatics)->get_StrokeEndLineCapProperty(&value));
        return Windows::UI::Xaml::DependencyProperty{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShapeStatics<D>::StrokeLineJoinProperty() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShapeStatics)->get_StrokeLineJoinProperty(&value));
        return Windows::UI::Xaml::DependencyProperty{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShapeStatics<D>::StrokeDashOffsetProperty() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShapeStatics)->get_StrokeDashOffsetProperty(&value));
        return Windows::UI::Xaml::DependencyProperty{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShapeStatics<D>::StrokeDashCapProperty() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShapeStatics)->get_StrokeDashCapProperty(&value));
        return Windows::UI::Xaml::DependencyProperty{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShapeStatics<D>::StrokeDashArrayProperty() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShapeStatics)->get_StrokeDashArrayProperty(&value));
        return Windows::UI::Xaml::DependencyProperty{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Shapes_IShapeStatics<D>::StretchProperty() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(Windows::UI::Xaml::Shapes::IShapeStatics)->get_StretchProperty(&value));
        return Windows::UI::Xaml::DependencyProperty{ value, take_ownership_from_abi };
    }
    template <typename D>
    struct produce<D, Windows::UI::Xaml::Shapes::IEllipse> : produce_base<D, Windows::UI::Xaml::Shapes::IEllipse>
    {
    };
    template <typename D>
    struct produce<D, Windows::UI::Xaml::Shapes::ILine> : produce_base<D, Windows::UI::Xaml::Shapes::ILine>
    {
        int32_t __stdcall get_X1(double* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<double>(this->shim().X1());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_X1(double value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().X1(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Y1(double* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<double>(this->shim().Y1());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_Y1(double value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Y1(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_X2(double* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<double>(this->shim().X2());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_X2(double value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().X2(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Y2(double* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<double>(this->shim().Y2());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_Y2(double value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Y2(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
    template <typename D>
    struct produce<D, Windows::UI::Xaml::Shapes::ILineStatics> : produce_base<D, Windows::UI::Xaml::Shapes::ILineStatics>
    {
        int32_t __stdcall get_X1Property(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::DependencyProperty>(this->shim().X1Property());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Y1Property(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::DependencyProperty>(this->shim().Y1Property());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_X2Property(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::DependencyProperty>(this->shim().X2Property());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Y2Property(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::DependencyProperty>(this->shim().Y2Property());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
    template <typename D>
    struct produce<D, Windows::UI::Xaml::Shapes::IPath> : produce_base<D, Windows::UI::Xaml::Shapes::IPath>
    {
        int32_t __stdcall get_Data(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::Media::Geometry>(this->shim().Data());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_Data(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Data(*reinterpret_cast<Windows::UI::Xaml::Media::Geometry const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
    template <typename D>
    struct produce<D, Windows::UI::Xaml::Shapes::IPathFactory> : produce_base<D, Windows::UI::Xaml::Shapes::IPathFactory>
    {
        int32_t __stdcall CreateInstance(void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::Shapes::Path>(this->shim().CreateInstance(*reinterpret_cast<Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
    template <typename D>
    struct produce<D, Windows::UI::Xaml::Shapes::IPathStatics> : produce_base<D, Windows::UI::Xaml::Shapes::IPathStatics>
    {
        int32_t __stdcall get_DataProperty(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::DependencyProperty>(this->shim().DataProperty());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
    template <typename D>
    struct produce<D, Windows::UI::Xaml::Shapes::IPolygon> : produce_base<D, Windows::UI::Xaml::Shapes::IPolygon>
    {
        int32_t __stdcall get_FillRule(int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::Media::FillRule>(this->shim().FillRule());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_FillRule(int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().FillRule(*reinterpret_cast<Windows::UI::Xaml::Media::FillRule const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Points(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::Media::PointCollection>(this->shim().Points());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_Points(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Points(*reinterpret_cast<Windows::UI::Xaml::Media::PointCollection const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
    template <typename D>
    struct produce<D, Windows::UI::Xaml::Shapes::IPolygonStatics> : produce_base<D, Windows::UI::Xaml::Shapes::IPolygonStatics>
    {
        int32_t __stdcall get_FillRuleProperty(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::DependencyProperty>(this->shim().FillRuleProperty());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_PointsProperty(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::DependencyProperty>(this->shim().PointsProperty());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
    template <typename D>
    struct produce<D, Windows::UI::Xaml::Shapes::IPolyline> : produce_base<D, Windows::UI::Xaml::Shapes::IPolyline>
    {
        int32_t __stdcall get_FillRule(int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::Media::FillRule>(this->shim().FillRule());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_FillRule(int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().FillRule(*reinterpret_cast<Windows::UI::Xaml::Media::FillRule const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Points(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::Media::PointCollection>(this->shim().Points());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_Points(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Points(*reinterpret_cast<Windows::UI::Xaml::Media::PointCollection const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
    template <typename D>
    struct produce<D, Windows::UI::Xaml::Shapes::IPolylineStatics> : produce_base<D, Windows::UI::Xaml::Shapes::IPolylineStatics>
    {
        int32_t __stdcall get_FillRuleProperty(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::DependencyProperty>(this->shim().FillRuleProperty());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_PointsProperty(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::DependencyProperty>(this->shim().PointsProperty());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
    template <typename D>
    struct produce<D, Windows::UI::Xaml::Shapes::IRectangle> : produce_base<D, Windows::UI::Xaml::Shapes::IRectangle>
    {
        int32_t __stdcall get_RadiusX(double* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<double>(this->shim().RadiusX());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_RadiusX(double value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RadiusX(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_RadiusY(double* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<double>(this->shim().RadiusY());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_RadiusY(double value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RadiusY(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
    template <typename D>
    struct produce<D, Windows::UI::Xaml::Shapes::IRectangleStatics> : produce_base<D, Windows::UI::Xaml::Shapes::IRectangleStatics>
    {
        int32_t __stdcall get_RadiusXProperty(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::DependencyProperty>(this->shim().RadiusXProperty());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_RadiusYProperty(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::DependencyProperty>(this->shim().RadiusYProperty());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
    template <typename D>
    struct produce<D, Windows::UI::Xaml::Shapes::IShape> : produce_base<D, Windows::UI::Xaml::Shapes::IShape>
    {
        int32_t __stdcall get_Fill(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::Media::Brush>(this->shim().Fill());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_Fill(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Fill(*reinterpret_cast<Windows::UI::Xaml::Media::Brush const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Stroke(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::Media::Brush>(this->shim().Stroke());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_Stroke(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Stroke(*reinterpret_cast<Windows::UI::Xaml::Media::Brush const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_StrokeMiterLimit(double* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<double>(this->shim().StrokeMiterLimit());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_StrokeMiterLimit(double value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StrokeMiterLimit(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_StrokeThickness(double* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<double>(this->shim().StrokeThickness());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_StrokeThickness(double value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StrokeThickness(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_StrokeStartLineCap(int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::Media::PenLineCap>(this->shim().StrokeStartLineCap());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_StrokeStartLineCap(int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StrokeStartLineCap(*reinterpret_cast<Windows::UI::Xaml::Media::PenLineCap const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_StrokeEndLineCap(int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::Media::PenLineCap>(this->shim().StrokeEndLineCap());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_StrokeEndLineCap(int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StrokeEndLineCap(*reinterpret_cast<Windows::UI::Xaml::Media::PenLineCap const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_StrokeLineJoin(int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::Media::PenLineJoin>(this->shim().StrokeLineJoin());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_StrokeLineJoin(int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StrokeLineJoin(*reinterpret_cast<Windows::UI::Xaml::Media::PenLineJoin const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_StrokeDashOffset(double* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<double>(this->shim().StrokeDashOffset());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_StrokeDashOffset(double value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StrokeDashOffset(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_StrokeDashCap(int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::Media::PenLineCap>(this->shim().StrokeDashCap());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_StrokeDashCap(int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StrokeDashCap(*reinterpret_cast<Windows::UI::Xaml::Media::PenLineCap const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_StrokeDashArray(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::Media::DoubleCollection>(this->shim().StrokeDashArray());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_StrokeDashArray(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StrokeDashArray(*reinterpret_cast<Windows::UI::Xaml::Media::DoubleCollection const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Stretch(int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::Media::Stretch>(this->shim().Stretch());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_Stretch(int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Stretch(*reinterpret_cast<Windows::UI::Xaml::Media::Stretch const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_GeometryTransform(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::Media::Transform>(this->shim().GeometryTransform());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
    template <typename D>
    struct produce<D, Windows::UI::Xaml::Shapes::IShape2> : produce_base<D, Windows::UI::Xaml::Shapes::IShape2>
    {
        int32_t __stdcall GetAlphaMask(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<Windows::UI::Composition::CompositionBrush>(this->shim().GetAlphaMask());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
    template <typename D>
    struct produce<D, Windows::UI::Xaml::Shapes::IShapeFactory> : produce_base<D, Windows::UI::Xaml::Shapes::IShapeFactory>
    {
        int32_t __stdcall CreateInstance(void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::Shapes::Shape>(this->shim().CreateInstance(*reinterpret_cast<Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
    template <typename D>
    struct produce<D, Windows::UI::Xaml::Shapes::IShapeStatics> : produce_base<D, Windows::UI::Xaml::Shapes::IShapeStatics>
    {
        int32_t __stdcall get_FillProperty(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::DependencyProperty>(this->shim().FillProperty());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_StrokeProperty(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::DependencyProperty>(this->shim().StrokeProperty());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_StrokeMiterLimitProperty(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::DependencyProperty>(this->shim().StrokeMiterLimitProperty());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_StrokeThicknessProperty(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::DependencyProperty>(this->shim().StrokeThicknessProperty());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_StrokeStartLineCapProperty(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::DependencyProperty>(this->shim().StrokeStartLineCapProperty());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_StrokeEndLineCapProperty(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::DependencyProperty>(this->shim().StrokeEndLineCapProperty());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_StrokeLineJoinProperty(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::DependencyProperty>(this->shim().StrokeLineJoinProperty());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_StrokeDashOffsetProperty(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::DependencyProperty>(this->shim().StrokeDashOffsetProperty());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_StrokeDashCapProperty(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::DependencyProperty>(this->shim().StrokeDashCapProperty());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_StrokeDashArrayProperty(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::DependencyProperty>(this->shim().StrokeDashArrayProperty());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_StretchProperty(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<Windows::UI::Xaml::DependencyProperty>(this->shim().StretchProperty());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
}
namespace winrt::Windows::UI::Xaml::Shapes
{
    inline Ellipse::Ellipse() :
        Ellipse(impl::call_factory<Ellipse>([](auto&& f) { return f.template ActivateInstance<Ellipse>(); }))
    {
    }
    inline Line::Line() :
        Line(impl::call_factory<Line>([](auto&& f) { return f.template ActivateInstance<Line>(); }))
    {
    }
    inline auto Line::X1Property()
    {
        return impl::call_factory<Line, Windows::UI::Xaml::Shapes::ILineStatics>([&](auto&& f) { return f.X1Property(); });
    }
    inline auto Line::Y1Property()
    {
        return impl::call_factory<Line, Windows::UI::Xaml::Shapes::ILineStatics>([&](auto&& f) { return f.Y1Property(); });
    }
    inline auto Line::X2Property()
    {
        return impl::call_factory<Line, Windows::UI::Xaml::Shapes::ILineStatics>([&](auto&& f) { return f.X2Property(); });
    }
    inline auto Line::Y2Property()
    {
        return impl::call_factory<Line, Windows::UI::Xaml::Shapes::ILineStatics>([&](auto&& f) { return f.Y2Property(); });
    }
    inline Path::Path()
    {
        Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<Path, Windows::UI::Xaml::Shapes::IPathFactory>([&](auto&& f) { return f.CreateInstance(baseInterface, innerInterface); });
    }
    inline auto Path::DataProperty()
    {
        return impl::call_factory<Path, Windows::UI::Xaml::Shapes::IPathStatics>([&](auto&& f) { return f.DataProperty(); });
    }
    inline Polygon::Polygon() :
        Polygon(impl::call_factory<Polygon>([](auto&& f) { return f.template ActivateInstance<Polygon>(); }))
    {
    }
    inline auto Polygon::FillRuleProperty()
    {
        return impl::call_factory<Polygon, Windows::UI::Xaml::Shapes::IPolygonStatics>([&](auto&& f) { return f.FillRuleProperty(); });
    }
    inline auto Polygon::PointsProperty()
    {
        return impl::call_factory<Polygon, Windows::UI::Xaml::Shapes::IPolygonStatics>([&](auto&& f) { return f.PointsProperty(); });
    }
    inline Polyline::Polyline() :
        Polyline(impl::call_factory<Polyline>([](auto&& f) { return f.template ActivateInstance<Polyline>(); }))
    {
    }
    inline auto Polyline::FillRuleProperty()
    {
        return impl::call_factory<Polyline, Windows::UI::Xaml::Shapes::IPolylineStatics>([&](auto&& f) { return f.FillRuleProperty(); });
    }
    inline auto Polyline::PointsProperty()
    {
        return impl::call_factory<Polyline, Windows::UI::Xaml::Shapes::IPolylineStatics>([&](auto&& f) { return f.PointsProperty(); });
    }
    inline Rectangle::Rectangle() :
        Rectangle(impl::call_factory<Rectangle>([](auto&& f) { return f.template ActivateInstance<Rectangle>(); }))
    {
    }
    inline auto Rectangle::RadiusXProperty()
    {
        return impl::call_factory<Rectangle, Windows::UI::Xaml::Shapes::IRectangleStatics>([&](auto&& f) { return f.RadiusXProperty(); });
    }
    inline auto Rectangle::RadiusYProperty()
    {
        return impl::call_factory<Rectangle, Windows::UI::Xaml::Shapes::IRectangleStatics>([&](auto&& f) { return f.RadiusYProperty(); });
    }
    inline auto Shape::FillProperty()
    {
        return impl::call_factory<Shape, Windows::UI::Xaml::Shapes::IShapeStatics>([&](auto&& f) { return f.FillProperty(); });
    }
    inline auto Shape::StrokeProperty()
    {
        return impl::call_factory<Shape, Windows::UI::Xaml::Shapes::IShapeStatics>([&](auto&& f) { return f.StrokeProperty(); });
    }
    inline auto Shape::StrokeMiterLimitProperty()
    {
        return impl::call_factory<Shape, Windows::UI::Xaml::Shapes::IShapeStatics>([&](auto&& f) { return f.StrokeMiterLimitProperty(); });
    }
    inline auto Shape::StrokeThicknessProperty()
    {
        return impl::call_factory<Shape, Windows::UI::Xaml::Shapes::IShapeStatics>([&](auto&& f) { return f.StrokeThicknessProperty(); });
    }
    inline auto Shape::StrokeStartLineCapProperty()
    {
        return impl::call_factory<Shape, Windows::UI::Xaml::Shapes::IShapeStatics>([&](auto&& f) { return f.StrokeStartLineCapProperty(); });
    }
    inline auto Shape::StrokeEndLineCapProperty()
    {
        return impl::call_factory<Shape, Windows::UI::Xaml::Shapes::IShapeStatics>([&](auto&& f) { return f.StrokeEndLineCapProperty(); });
    }
    inline auto Shape::StrokeLineJoinProperty()
    {
        return impl::call_factory<Shape, Windows::UI::Xaml::Shapes::IShapeStatics>([&](auto&& f) { return f.StrokeLineJoinProperty(); });
    }
    inline auto Shape::StrokeDashOffsetProperty()
    {
        return impl::call_factory<Shape, Windows::UI::Xaml::Shapes::IShapeStatics>([&](auto&& f) { return f.StrokeDashOffsetProperty(); });
    }
    inline auto Shape::StrokeDashCapProperty()
    {
        return impl::call_factory<Shape, Windows::UI::Xaml::Shapes::IShapeStatics>([&](auto&& f) { return f.StrokeDashCapProperty(); });
    }
    inline auto Shape::StrokeDashArrayProperty()
    {
        return impl::call_factory<Shape, Windows::UI::Xaml::Shapes::IShapeStatics>([&](auto&& f) { return f.StrokeDashArrayProperty(); });
    }
    inline auto Shape::StretchProperty()
    {
        return impl::call_factory<Shape, Windows::UI::Xaml::Shapes::IShapeStatics>([&](auto&& f) { return f.StretchProperty(); });
    }
    template <typename D, typename... Interfaces>
    struct PathT :
        implements<D, Windows::UI::Xaml::IFrameworkElementOverrides, Windows::UI::Xaml::IFrameworkElementOverrides2, Windows::UI::Xaml::IUIElementOverrides, Windows::UI::Xaml::IUIElementOverrides7, Windows::UI::Xaml::IUIElementOverrides8, Windows::UI::Xaml::IUIElementOverrides9, composing, Interfaces...>,
        impl::require<D, Windows::UI::Xaml::Shapes::IPath, Windows::UI::Xaml::Shapes::IShape, Windows::UI::Xaml::Shapes::IShape2, Windows::UI::Xaml::IFrameworkElement, Windows::UI::Xaml::IFrameworkElement2, Windows::UI::Xaml::IFrameworkElement3, Windows::UI::Xaml::IFrameworkElement4, Windows::UI::Xaml::IFrameworkElement6, Windows::UI::Xaml::IFrameworkElement7, Windows::UI::Xaml::IFrameworkElementProtected7, Windows::UI::Xaml::IUIElement, Windows::UI::Xaml::IUIElement2, Windows::UI::Xaml::IUIElement3, Windows::UI::Xaml::IUIElement4, Windows::UI::Xaml::IUIElement5, Windows::UI::Xaml::IUIElement7, Windows::UI::Xaml::IUIElement8, Windows::UI::Xaml::IUIElement9, Windows::UI::Xaml::IUIElement10, Windows::UI::Composition::IAnimationObject, Windows::UI::Composition::IVisualElement, Windows::UI::Xaml::IDependencyObject, Windows::UI::Xaml::IDependencyObject2>,
        impl::base<D, Path, Windows::UI::Xaml::Shapes::Shape, Windows::UI::Xaml::FrameworkElement, Windows::UI::Xaml::UIElement, Windows::UI::Xaml::DependencyObject>,
        Windows::UI::Xaml::IFrameworkElementOverridesT<D>, Windows::UI::Xaml::IFrameworkElementOverrides2T<D>, Windows::UI::Xaml::IUIElementOverridesT<D>, Windows::UI::Xaml::IUIElementOverrides7T<D>, Windows::UI::Xaml::IUIElementOverrides8T<D>, Windows::UI::Xaml::IUIElementOverrides9T<D>
    {
        using composable = Path;
    protected:
        PathT()
        {
            impl::call_factory<Path, Windows::UI::Xaml::Shapes::IPathFactory>([&](auto&& f) { f.CreateInstance(*this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct ShapeT :
        implements<D, Windows::UI::Xaml::IFrameworkElementOverrides, Windows::UI::Xaml::IFrameworkElementOverrides2, Windows::UI::Xaml::IUIElementOverrides, Windows::UI::Xaml::IUIElementOverrides7, Windows::UI::Xaml::IUIElementOverrides8, Windows::UI::Xaml::IUIElementOverrides9, composing, Interfaces...>,
        impl::require<D, Windows::UI::Xaml::Shapes::IShape, Windows::UI::Xaml::Shapes::IShape2, Windows::UI::Xaml::IFrameworkElement, Windows::UI::Xaml::IFrameworkElement2, Windows::UI::Xaml::IFrameworkElement3, Windows::UI::Xaml::IFrameworkElement4, Windows::UI::Xaml::IFrameworkElement6, Windows::UI::Xaml::IFrameworkElement7, Windows::UI::Xaml::IFrameworkElementProtected7, Windows::UI::Xaml::IUIElement, Windows::UI::Xaml::IUIElement2, Windows::UI::Xaml::IUIElement3, Windows::UI::Xaml::IUIElement4, Windows::UI::Xaml::IUIElement5, Windows::UI::Xaml::IUIElement7, Windows::UI::Xaml::IUIElement8, Windows::UI::Xaml::IUIElement9, Windows::UI::Xaml::IUIElement10, Windows::UI::Composition::IAnimationObject, Windows::UI::Composition::IVisualElement, Windows::UI::Xaml::IDependencyObject, Windows::UI::Xaml::IDependencyObject2>,
        impl::base<D, Shape, Windows::UI::Xaml::FrameworkElement, Windows::UI::Xaml::UIElement, Windows::UI::Xaml::DependencyObject>,
        Windows::UI::Xaml::IFrameworkElementOverridesT<D>, Windows::UI::Xaml::IFrameworkElementOverrides2T<D>, Windows::UI::Xaml::IUIElementOverridesT<D>, Windows::UI::Xaml::IUIElementOverrides7T<D>, Windows::UI::Xaml::IUIElementOverrides8T<D>, Windows::UI::Xaml::IUIElementOverrides9T<D>
    {
        using composable = Shape;
    protected:
        ShapeT()
        {
            impl::call_factory<Shape, Windows::UI::Xaml::Shapes::IShapeFactory>([&](auto&& f) { f.CreateInstance(*this, this->m_inner); });
        }
    };
}
namespace std
{
    template<> struct hash<winrt::Windows::UI::Xaml::Shapes::IEllipse> : winrt::impl::hash_base<winrt::Windows::UI::Xaml::Shapes::IEllipse> {};
    template<> struct hash<winrt::Windows::UI::Xaml::Shapes::ILine> : winrt::impl::hash_base<winrt::Windows::UI::Xaml::Shapes::ILine> {};
    template<> struct hash<winrt::Windows::UI::Xaml::Shapes::ILineStatics> : winrt::impl::hash_base<winrt::Windows::UI::Xaml::Shapes::ILineStatics> {};
    template<> struct hash<winrt::Windows::UI::Xaml::Shapes::IPath> : winrt::impl::hash_base<winrt::Windows::UI::Xaml::Shapes::IPath> {};
    template<> struct hash<winrt::Windows::UI::Xaml::Shapes::IPathFactory> : winrt::impl::hash_base<winrt::Windows::UI::Xaml::Shapes::IPathFactory> {};
    template<> struct hash<winrt::Windows::UI::Xaml::Shapes::IPathStatics> : winrt::impl::hash_base<winrt::Windows::UI::Xaml::Shapes::IPathStatics> {};
    template<> struct hash<winrt::Windows::UI::Xaml::Shapes::IPolygon> : winrt::impl::hash_base<winrt::Windows::UI::Xaml::Shapes::IPolygon> {};
    template<> struct hash<winrt::Windows::UI::Xaml::Shapes::IPolygonStatics> : winrt::impl::hash_base<winrt::Windows::UI::Xaml::Shapes::IPolygonStatics> {};
    template<> struct hash<winrt::Windows::UI::Xaml::Shapes::IPolyline> : winrt::impl::hash_base<winrt::Windows::UI::Xaml::Shapes::IPolyline> {};
    template<> struct hash<winrt::Windows::UI::Xaml::Shapes::IPolylineStatics> : winrt::impl::hash_base<winrt::Windows::UI::Xaml::Shapes::IPolylineStatics> {};
    template<> struct hash<winrt::Windows::UI::Xaml::Shapes::IRectangle> : winrt::impl::hash_base<winrt::Windows::UI::Xaml::Shapes::IRectangle> {};
    template<> struct hash<winrt::Windows::UI::Xaml::Shapes::IRectangleStatics> : winrt::impl::hash_base<winrt::Windows::UI::Xaml::Shapes::IRectangleStatics> {};
    template<> struct hash<winrt::Windows::UI::Xaml::Shapes::IShape> : winrt::impl::hash_base<winrt::Windows::UI::Xaml::Shapes::IShape> {};
    template<> struct hash<winrt::Windows::UI::Xaml::Shapes::IShape2> : winrt::impl::hash_base<winrt::Windows::UI::Xaml::Shapes::IShape2> {};
    template<> struct hash<winrt::Windows::UI::Xaml::Shapes::IShapeFactory> : winrt::impl::hash_base<winrt::Windows::UI::Xaml::Shapes::IShapeFactory> {};
    template<> struct hash<winrt::Windows::UI::Xaml::Shapes::IShapeStatics> : winrt::impl::hash_base<winrt::Windows::UI::Xaml::Shapes::IShapeStatics> {};
    template<> struct hash<winrt::Windows::UI::Xaml::Shapes::Ellipse> : winrt::impl::hash_base<winrt::Windows::UI::Xaml::Shapes::Ellipse> {};
    template<> struct hash<winrt::Windows::UI::Xaml::Shapes::Line> : winrt::impl::hash_base<winrt::Windows::UI::Xaml::Shapes::Line> {};
    template<> struct hash<winrt::Windows::UI::Xaml::Shapes::Path> : winrt::impl::hash_base<winrt::Windows::UI::Xaml::Shapes::Path> {};
    template<> struct hash<winrt::Windows::UI::Xaml::Shapes::Polygon> : winrt::impl::hash_base<winrt::Windows::UI::Xaml::Shapes::Polygon> {};
    template<> struct hash<winrt::Windows::UI::Xaml::Shapes::Polyline> : winrt::impl::hash_base<winrt::Windows::UI::Xaml::Shapes::Polyline> {};
    template<> struct hash<winrt::Windows::UI::Xaml::Shapes::Rectangle> : winrt::impl::hash_base<winrt::Windows::UI::Xaml::Shapes::Rectangle> {};
    template<> struct hash<winrt::Windows::UI::Xaml::Shapes::Shape> : winrt::impl::hash_base<winrt::Windows::UI::Xaml::Shapes::Shape> {};
}
#endif
