//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0021
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
import "Windows.UI.Composition.idl";
import "Windows.UI.Xaml.idl";
import "Windows.UI.Xaml.Media.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Composition
        {
            runtimeclass CompositionBrush;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Xaml
        {
            runtimeclass DependencyProperty;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Xaml
        {
            namespace Media
            {
                runtimeclass Brush;

                runtimeclass DoubleCollection;

                typedef enum FillRule FillRule;

                runtimeclass Geometry;

                typedef enum PenLineCap PenLineCap;

                typedef enum PenLineJoin PenLineJoin;

                runtimeclass PointCollection;

                typedef enum Stretch Stretch;

                runtimeclass Transform;
            }
        }
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Xaml
        {
            namespace Shapes
            {
                interface IEllipse;

                interface ILine;

                interface ILineStatics;

                interface IPath;

                interface IPathFactory;

                interface IPathStatics;

                interface IPolygon;

                interface IPolygonStatics;

                interface IPolyline;

                interface IPolylineStatics;

                interface IRectangle;

                interface IRectangleStatics;

                interface IShape;

                interface IShape2;

                interface IShapeFactory;

                interface IShapeStatics;

                runtimeclass Ellipse;

                runtimeclass Line;

                runtimeclass Path;

                runtimeclass Polygon;

                runtimeclass Polyline;

                runtimeclass Rectangle;

                runtimeclass Shape;
            }
        }
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace UI
    {
        namespace Xaml
        {
            namespace Shapes
            {
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.UI.Xaml.Shapes.Ellipse)]
                [uuid(70E05AC4-D38D-4BAB-831F-4A22EF52AC86)]
                interface IEllipse : IInspectable
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.UI.Xaml.Shapes.Line)]
                [uuid(46A5433D-4FFB-48DF-8732-4E15C834816B)]
                interface ILine : IInspectable
                {
                    [propget] HRESULT X1([out] [retval] DOUBLE* value);
                    [propput] HRESULT X1([in] DOUBLE value);
                    [propget] HRESULT Y1([out] [retval] DOUBLE* value);
                    [propput] HRESULT Y1([in] DOUBLE value);
                    [propget] HRESULT X2([out] [retval] DOUBLE* value);
                    [propput] HRESULT X2([in] DOUBLE value);
                    [propget] HRESULT Y2([out] [retval] DOUBLE* value);
                    [propput] HRESULT Y2([in] DOUBLE value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.UI.Xaml.Shapes.Line)]
                [uuid(267C123D-6EA4-4C50-8B1D-50207AFF1E8A)]
                interface ILineStatics : IInspectable
                {
                    [propget] HRESULT X1Property([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                    [propget] HRESULT Y1Property([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                    [propget] HRESULT X2Property([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                    [propget] HRESULT Y2Property([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.UI.Xaml.Shapes.Path)]
                [uuid(78883609-3D57-4F3C-B8A5-6CABCAC9711F)]
                interface IPath : IInspectable
                {
                    [propget] HRESULT Data([out] [retval] Windows.UI.Xaml.Media.Geometry** value);
                    [propput] HRESULT Data([in] Windows.UI.Xaml.Media.Geometry* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.UI.Xaml.Shapes.Path)]
                [uuid(2340A4E3-5A86-4FC6-9A50-CBB93B828766)]
                interface IPathFactory : IInspectable
                {
                    HRESULT CreateInstance([in] IInspectable* baseInterface, [out] IInspectable** innerInterface, [out] [retval] Windows.UI.Xaml.Shapes.Path** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.UI.Xaml.Shapes.Path)]
                [uuid(F627E59D-87DC-4142-81F1-97FC7FF8641C)]
                interface IPathStatics : IInspectable
                {
                    [propget] HRESULT DataProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.UI.Xaml.Shapes.Polygon)]
                [uuid(E3755C19-2E4D-4BCC-8D34-86871957FA01)]
                interface IPolygon : IInspectable
                {
                    [propget] HRESULT FillRule([out] [retval] Windows.UI.Xaml.Media.FillRule* value);
                    [propput] HRESULT FillRule([in] Windows.UI.Xaml.Media.FillRule value);
                    [propget] HRESULT Points([out] [retval] Windows.UI.Xaml.Media.PointCollection** value);
                    [propput] HRESULT Points([in] Windows.UI.Xaml.Media.PointCollection* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.UI.Xaml.Shapes.Polygon)]
                [uuid(362A8AAB-D463-4366-9E1A-BEBA72810FB7)]
                interface IPolygonStatics : IInspectable
                {
                    [propget] HRESULT FillRuleProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                    [propget] HRESULT PointsProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.UI.Xaml.Shapes.Polyline)]
                [uuid(91DC62F8-42B3-47F3-8476-C55124A7C4C6)]
                interface IPolyline : IInspectable
                {
                    [propget] HRESULT FillRule([out] [retval] Windows.UI.Xaml.Media.FillRule* value);
                    [propput] HRESULT FillRule([in] Windows.UI.Xaml.Media.FillRule value);
                    [propget] HRESULT Points([out] [retval] Windows.UI.Xaml.Media.PointCollection** value);
                    [propput] HRESULT Points([in] Windows.UI.Xaml.Media.PointCollection* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.UI.Xaml.Shapes.Polyline)]
                [uuid(C7AA2CD1-A26C-43B0-AAA5-822FA64A11B9)]
                interface IPolylineStatics : IInspectable
                {
                    [propget] HRESULT FillRuleProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                    [propget] HRESULT PointsProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.UI.Xaml.Shapes.Rectangle)]
                [uuid(855BC230-8A11-4E18-A136-4BC21C7827B0)]
                interface IRectangle : IInspectable
                {
                    [propget] HRESULT RadiusX([out] [retval] DOUBLE* value);
                    [propput] HRESULT RadiusX([in] DOUBLE value);
                    [propget] HRESULT RadiusY([out] [retval] DOUBLE* value);
                    [propput] HRESULT RadiusY([in] DOUBLE value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.UI.Xaml.Shapes.Rectangle)]
                [uuid(9F25AA53-BB3A-4C3C-89DB-6FBC0D1FA0CC)]
                interface IRectangleStatics : IInspectable
                {
                    [propget] HRESULT RadiusXProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                    [propget] HRESULT RadiusYProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.UI.Xaml.Shapes.Shape)]
                [uuid(786F2B75-9AA0-454D-AE06-A2466E37C832)]
                interface IShape : IInspectable
                {
                    [propget] HRESULT Fill([out] [retval] Windows.UI.Xaml.Media.Brush** value);
                    [propput] HRESULT Fill([in] Windows.UI.Xaml.Media.Brush* value);
                    [propget] HRESULT Stroke([out] [retval] Windows.UI.Xaml.Media.Brush** value);
                    [propput] HRESULT Stroke([in] Windows.UI.Xaml.Media.Brush* value);
                    [propget] HRESULT StrokeMiterLimit([out] [retval] DOUBLE* value);
                    [propput] HRESULT StrokeMiterLimit([in] DOUBLE value);
                    [propget] HRESULT StrokeThickness([out] [retval] DOUBLE* value);
                    [propput] HRESULT StrokeThickness([in] DOUBLE value);
                    [propget] HRESULT StrokeStartLineCap([out] [retval] Windows.UI.Xaml.Media.PenLineCap* value);
                    [propput] HRESULT StrokeStartLineCap([in] Windows.UI.Xaml.Media.PenLineCap value);
                    [propget] HRESULT StrokeEndLineCap([out] [retval] Windows.UI.Xaml.Media.PenLineCap* value);
                    [propput] HRESULT StrokeEndLineCap([in] Windows.UI.Xaml.Media.PenLineCap value);
                    [propget] HRESULT StrokeLineJoin([out] [retval] Windows.UI.Xaml.Media.PenLineJoin* value);
                    [propput] HRESULT StrokeLineJoin([in] Windows.UI.Xaml.Media.PenLineJoin value);
                    [propget] HRESULT StrokeDashOffset([out] [retval] DOUBLE* value);
                    [propput] HRESULT StrokeDashOffset([in] DOUBLE value);
                    [propget] HRESULT StrokeDashCap([out] [retval] Windows.UI.Xaml.Media.PenLineCap* value);
                    [propput] HRESULT StrokeDashCap([in] Windows.UI.Xaml.Media.PenLineCap value);
                    [propget] HRESULT StrokeDashArray([out] [retval] Windows.UI.Xaml.Media.DoubleCollection** value);
                    [propput] HRESULT StrokeDashArray([in] Windows.UI.Xaml.Media.DoubleCollection* value);
                    [propget] HRESULT Stretch([out] [retval] Windows.UI.Xaml.Media.Stretch* value);
                    [propput] HRESULT Stretch([in] Windows.UI.Xaml.Media.Stretch value);
                    [propget] HRESULT GeometryTransform([out] [retval] Windows.UI.Xaml.Media.Transform** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.UI.Xaml.Shapes.Shape)]
                [uuid(97248DBA-49F2-49A4-A5DD-164DF824DB14)]
                interface IShape2 : IInspectable
                {
                    HRESULT GetAlphaMask([out] [retval] Windows.UI.Composition.CompositionBrush** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.UI.Xaml.Shapes.Shape)]
                [uuid(4B717613-F6AA-48D5-9588-E1D188EACBC9)]
                interface IShapeFactory : IInspectable
                {
                    HRESULT CreateInstance([in] IInspectable* baseInterface, [out] IInspectable** innerInterface, [out] [retval] Windows.UI.Xaml.Shapes.Shape** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.UI.Xaml.Shapes.Shape)]
                [uuid(1D7B4C55-9DF3-48DC-9194-9D306FAA6089)]
                interface IShapeStatics : IInspectable
                {
                    [propget] HRESULT FillProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                    [propget] HRESULT StrokeProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                    [propget] HRESULT StrokeMiterLimitProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                    [propget] HRESULT StrokeThicknessProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                    [propget] HRESULT StrokeStartLineCapProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                    [propget] HRESULT StrokeEndLineCapProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                    [propget] HRESULT StrokeLineJoinProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                    [propget] HRESULT StrokeDashOffsetProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                    [propget] HRESULT StrokeDashCapProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                    [propget] HRESULT StrokeDashArrayProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                    [propget] HRESULT StretchProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                }

                [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass Ellipse : Windows.UI.Xaml.Shapes.Shape
                {
                    [default] interface Windows.UI.Xaml.Shapes.IEllipse;
                }

                [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.UI.Xaml.Shapes.ILineStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass Line : Windows.UI.Xaml.Shapes.Shape
                {
                    [default] interface Windows.UI.Xaml.Shapes.ILine;
                }

                [composable(Windows.UI.Xaml.Shapes.IPathFactory, public, Windows.Foundation.UniversalApiContract, 1.0)]
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.UI.Xaml.Shapes.IPathStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass Path : Windows.UI.Xaml.Shapes.Shape
                {
                    [default] interface Windows.UI.Xaml.Shapes.IPath;
                }

                [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.UI.Xaml.Shapes.IPolygonStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass Polygon : Windows.UI.Xaml.Shapes.Shape
                {
                    [default] interface Windows.UI.Xaml.Shapes.IPolygon;
                }

                [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.UI.Xaml.Shapes.IPolylineStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass Polyline : Windows.UI.Xaml.Shapes.Shape
                {
                    [default] interface Windows.UI.Xaml.Shapes.IPolyline;
                }

                [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.UI.Xaml.Shapes.IRectangleStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass Rectangle : Windows.UI.Xaml.Shapes.Shape
                {
                    [default] interface Windows.UI.Xaml.Shapes.IRectangle;
                }

                [composable(Windows.UI.Xaml.Shapes.IShapeFactory, protected, Windows.Foundation.UniversalApiContract, 1.0)]
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.UI.Xaml.Shapes.IShapeStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass Shape : Windows.UI.Xaml.FrameworkElement
                {
                    [default] interface Windows.UI.Xaml.Shapes.IShape;
                    [contract(Windows.Foundation.UniversalApiContract, 3.0)] interface Windows.UI.Xaml.Shapes.IShape2;
                }
            }
        }
    }
}
