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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.Storage.Streams.idl";
import "Windows.UI.idl";
import "Windows.UI.Input.idl";
// Additional imports to ensure that all required headers are included
cpp_quote("#if defined(__cplusplus)")
cpp_quote("}")
cpp_quote("#endif // defined(__cplusplus)")
cpp_quote("#include <Windows.Foundation.h>")
cpp_quote("#if !defined(__windows2Estorage2Estreams_h__)")
cpp_quote("#include <Windows.Storage.Streams.h>")
cpp_quote("#endif // !defined(__windows2Estorage2Estreams_h__)")
cpp_quote("#if !defined(__windows2Eui_h__)")
cpp_quote("#include <Windows.UI.h>")
cpp_quote("#endif // !defined(__windows2Eui_h__)")
cpp_quote("#if !defined(__windows2Eui2Einput_h__)")
cpp_quote("#include <Windows.UI.Input.h>")
cpp_quote("#endif // !defined(__windows2Eui2Einput_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        typedef struct Point Point;

        typedef struct Rect Rect;

        typedef struct Size Size;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IInputStream;

            interface IOutputStream;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        typedef struct Color Color;
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Input
        {
            runtimeclass PointerPoint;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Input
        {
            namespace Inking
            {
                typedef enum InkManipulationMode InkManipulationMode;

                typedef enum InkRecognitionTarget InkRecognitionTarget;

                typedef enum PenTipShape PenTipShape;

                interface IInkDrawingAttributes;

                interface IInkStrokeRenderingSegment;

                interface IInkStroke;

                interface IInkStrokeBuilder;

                interface IInkRecognitionResult;

                interface IInkStrokeContainer;

                interface IInkRecognizer;

                interface IInkRecognizerContainer;

                interface IInkManager;

                runtimeclass InkDrawingAttributes;

                runtimeclass InkStrokeRenderingSegment;

                runtimeclass InkStroke;

                runtimeclass InkStrokeBuilder;

                runtimeclass InkRecognitionResult;

                runtimeclass InkStrokeContainer;

                runtimeclass InkRecognizer;

                runtimeclass InkRecognizerContainer;

                runtimeclass InkManager;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace UI
    {
        namespace Input
        {
            namespace Inking
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.UI.Input.Inking.InkRecognitionResult*>;

                    interface Windows.Foundation.Collections.IIterable<Windows.UI.Input.Inking.InkRecognizer*>;

                    interface Windows.Foundation.Collections.IIterable<Windows.UI.Input.Inking.InkStroke*>;

                    interface Windows.Foundation.Collections.IIterable<Windows.UI.Input.Inking.InkStrokeRenderingSegment*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.UI.Input.Inking.InkRecognitionResult*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.UI.Input.Inking.InkRecognizer*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.UI.Input.Inking.InkStroke*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.UI.Input.Inking.InkStrokeRenderingSegment*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.UI.Input.Inking.InkRecognitionResult*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.UI.Input.Inking.InkRecognizer*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.UI.Input.Inking.InkStroke*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.UI.Input.Inking.InkStrokeRenderingSegment*>;

                    interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.UI.Input.Inking.InkRecognitionResult*>*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace UI
    {
        namespace Input
        {
            namespace Inking
            {
                [version(0x06020000)]
                enum InkManipulationMode
                {
                    Inking    = 0,
                    Erasing   = 1,
                    Selecting = 2
                };

                [version(0x06020000)]
                enum InkRecognitionTarget
                {
                    All      = 0,
                    Selected = 1,
                    Recent   = 2
                };

                [version(0x06020000)]
                enum PenTipShape
                {
                    Circle    = 0,
                    Rectangle = 1
                };

                [uuid(97A2176C-6774-48AD-84F0-48F5A9BE74F9)]
                [version(0x06020000)]
                [exclusiveto(Windows.UI.Input.Inking.InkDrawingAttributes)]
                interface IInkDrawingAttributes : IInspectable
                {
                    [propget] HRESULT Color([out] [retval] Windows.UI.Color* value);
                    [propput] HRESULT Color([in] Windows.UI.Color value);
                    [propget] HRESULT PenTip([out] [retval] Windows.UI.Input.Inking.PenTipShape* value);
                    [propput] HRESULT PenTip([in] Windows.UI.Input.Inking.PenTipShape value);
                    [propget] HRESULT Size([out] [retval] Windows.Foundation.Size* value);
                    [propput] HRESULT Size([in] Windows.Foundation.Size value);
                    [propget] HRESULT IgnorePressure([out] [retval] boolean* value);
                    [propput] HRESULT IgnorePressure([in] boolean value);
                    [propget] HRESULT FitToCurve([out] [retval] boolean* value);
                    [propput] HRESULT FitToCurve([in] boolean value);
                }

                [uuid(68510F1F-88E3-477A-A2FA-569F5F1F9BD5)]
                [version(0x06020000)]
                [exclusiveto(Windows.UI.Input.Inking.InkStrokeRenderingSegment)]
                interface IInkStrokeRenderingSegment : IInspectable
                {
                    [propget] HRESULT Position([out] [retval] Windows.Foundation.Point* value);
                    [propget] HRESULT BezierControlPoint1([out] [retval] Windows.Foundation.Point* value);
                    [propget] HRESULT BezierControlPoint2([out] [retval] Windows.Foundation.Point* value);
                    [propget] HRESULT Pressure([out] [retval] FLOAT* value);
                    [propget] HRESULT TiltX([out] [retval] FLOAT* value);
                    [propget] HRESULT TiltY([out] [retval] FLOAT* value);
                    [propget] HRESULT Twist([out] [retval] FLOAT* value);
                }

                [uuid(15144D60-CCE3-4FCF-9D52-11518AB6AFD4)]
                [version(0x06020000)]
                [exclusiveto(Windows.UI.Input.Inking.InkStroke)]
                interface IInkStroke : IInspectable
                {
                    [propget] HRESULT DrawingAttributes([out] [retval] Windows.UI.Input.Inking.InkDrawingAttributes** value);
                    [propput] HRESULT DrawingAttributes([in] Windows.UI.Input.Inking.InkDrawingAttributes* value);
                    [propget] HRESULT BoundingRect([out] [retval] Windows.Foundation.Rect* value);
                    [propget] HRESULT Selected([out] [retval] boolean* value);
                    [propput] HRESULT Selected([in] boolean value);
                    [propget] HRESULT Recognized([out] [retval] boolean* value);
                    HRESULT GetRenderingSegments([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.UI.Input.Inking.InkStrokeRenderingSegment*>** renderingSegments);
                    HRESULT Clone([out] [retval] Windows.UI.Input.Inking.InkStroke** clonedStroke);
                }

                [uuid(82BBD1DC-1C63-41DC-9E07-4B4A70CED801)]
                [version(0x06020000)]
                [exclusiveto(Windows.UI.Input.Inking.InkStrokeBuilder)]
                interface IInkStrokeBuilder : IInspectable
                {
                    HRESULT BeginStroke([in] Windows.UI.Input.PointerPoint* pointerPoint);
                    HRESULT AppendToStroke([in] Windows.UI.Input.PointerPoint* pointerPoint, [out] [retval] Windows.UI.Input.PointerPoint** previousPointerPoint);
                    HRESULT EndStroke([in] Windows.UI.Input.PointerPoint* pointerPoint, [out] [retval] Windows.UI.Input.Inking.InkStroke** stroke);
                    HRESULT CreateStroke([in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Point>* points, [out] [retval] Windows.UI.Input.Inking.InkStroke** stroke);
                    HRESULT SetDefaultDrawingAttributes([in] Windows.UI.Input.Inking.InkDrawingAttributes* drawingAttributes);
                }

                [uuid(36461A94-5068-40EF-8A05-2C2FB60908A2)]
                [version(0x06020000)]
                [exclusiveto(Windows.UI.Input.Inking.InkRecognitionResult)]
                interface IInkRecognitionResult : IInspectable
                {
                    [propget] HRESULT BoundingRect([out] [retval] Windows.Foundation.Rect* boundingRect);
                    HRESULT GetTextCandidates([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** textCandidates);
                    HRESULT GetStrokes([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.UI.Input.Inking.InkStroke*>** strokes);
                }

                [uuid(22ACCBC6-FAA9-4F14-B68C-F6CEE670AE16)]
                [version(0x06020000)]
                interface IInkStrokeContainer : IInspectable
                {
                    [propget] HRESULT BoundingRect([out] [retval] Windows.Foundation.Rect* value);
                    HRESULT AddStroke([in] Windows.UI.Input.Inking.InkStroke* stroke);
                    HRESULT DeleteSelected([out] [retval] Windows.Foundation.Rect* invalidatedRect);
                    HRESULT MoveSelected([in] Windows.Foundation.Point translation, [out] [retval] Windows.Foundation.Rect* invalidatedRectangle);
                    HRESULT SelectWithPolyLine([in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Point>* polyline, [out] [retval] Windows.Foundation.Rect* invalidatedRectangle);
                    HRESULT SelectWithLine([in] Windows.Foundation.Point from, [in] Windows.Foundation.Point to, [out] [retval] Windows.Foundation.Rect* invalidatedRectangle);
                    HRESULT CopySelectedToClipboard();
                    HRESULT PasteFromClipboard([in] Windows.Foundation.Point position, [out] [retval] Windows.Foundation.Rect* invalidatedRectangle);
                    HRESULT CanPasteFromClipboard([out] [retval] boolean* canPaste);
                    HRESULT LoadAsync([in] Windows.Storage.Streams.IInputStream* inputStream, [out] [retval] Windows.Foundation.IAsyncActionWithProgress<UINT64>** loadAction);
                    HRESULT SaveAsync([in] Windows.Storage.Streams.IOutputStream* outputStream, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<UINT32, UINT32>** outputStreamOperation);
                    HRESULT UpdateRecognitionResults([in] Windows.Foundation.Collections.IVectorView<Windows.UI.Input.Inking.InkRecognitionResult*>* recognitionResults);
                    HRESULT GetStrokes([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.UI.Input.Inking.InkStroke*>** strokeView);
                    HRESULT GetRecognitionResults([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.UI.Input.Inking.InkRecognitionResult*>** recognitionResults);
                }

                [uuid(077CCEA3-904D-442A-B151-AACA3631C43B)]
                [version(0x06020000)]
                [exclusiveto(Windows.UI.Input.Inking.InkRecognizer)]
                interface IInkRecognizer : IInspectable
                {
                    [propget] HRESULT Name([out] [retval] HSTRING* value);
                }

                [uuid(A74D9A31-8047-4698-A912-F82A5085012F)]
                [version(0x06020000)]
                interface IInkRecognizerContainer : IInspectable
                {
                    HRESULT SetDefaultRecognizer([in] Windows.UI.Input.Inking.InkRecognizer* recognizer);
                    HRESULT RecognizeAsync([in] Windows.UI.Input.Inking.InkStrokeContainer* strokeCollection, [in] Windows.UI.Input.Inking.InkRecognitionTarget recognitionTarget, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.UI.Input.Inking.InkRecognitionResult*>*>** recognitionResults);
                    HRESULT GetRecognizers([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.UI.Input.Inking.InkRecognizer*>** recognizerView);
                }

                [uuid(4744737D-671B-4163-9C95-4E8D7A035FE1)]
                [version(0x06020000)]
                [exclusiveto(Windows.UI.Input.Inking.InkManager)]
                interface IInkManager : IInspectable
                    requires
                        Windows.UI.Input.Inking.IInkStrokeContainer,
                        Windows.UI.Input.Inking.IInkRecognizerContainer
                {
                    [propget] HRESULT Mode([out] [retval] Windows.UI.Input.Inking.InkManipulationMode* value);
                    [propput] HRESULT Mode([in] Windows.UI.Input.Inking.InkManipulationMode value);
                    HRESULT ProcessPointerDown([in] Windows.UI.Input.PointerPoint* pointerPoint);
                    HRESULT ProcessPointerUpdate([in] Windows.UI.Input.PointerPoint* pointerPoint, [out] [retval] IInspectable** updateInformation);
                    HRESULT ProcessPointerUp([in] Windows.UI.Input.PointerPoint* pointerPoint, [out] [retval] Windows.Foundation.Rect* updateRectangle);
                    HRESULT SetDefaultDrawingAttributes([in] Windows.UI.Input.Inking.InkDrawingAttributes* drawingAttributes);
                    [overload("RecognizeAsync")] HRESULT RecognizeAsync2([in] Windows.UI.Input.Inking.InkRecognitionTarget recognitionTarget, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.UI.Input.Inking.InkRecognitionResult*>*>** recognitionResults);
                }

                [threading(sta)]
                [marshaling_behavior(none)]
                [version(0x06020000)]
                [activatable(0x06020000)]
                runtimeclass InkDrawingAttributes
                {
                    [default] interface Windows.UI.Input.Inking.IInkDrawingAttributes;
                }

                [marshaling_behavior(none)]
                [version(0x06020000)]
                runtimeclass InkStrokeRenderingSegment
                {
                    [default] interface Windows.UI.Input.Inking.IInkStrokeRenderingSegment;
                }

                [marshaling_behavior(none)]
                [version(0x06020000)]
                runtimeclass InkStroke
                {
                    [default] interface Windows.UI.Input.Inking.IInkStroke;
                }

                [marshaling_behavior(none)]
                [activatable(0x06020000)]
                [version(0x06020000)]
                [threading(sta)]
                runtimeclass InkStrokeBuilder
                {
                    [default] interface Windows.UI.Input.Inking.IInkStrokeBuilder;
                }

                [marshaling_behavior(none)]
                [version(0x06020000)]
                runtimeclass InkRecognitionResult
                {
                    [default] interface Windows.UI.Input.Inking.IInkRecognitionResult;
                }

                [marshaling_behavior(none)]
                [threading(sta)]
                [activatable(0x06020000)]
                [version(0x06020000)]
                runtimeclass InkStrokeContainer
                {
                    [default] interface Windows.UI.Input.Inking.IInkStrokeContainer;
                }

                [marshaling_behavior(none)]
                [version(0x06020000)]
                runtimeclass InkRecognizer
                {
                    [default] interface Windows.UI.Input.Inking.IInkRecognizer;
                }

                [version(0x06020000)]
                [marshaling_behavior(none)]
                [threading(sta)]
                [activatable(0x06020000)]
                runtimeclass InkRecognizerContainer
                {
                    [default] interface Windows.UI.Input.Inking.IInkRecognizerContainer;
                }

                [activatable(0x06020000)]
                [version(0x06020000)]
                [marshaling_behavior(none)]
                [threading(sta)]
                runtimeclass InkManager
                {
                    [default] interface Windows.UI.Input.Inking.IInkManager;
                    interface Windows.UI.Input.Inking.IInkStrokeContainer;
                    interface Windows.UI.Input.Inking.IInkRecognizerContainer;
                }
            }
        }
    }
}
