//
// 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.Graphics.Imaging.idl";
import "Windows.Media.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Graphics
    {
        namespace Imaging
        {
            typedef struct BitmapBounds BitmapBounds;

            typedef enum BitmapPixelFormat BitmapPixelFormat;

            typedef struct BitmapSize BitmapSize;

            runtimeclass SoftwareBitmap;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        runtimeclass VideoFrame;
    }
}
namespace Windows
{
    namespace Media
    {
        namespace FaceAnalysis
        {
            interface IDetectedFace;

            interface IFaceDetector;

            interface IFaceDetectorStatics;

            interface IFaceTracker;

            interface IFaceTrackerStatics;

            runtimeclass DetectedFace;

            runtimeclass FaceDetector;

            runtimeclass FaceTracker;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Media
    {
        namespace FaceAnalysis
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Media.FaceAnalysis.DetectedFace*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.FaceAnalysis.DetectedFace*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.FaceAnalysis.DetectedFace*>;

                interface Windows.Foundation.Collections.IVector<Windows.Media.FaceAnalysis.DetectedFace*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVector<Windows.Media.FaceAnalysis.DetectedFace*>*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.FaceAnalysis.FaceDetector*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.FaceAnalysis.FaceTracker*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Media
    {
        namespace FaceAnalysis
        {
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.FaceAnalysis.DetectedFace)]
            [uuid(8200D454-66BC-34DF-9410-E89400195414)]
            interface IDetectedFace : IInspectable
            {
                [propget] HRESULT FaceBox([out] [retval] Windows.Graphics.Imaging.BitmapBounds* returnValue);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.FaceAnalysis.FaceDetector)]
            [uuid(16B672DC-FE6F-3117-8D95-C3F04D51630C)]
            interface IFaceDetector : IInspectable
            {
                [overload("DetectFacesAsync")] HRESULT DetectFacesAsync([in] Windows.Graphics.Imaging.SoftwareBitmap* image, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVector<Windows.Media.FaceAnalysis.DetectedFace*>*>** returnValue);
                [overload("DetectFacesAsync")] HRESULT DetectFacesWithSearchAreaAsync([in] Windows.Graphics.Imaging.SoftwareBitmap* image, [in] Windows.Graphics.Imaging.BitmapBounds searchArea, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVector<Windows.Media.FaceAnalysis.DetectedFace*>*>** returnValue);
                [propget] HRESULT MinDetectableFaceSize([out] [retval] Windows.Graphics.Imaging.BitmapSize* returnValue);
                [propput] HRESULT MinDetectableFaceSize([in] Windows.Graphics.Imaging.BitmapSize value);
                [propget] HRESULT MaxDetectableFaceSize([out] [retval] Windows.Graphics.Imaging.BitmapSize* returnValue);
                [propput] HRESULT MaxDetectableFaceSize([in] Windows.Graphics.Imaging.BitmapSize value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.FaceAnalysis.FaceDetector)]
            [uuid(BC042D67-9047-33F6-881B-6746C1B218B8)]
            interface IFaceDetectorStatics : IInspectable
            {
                HRESULT CreateAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.FaceAnalysis.FaceDetector*>** returnValue);
                HRESULT GetSupportedBitmapPixelFormats([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Graphics.Imaging.BitmapPixelFormat>** result);
                HRESULT IsBitmapPixelFormatSupported([in] Windows.Graphics.Imaging.BitmapPixelFormat bitmapPixelFormat, [out] [retval] boolean* result);
                [propget] HRESULT IsSupported([out] [retval] boolean* returnValue);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.FaceAnalysis.FaceTracker)]
            [uuid(6BA67D8C-A841-4420-93E6-2420A1884FCF)]
            interface IFaceTracker : IInspectable
            {
                HRESULT ProcessNextFrameAsync([in] Windows.Media.VideoFrame* videoFrame, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVector<Windows.Media.FaceAnalysis.DetectedFace*>*>** returnValue);
                [propget] HRESULT MinDetectableFaceSize([out] [retval] Windows.Graphics.Imaging.BitmapSize* returnValue);
                [propput] HRESULT MinDetectableFaceSize([in] Windows.Graphics.Imaging.BitmapSize value);
                [propget] HRESULT MaxDetectableFaceSize([out] [retval] Windows.Graphics.Imaging.BitmapSize* returnValue);
                [propput] HRESULT MaxDetectableFaceSize([in] Windows.Graphics.Imaging.BitmapSize value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.FaceAnalysis.FaceTracker)]
            [uuid(E9629198-1801-3FA5-932E-31D767AF6C4D)]
            interface IFaceTrackerStatics : IInspectable
            {
                HRESULT CreateAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.FaceAnalysis.FaceTracker*>** returnValue);
                HRESULT GetSupportedBitmapPixelFormats([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Graphics.Imaging.BitmapPixelFormat>** result);
                HRESULT IsBitmapPixelFormatSupported([in] Windows.Graphics.Imaging.BitmapPixelFormat bitmapPixelFormat, [out] [retval] boolean* result);
                [propget] HRESULT IsSupported([out] [retval] boolean* returnValue);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass DetectedFace
            {
                [default] interface Windows.Media.FaceAnalysis.IDetectedFace;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Media.FaceAnalysis.IFaceDetectorStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass FaceDetector
            {
                [default] interface Windows.Media.FaceAnalysis.IFaceDetector;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Media.FaceAnalysis.IFaceTrackerStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass FaceTracker
            {
                [default] interface Windows.Media.FaceAnalysis.IFaceTracker;
            }
        }
    }
}
