//
// 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.Devices.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(__windows2Edevices2Einput_h__)")
cpp_quote("#include <Windows.Devices.Input.h>")
cpp_quote("#endif // !defined(__windows2Edevices2Einput_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Devices
    {
        namespace Input
        {
            runtimeclass PointerDevice;

            typedef enum PointerDeviceType PointerDeviceType;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        typedef struct Point Point;

        typedef struct Rect Rect;
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Input
        {
            typedef enum EdgeGestureKind EdgeGestureKind;

            typedef enum HoldingState HoldingState;

            typedef enum DraggingState DraggingState;

            typedef enum CrossSlidingState CrossSlidingState;

            typedef enum GestureSettings GestureSettings;

            typedef enum PointerUpdateKind PointerUpdateKind;

            typedef struct ManipulationDelta ManipulationDelta;

            typedef struct ManipulationVelocities ManipulationVelocities;

            typedef struct CrossSlideThresholds CrossSlideThresholds;

            interface IEdgeGestureEventArgs;

            interface IEdgeGestureStatics;

            interface IEdgeGesture;

            interface ITappedEventArgs;

            interface IRightTappedEventArgs;

            interface IHoldingEventArgs;

            interface IDraggingEventArgs;

            interface IManipulationStartedEventArgs;

            interface IManipulationUpdatedEventArgs;

            interface IManipulationInertiaStartingEventArgs;

            interface IManipulationCompletedEventArgs;

            interface ICrossSlidingEventArgs;

            interface IMouseWheelParameters;

            interface IGestureRecognizer;

            interface IPointerPointStatics;

            interface IPointerPointTransform;

            interface IPointerPoint;

            interface IPointerPointProperties;

            interface IPointerVisualizationSettings;

            interface IPointerVisualizationSettingsStatics;

            runtimeclass EdgeGestureEventArgs;

            runtimeclass EdgeGesture;

            runtimeclass MouseWheelParameters;

            runtimeclass GestureRecognizer;

            runtimeclass TappedEventArgs;

            runtimeclass RightTappedEventArgs;

            runtimeclass HoldingEventArgs;

            runtimeclass DraggingEventArgs;

            runtimeclass ManipulationStartedEventArgs;

            runtimeclass ManipulationUpdatedEventArgs;

            runtimeclass ManipulationInertiaStartingEventArgs;

            runtimeclass ManipulationCompletedEventArgs;

            runtimeclass CrossSlidingEventArgs;

            runtimeclass PointerPoint;

            runtimeclass PointerPointProperties;

            runtimeclass PointerVisualizationSettings;
        }
    }
}

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

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

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

                interface Windows.Foundation.Collections.IVector<Windows.UI.Input.PointerPoint*>;

                interface Windows.Foundation.TypedEventHandler<Windows.UI.Input.EdgeGesture*, Windows.UI.Input.EdgeGestureEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.UI.Input.GestureRecognizer*, Windows.UI.Input.CrossSlidingEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.UI.Input.GestureRecognizer*, Windows.UI.Input.DraggingEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.UI.Input.GestureRecognizer*, Windows.UI.Input.HoldingEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.UI.Input.GestureRecognizer*, Windows.UI.Input.ManipulationCompletedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.UI.Input.GestureRecognizer*, Windows.UI.Input.ManipulationInertiaStartingEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.UI.Input.GestureRecognizer*, Windows.UI.Input.ManipulationStartedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.UI.Input.GestureRecognizer*, Windows.UI.Input.ManipulationUpdatedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.UI.Input.GestureRecognizer*, Windows.UI.Input.RightTappedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.UI.Input.GestureRecognizer*, Windows.UI.Input.TappedEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace UI
    {
        namespace Input
        {
            [version(0x06020000)]
            enum EdgeGestureKind
            {
                Touch    = 0,
                Keyboard = 1,
                Mouse    = 2
            };

            [version(0x06020000)]
            enum HoldingState
            {
                Started   = 0,
                Completed = 1,
                Canceled  = 2
            };

            [version(0x06020000)]
            enum DraggingState
            {
                Started    = 0,
                Continuing = 1,
                Completed  = 2
            };

            [version(0x06020000)]
            enum CrossSlidingState
            {
                Started            = 0,
                Dragging           = 1,
                Selecting          = 2,
                SelectSpeedBumping = 3,
                SpeedBumping       = 4,
                Rearranging        = 5,
                Completed          = 6
            };

            [flags]
            [version(0x06020000)]
            enum GestureSettings
            {
                None                         = 0x0,
                Tap                          = 0x1,
                DoubleTap                    = 0x2,
                Hold                         = 0x4,
                HoldWithMouse                = 0x8,
                RightTap                     = 0x10,
                Drag                         = 0x20,
                ManipulationTranslateX       = 0x40,
                ManipulationTranslateY       = 0x80,
                ManipulationTranslateRailsX  = 0x100,
                ManipulationTranslateRailsY  = 0x200,
                ManipulationRotate           = 0x400,
                ManipulationScale            = 0x800,
                ManipulationTranslateInertia = 0x1000,
                ManipulationRotateInertia    = 0x2000,
                ManipulationScaleInertia     = 0x4000,
                CrossSlide                   = 0x8000
            };

            [version(0x06020000)]
            enum PointerUpdateKind
            {
                Other                = 0,
                LeftButtonPressed    = 1,
                LeftButtonReleased   = 2,
                RightButtonPressed   = 3,
                RightButtonReleased  = 4,
                MiddleButtonPressed  = 5,
                MiddleButtonReleased = 6,
                XButton1Pressed      = 7,
                XButton1Released     = 8,
                XButton2Pressed      = 9,
                XButton2Released     = 10
            };

            [version(0x06020000)]
            struct ManipulationDelta
            {
                Windows.Foundation.Point Translation;
                FLOAT Scale;
                FLOAT Rotation;
                FLOAT Expansion;
            };

            [version(0x06020000)]
            struct ManipulationVelocities
            {
                Windows.Foundation.Point Linear;
                FLOAT Angular;
                FLOAT Expansion;
            };

            [version(0x06020000)]
            struct CrossSlideThresholds
            {
                FLOAT SelectionStart;
                FLOAT SpeedBumpStart;
                FLOAT SpeedBumpEnd;
                FLOAT RearrangeStart;
            };

            [uuid(44FA4A24-2D09-42E1-8B5E-368208796A4C)]
            [version(0x06020000)]
            [exclusiveto(Windows.UI.Input.EdgeGestureEventArgs)]
            interface IEdgeGestureEventArgs : IInspectable
            {
                [propget] HRESULT Kind([out] [retval] Windows.UI.Input.EdgeGestureKind* value);
            }

            [uuid(BC6A8519-18EE-4043-9839-4FC584D60A14)]
            [version(0x06020000)]
            [exclusiveto(Windows.UI.Input.EdgeGesture)]
            interface IEdgeGestureStatics : IInspectable
            {
                HRESULT GetForCurrentView([out] [retval] Windows.UI.Input.EdgeGesture** current);
            }

            [uuid(580D5292-2AB1-49AA-A7F0-33BD3F8DF9F1)]
            [version(0x06020000)]
            [exclusiveto(Windows.UI.Input.EdgeGesture)]
            interface IEdgeGesture : IInspectable
            {
                [eventadd] HRESULT Starting([in] Windows.Foundation.TypedEventHandler<Windows.UI.Input.EdgeGesture*, Windows.UI.Input.EdgeGestureEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT Starting([in] EventRegistrationToken token);
                [eventadd] HRESULT Completed([in] Windows.Foundation.TypedEventHandler<Windows.UI.Input.EdgeGesture*, Windows.UI.Input.EdgeGestureEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT Completed([in] EventRegistrationToken token);
                [eventadd] HRESULT Canceled([in] Windows.Foundation.TypedEventHandler<Windows.UI.Input.EdgeGesture*, Windows.UI.Input.EdgeGestureEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT Canceled([in] EventRegistrationToken token);
            }

            [uuid(CFA126E4-253A-4C3C-953B-395C37AED309)]
            [exclusiveto(Windows.UI.Input.TappedEventArgs)]
            [version(0x06020000)]
            interface ITappedEventArgs : IInspectable
            {
                [propget] HRESULT PointerDeviceType([out] [retval] Windows.Devices.Input.PointerDeviceType* value);
                [propget] HRESULT Position([out] [retval] Windows.Foundation.Point* value);
                [propget] HRESULT TapCount([out] [retval] UINT32* value);
            }

            [uuid(4CBF40BD-AF7A-4A36-9476-B1DCE141709A)]
            [exclusiveto(Windows.UI.Input.RightTappedEventArgs)]
            [version(0x06020000)]
            interface IRightTappedEventArgs : IInspectable
            {
                [propget] HRESULT PointerDeviceType([out] [retval] Windows.Devices.Input.PointerDeviceType* value);
                [propget] HRESULT Position([out] [retval] Windows.Foundation.Point* value);
            }

            [uuid(2BF755C5-E799-41B4-BB40-242F40959B71)]
            [exclusiveto(Windows.UI.Input.HoldingEventArgs)]
            [version(0x06020000)]
            interface IHoldingEventArgs : IInspectable
            {
                [propget] HRESULT PointerDeviceType([out] [retval] Windows.Devices.Input.PointerDeviceType* value);
                [propget] HRESULT Position([out] [retval] Windows.Foundation.Point* value);
                [propget] HRESULT HoldingState([out] [retval] Windows.UI.Input.HoldingState* value);
            }

            [uuid(1C905384-083C-4BD3-B559-179CDDEB33EC)]
            [version(0x06020000)]
            [exclusiveto(Windows.UI.Input.DraggingEventArgs)]
            interface IDraggingEventArgs : IInspectable
            {
                [propget] HRESULT PointerDeviceType([out] [retval] Windows.Devices.Input.PointerDeviceType* value);
                [propget] HRESULT Position([out] [retval] Windows.Foundation.Point* value);
                [propget] HRESULT DraggingState([out] [retval] Windows.UI.Input.DraggingState* value);
            }

            [uuid(DDEC873E-CFCE-4932-8C1D-3C3D011A34C0)]
            [exclusiveto(Windows.UI.Input.ManipulationStartedEventArgs)]
            [version(0x06020000)]
            interface IManipulationStartedEventArgs : IInspectable
            {
                [propget] HRESULT PointerDeviceType([out] [retval] Windows.Devices.Input.PointerDeviceType* value);
                [propget] HRESULT Position([out] [retval] Windows.Foundation.Point* value);
                [propget] HRESULT Cumulative([out] [retval] Windows.UI.Input.ManipulationDelta* value);
            }

            [uuid(CB354CE5-ABB8-4F9F-B3CE-8181AA61AD82)]
            [exclusiveto(Windows.UI.Input.ManipulationUpdatedEventArgs)]
            [version(0x06020000)]
            interface IManipulationUpdatedEventArgs : IInspectable
            {
                [propget] HRESULT PointerDeviceType([out] [retval] Windows.Devices.Input.PointerDeviceType* value);
                [propget] HRESULT Position([out] [retval] Windows.Foundation.Point* value);
                [propget] HRESULT Delta([out] [retval] Windows.UI.Input.ManipulationDelta* value);
                [propget] HRESULT Cumulative([out] [retval] Windows.UI.Input.ManipulationDelta* value);
                [propget] HRESULT Velocities([out] [retval] Windows.UI.Input.ManipulationVelocities* value);
            }

            [uuid(DD37A898-26BF-467A-9CE5-CCF3FB11371E)]
            [exclusiveto(Windows.UI.Input.ManipulationInertiaStartingEventArgs)]
            [version(0x06020000)]
            interface IManipulationInertiaStartingEventArgs : IInspectable
            {
                [propget] HRESULT PointerDeviceType([out] [retval] Windows.Devices.Input.PointerDeviceType* value);
                [propget] HRESULT Position([out] [retval] Windows.Foundation.Point* value);
                [propget] HRESULT Delta([out] [retval] Windows.UI.Input.ManipulationDelta* value);
                [propget] HRESULT Cumulative([out] [retval] Windows.UI.Input.ManipulationDelta* value);
                [propget] HRESULT Velocities([out] [retval] Windows.UI.Input.ManipulationVelocities* value);
            }

            [uuid(B34AB22B-D19B-46FF-9F38-DEC7754BB9E7)]
            [exclusiveto(Windows.UI.Input.ManipulationCompletedEventArgs)]
            [version(0x06020000)]
            interface IManipulationCompletedEventArgs : IInspectable
            {
                [propget] HRESULT PointerDeviceType([out] [retval] Windows.Devices.Input.PointerDeviceType* value);
                [propget] HRESULT Position([out] [retval] Windows.Foundation.Point* value);
                [propget] HRESULT Cumulative([out] [retval] Windows.UI.Input.ManipulationDelta* value);
                [propget] HRESULT Velocities([out] [retval] Windows.UI.Input.ManipulationVelocities* value);
            }

            [uuid(E9374738-6F88-41D9-8720-78E08E398349)]
            [exclusiveto(Windows.UI.Input.CrossSlidingEventArgs)]
            [version(0x06020000)]
            interface ICrossSlidingEventArgs : IInspectable
            {
                [propget] HRESULT PointerDeviceType([out] [retval] Windows.Devices.Input.PointerDeviceType* value);
                [propget] HRESULT Position([out] [retval] Windows.Foundation.Point* value);
                [propget] HRESULT CrossSlidingState([out] [retval] Windows.UI.Input.CrossSlidingState* value);
            }

            [uuid(EAD0CA44-9DED-4037-8149-5E4CC2564468)]
            [version(0x06020000)]
            [exclusiveto(Windows.UI.Input.MouseWheelParameters)]
            interface IMouseWheelParameters : IInspectable
            {
                [propget] HRESULT CharTranslation([out] [retval] Windows.Foundation.Point* value);
                [propput] HRESULT CharTranslation([in] Windows.Foundation.Point value);
                [propget] HRESULT DeltaScale([out] [retval] FLOAT* value);
                [propput] HRESULT DeltaScale([in] FLOAT value);
                [propget] HRESULT DeltaRotationAngle([out] [retval] FLOAT* value);
                [propput] HRESULT DeltaRotationAngle([in] FLOAT value);
                [propget] HRESULT PageTranslation([out] [retval] Windows.Foundation.Point* value);
                [propput] HRESULT PageTranslation([in] Windows.Foundation.Point value);
            }

            [uuid(B47A37BF-3D6B-4F88-83E8-6DCB4012FFB0)]
            [exclusiveto(Windows.UI.Input.GestureRecognizer)]
            [version(0x06020000)]
            interface IGestureRecognizer : IInspectable
            {
                [propget] HRESULT GestureSettings([out] [retval] Windows.UI.Input.GestureSettings* value);
                [propput] HRESULT GestureSettings([in] Windows.UI.Input.GestureSettings value);
                [propget] HRESULT IsInertial([out] [retval] boolean* value);
                [propget] HRESULT IsActive([out] [retval] boolean* value);
                [propget] HRESULT ShowGestureFeedback([out] [retval] boolean* value);
                [propput] HRESULT ShowGestureFeedback([in] boolean value);
                [propget] HRESULT PivotCenter([out] [retval] Windows.Foundation.Point* value);
                [propput] HRESULT PivotCenter([in] Windows.Foundation.Point value);
                [propget] HRESULT PivotRadius([out] [retval] FLOAT* value);
                [propput] HRESULT PivotRadius([in] FLOAT value);
                [propget] HRESULT InertiaTranslationDeceleration([out] [retval] FLOAT* value);
                [propput] HRESULT InertiaTranslationDeceleration([in] FLOAT value);
                [propget] HRESULT InertiaRotationDeceleration([out] [retval] FLOAT* value);
                [propput] HRESULT InertiaRotationDeceleration([in] FLOAT value);
                [propget] HRESULT InertiaExpansionDeceleration([out] [retval] FLOAT* value);
                [propput] HRESULT InertiaExpansionDeceleration([in] FLOAT value);
                [propget] HRESULT InertiaTranslationDisplacement([out] [retval] FLOAT* value);
                [propput] HRESULT InertiaTranslationDisplacement([in] FLOAT value);
                [propget] HRESULT InertiaRotationAngle([out] [retval] FLOAT* value);
                [propput] HRESULT InertiaRotationAngle([in] FLOAT value);
                [propget] HRESULT InertiaExpansion([out] [retval] FLOAT* value);
                [propput] HRESULT InertiaExpansion([in] FLOAT value);
                [propget] HRESULT ManipulationExact([out] [retval] boolean* value);
                [propput] HRESULT ManipulationExact([in] boolean value);
                [propget] HRESULT CrossSlideThresholds([out] [retval] Windows.UI.Input.CrossSlideThresholds* value);
                [propput] HRESULT CrossSlideThresholds([in] Windows.UI.Input.CrossSlideThresholds value);
                [propget] HRESULT CrossSlideHorizontally([out] [retval] boolean* value);
                [propput] HRESULT CrossSlideHorizontally([in] boolean value);
                [propget] HRESULT CrossSlideExact([out] [retval] boolean* value);
                [propput] HRESULT CrossSlideExact([in] boolean value);
                [propget] HRESULT AutoProcessInertia([out] [retval] boolean* value);
                [propput] HRESULT AutoProcessInertia([in] boolean value);
                [propget] HRESULT MouseWheelParameters([out] [retval] Windows.UI.Input.MouseWheelParameters** value);
                HRESULT CanBeDoubleTap([in] Windows.UI.Input.PointerPoint* value, [out] [retval] boolean* canBeDoubleTap);
                HRESULT ProcessDownEvent([in] Windows.UI.Input.PointerPoint* value);
                HRESULT ProcessMoveEvents([in] Windows.Foundation.Collections.IVector<Windows.UI.Input.PointerPoint*>* value);
                HRESULT ProcessUpEvent([in] Windows.UI.Input.PointerPoint* value);
                HRESULT ProcessMouseWheelEvent([in] Windows.UI.Input.PointerPoint* value, [in] boolean isShiftKeyDown, [in] boolean isControlKeyDown);
                HRESULT ProcessInertia();
                HRESULT CompleteGesture();
                [eventadd] HRESULT Tapped([in] Windows.Foundation.TypedEventHandler<Windows.UI.Input.GestureRecognizer*, Windows.UI.Input.TappedEventArgs*>* handler, [out] [retval] EventRegistrationToken* pCookie);
                [eventremove] HRESULT Tapped([in] EventRegistrationToken cookie);
                [eventadd] HRESULT RightTapped([in] Windows.Foundation.TypedEventHandler<Windows.UI.Input.GestureRecognizer*, Windows.UI.Input.RightTappedEventArgs*>* handler, [out] [retval] EventRegistrationToken* pCookie);
                [eventremove] HRESULT RightTapped([in] EventRegistrationToken cookie);
                [eventadd] HRESULT Holding([in] Windows.Foundation.TypedEventHandler<Windows.UI.Input.GestureRecognizer*, Windows.UI.Input.HoldingEventArgs*>* handler, [out] [retval] EventRegistrationToken* pCookie);
                [eventremove] HRESULT Holding([in] EventRegistrationToken cookie);
                [eventadd] HRESULT Dragging([in] Windows.Foundation.TypedEventHandler<Windows.UI.Input.GestureRecognizer*, Windows.UI.Input.DraggingEventArgs*>* handler, [out] [retval] EventRegistrationToken* pCookie);
                [eventremove] HRESULT Dragging([in] EventRegistrationToken cookie);
                [eventadd] HRESULT ManipulationStarted([in] Windows.Foundation.TypedEventHandler<Windows.UI.Input.GestureRecognizer*, Windows.UI.Input.ManipulationStartedEventArgs*>* handler, [out] [retval] EventRegistrationToken* pCookie);
                [eventremove] HRESULT ManipulationStarted([in] EventRegistrationToken cookie);
                [eventadd] HRESULT ManipulationUpdated([in] Windows.Foundation.TypedEventHandler<Windows.UI.Input.GestureRecognizer*, Windows.UI.Input.ManipulationUpdatedEventArgs*>* handler, [out] [retval] EventRegistrationToken* pCookie);
                [eventremove] HRESULT ManipulationUpdated([in] EventRegistrationToken cookie);
                [eventadd] HRESULT ManipulationInertiaStarting([in] Windows.Foundation.TypedEventHandler<Windows.UI.Input.GestureRecognizer*, Windows.UI.Input.ManipulationInertiaStartingEventArgs*>* handler, [out] [retval] EventRegistrationToken* pCookie);
                [eventremove] HRESULT ManipulationInertiaStarting([in] EventRegistrationToken cookie);
                [eventadd] HRESULT ManipulationCompleted([in] Windows.Foundation.TypedEventHandler<Windows.UI.Input.GestureRecognizer*, Windows.UI.Input.ManipulationCompletedEventArgs*>* handler, [out] [retval] EventRegistrationToken* pCookie);
                [eventremove] HRESULT ManipulationCompleted([in] EventRegistrationToken cookie);
                [eventadd] HRESULT CrossSliding([in] Windows.Foundation.TypedEventHandler<Windows.UI.Input.GestureRecognizer*, Windows.UI.Input.CrossSlidingEventArgs*>* handler, [out] [retval] EventRegistrationToken* pCookie);
                [eventremove] HRESULT CrossSliding([in] EventRegistrationToken cookie);
            }

            [uuid(A506638D-2A1A-413E-BC75-9F38381CC069)]
            [version(0x06020000)]
            [exclusiveto(Windows.UI.Input.PointerPoint)]
            interface IPointerPointStatics : IInspectable
            {
                [overload("GetCurrentPoint")] HRESULT GetCurrentPoint([in] UINT32 pointerId, [out] [retval] Windows.UI.Input.PointerPoint** pointerPoint);
                [overload("GetIntermediatePoints")] HRESULT GetIntermediatePoints([in] UINT32 pointerId, [out] [retval] Windows.Foundation.Collections.IVector<Windows.UI.Input.PointerPoint*>** pointerPoints);
                [overload("GetCurrentPoint")] HRESULT GetCurrentPointTransformed([in] UINT32 pointerId, [in] Windows.UI.Input.IPointerPointTransform* transform, [out] [retval] Windows.UI.Input.PointerPoint** pointerPoint);
                [overload("GetIntermediatePoints")] HRESULT GetIntermediatePointsTransformed([in] UINT32 pointerId, [in] Windows.UI.Input.IPointerPointTransform* transform, [out] [retval] Windows.Foundation.Collections.IVector<Windows.UI.Input.PointerPoint*>** pointerPoints);
            }

            [uuid(4D5FE14F-B87C-4028-BC9C-59E9947FB056)]
            [version(0x06020000)]
            interface IPointerPointTransform : IInspectable
            {
                [propget] HRESULT Inverse([out] [retval] Windows.UI.Input.IPointerPointTransform** value);
                HRESULT TryTransform([in] Windows.Foundation.Point inPoint, [out] Windows.Foundation.Point* outPoint, [out] [retval] boolean* returnValue);
                HRESULT TransformBounds([in] Windows.Foundation.Rect rect, [out] [retval] Windows.Foundation.Rect* returnValue);
            }

            [uuid(E995317D-7296-42D9-8233-C5BE73B74A4A)]
            [version(0x06020000)]
            [exclusiveto(Windows.UI.Input.PointerPoint)]
            interface IPointerPoint : IInspectable
            {
                [propget] HRESULT PointerDevice([out] [retval] Windows.Devices.Input.PointerDevice** value);
                [propget] HRESULT Position([out] [retval] Windows.Foundation.Point* value);
                [propget] HRESULT RawPosition([out] [retval] Windows.Foundation.Point* value);
                [propget] HRESULT PointerId([out] [retval] UINT32* value);
                [propget] HRESULT FrameId([out] [retval] UINT32* value);
                [propget] HRESULT Timestamp([out] [retval] UINT64* value);
                [propget] HRESULT IsInContact([out] [retval] boolean* value);
                [propget] HRESULT Properties([out] [retval] Windows.UI.Input.PointerPointProperties** value);
            }

            [uuid(C79D8A4B-C163-4EE7-803F-67CE79F9972D)]
            [exclusiveto(Windows.UI.Input.PointerPointProperties)]
            [version(0x06020000)]
            interface IPointerPointProperties : IInspectable
            {
                [propget] HRESULT Pressure([out] [retval] FLOAT* value);
                [propget] HRESULT IsInverted([out] [retval] boolean* value);
                [propget] HRESULT IsEraser([out] [retval] boolean* value);
                [propget] HRESULT Orientation([out] [retval] FLOAT* value);
                [propget] HRESULT XTilt([out] [retval] FLOAT* value);
                [propget] HRESULT YTilt([out] [retval] FLOAT* value);
                [propget] HRESULT Twist([out] [retval] FLOAT* value);
                [propget] HRESULT ContactRect([out] [retval] Windows.Foundation.Rect* value);
                [propget] HRESULT ContactRectRaw([out] [retval] Windows.Foundation.Rect* value);
                [propget] HRESULT TouchConfidence([out] [retval] boolean* value);
                [propget] HRESULT IsLeftButtonPressed([out] [retval] boolean* value);
                [propget] HRESULT IsRightButtonPressed([out] [retval] boolean* value);
                [propget] HRESULT IsMiddleButtonPressed([out] [retval] boolean* value);
                [propget] HRESULT MouseWheelDelta([out] [retval] INT32* value);
                [propget] HRESULT IsHorizontalMouseWheel([out] [retval] boolean* value);
                [propget] HRESULT IsPrimary([out] [retval] boolean* value);
                [propget] HRESULT IsInRange([out] [retval] boolean* value);
                [propget] HRESULT IsCanceled([out] [retval] boolean* value);
                [propget] HRESULT IsBarrelButtonPressed([out] [retval] boolean* value);
                [propget] HRESULT IsXButton1Pressed([out] [retval] boolean* value);
                [propget] HRESULT IsXButton2Pressed([out] [retval] boolean* value);
                [propget] HRESULT PointerUpdateKind([out] [retval] Windows.UI.Input.PointerUpdateKind* value);
                HRESULT HasUsage([in] UINT32 usagePage, [in] UINT32 usageId, [out] [retval] boolean* value);
                HRESULT GetUsageValue([in] UINT32 usagePage, [in] UINT32 usageId, [out] [retval] INT32* value);
            }

            [uuid(4D1E6461-84F7-499D-BD91-2A36E2B7AAA2)]
            [exclusiveto(Windows.UI.Input.PointerVisualizationSettings)]
            [version(0x06020000)]
            interface IPointerVisualizationSettings : IInspectable
            {
                [propput] HRESULT IsContactFeedbackEnabled([in] boolean value);
                [propget] HRESULT IsContactFeedbackEnabled([out] [retval] boolean* value);
                [propput] HRESULT IsBarrelButtonFeedbackEnabled([in] boolean value);
                [propget] HRESULT IsBarrelButtonFeedbackEnabled([out] [retval] boolean* value);
            }

            [uuid(68870EDB-165B-4214-B4F3-584ECA8C8A69)]
            [version(0x06020000)]
            [exclusiveto(Windows.UI.Input.PointerVisualizationSettings)]
            interface IPointerVisualizationSettingsStatics : IInspectable
            {
                HRESULT GetForCurrentView([out] [retval] Windows.UI.Input.PointerVisualizationSettings** visualizationSettings);
            }

            [marshaling_behavior(standard)]
            [version(0x06020000)]
            runtimeclass EdgeGestureEventArgs
            {
                [default] interface Windows.UI.Input.IEdgeGestureEventArgs;
            }

            [static(Windows.UI.Input.IEdgeGestureStatics, 0x06020000)]
            [version(0x06020000)]
            [marshaling_behavior(standard)]
            [threading(sta)]
            runtimeclass EdgeGesture
            {
                [default] interface Windows.UI.Input.IEdgeGesture;
            }

            [marshaling_behavior(none)]
            [version(0x06020000)]
            runtimeclass MouseWheelParameters
            {
                [default] interface Windows.UI.Input.IMouseWheelParameters;
            }

            [marshaling_behavior(none)]
            [version(0x06020000)]
            [activatable(0x06020000)]
            runtimeclass GestureRecognizer
            {
                [default] interface Windows.UI.Input.IGestureRecognizer;
            }

            [version(0x06020000)]
            [marshaling_behavior(none)]
            runtimeclass TappedEventArgs
            {
                [default] interface Windows.UI.Input.ITappedEventArgs;
            }

            [version(0x06020000)]
            [marshaling_behavior(none)]
            runtimeclass RightTappedEventArgs
            {
                [default] interface Windows.UI.Input.IRightTappedEventArgs;
            }

            [version(0x06020000)]
            [marshaling_behavior(none)]
            runtimeclass HoldingEventArgs
            {
                [default] interface Windows.UI.Input.IHoldingEventArgs;
            }

            [marshaling_behavior(none)]
            [version(0x06020000)]
            runtimeclass DraggingEventArgs
            {
                [default] interface Windows.UI.Input.IDraggingEventArgs;
            }

            [marshaling_behavior(none)]
            [version(0x06020000)]
            runtimeclass ManipulationStartedEventArgs
            {
                [default] interface Windows.UI.Input.IManipulationStartedEventArgs;
            }

            [marshaling_behavior(none)]
            [version(0x06020000)]
            runtimeclass ManipulationUpdatedEventArgs
            {
                [default] interface Windows.UI.Input.IManipulationUpdatedEventArgs;
            }

            [marshaling_behavior(none)]
            [version(0x06020000)]
            runtimeclass ManipulationInertiaStartingEventArgs
            {
                [default] interface Windows.UI.Input.IManipulationInertiaStartingEventArgs;
            }

            [marshaling_behavior(none)]
            [version(0x06020000)]
            runtimeclass ManipulationCompletedEventArgs
            {
                [default] interface Windows.UI.Input.IManipulationCompletedEventArgs;
            }

            [version(0x06020000)]
            [marshaling_behavior(none)]
            runtimeclass CrossSlidingEventArgs
            {
                [default] interface Windows.UI.Input.ICrossSlidingEventArgs;
            }

            [static(Windows.UI.Input.IPointerPointStatics, 0x06020000)]
            [version(0x06020000)]
            [marshaling_behavior(none)]
            runtimeclass PointerPoint
            {
                [default] interface Windows.UI.Input.IPointerPoint;
            }

            [version(0x06020000)]
            [marshaling_behavior(none)]
            runtimeclass PointerPointProperties
            {
                [default] interface Windows.UI.Input.IPointerPointProperties;
            }

            [marshaling_behavior(agile)]
            [static(Windows.UI.Input.IPointerVisualizationSettingsStatics, 0x06020000)]
            [version(0x06020000)]
            runtimeclass PointerVisualizationSettings
            {
                [default] interface Windows.UI.Input.IPointerVisualizationSettings;
            }
        }
    }
}
