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

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

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Globalization
    {
        runtimeclass Language;
    }
}
namespace Windows
{
    namespace Graphics
    {
        namespace Imaging
        {
            runtimeclass SoftwareBitmap;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Ocr
        {
            interface IOcrEngine;

            interface IOcrEngineStatics;

            interface IOcrLine;

            interface IOcrResult;

            interface IOcrWord;

            runtimeclass OcrEngine;

            runtimeclass OcrLine;

            runtimeclass OcrResult;

            runtimeclass OcrWord;
        }
    }
}

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

                interface Windows.Foundation.Collections.IIterable<Windows.Media.Ocr.OcrWord*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Ocr.OcrLine*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Ocr.OcrWord*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Ocr.OcrLine*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Ocr.OcrWord*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Ocr.OcrResult*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Media
    {
        namespace Ocr
        {
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Ocr.OcrEngine)]
            [uuid(5A14BC41-5B76-3140-B680-8825562683AC)]
            interface IOcrEngine : IInspectable
            {
                HRESULT RecognizeAsync([in] Windows.Graphics.Imaging.SoftwareBitmap* bitmap, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Ocr.OcrResult*>** result);
                [propget] HRESULT RecognizerLanguage([out] [retval] Windows.Globalization.Language** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Ocr.OcrEngine)]
            [uuid(5BFFA85A-3384-3540-9940-699120D428A8)]
            interface IOcrEngineStatics : IInspectable
            {
                [propget] HRESULT MaxImageDimension([out] [retval] UINT32* value);
                [propget] HRESULT AvailableRecognizerLanguages([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Globalization.Language*>** value);
                HRESULT IsLanguageSupported([in] Windows.Globalization.Language* language, [out] [retval] boolean* result);
                HRESULT TryCreateFromLanguage([in] Windows.Globalization.Language* language, [out] [retval] Windows.Media.Ocr.OcrEngine** result);
                HRESULT TryCreateFromUserProfileLanguages([out] [retval] Windows.Media.Ocr.OcrEngine** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Ocr.OcrLine)]
            [uuid(0043A16F-E31F-3A24-899C-D444BD088124)]
            interface IOcrLine : IInspectable
            {
                [propget] HRESULT Words([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Ocr.OcrWord*>** value);
                [propget] HRESULT Text([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Ocr.OcrResult)]
            [uuid(9BD235B2-175B-3D6A-92E2-388C206E2F63)]
            interface IOcrResult : IInspectable
            {
                [propget] HRESULT Lines([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Ocr.OcrLine*>** value);
                [propget] HRESULT TextAngle([out] [retval] Windows.Foundation.IReference<DOUBLE>** value);
                [propget] HRESULT Text([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Ocr.OcrWord)]
            [uuid(3C2A477A-5CD9-3525-BA2A-23D1E0A68A1D)]
            interface IOcrWord : IInspectable
            {
                [propget] HRESULT BoundingRect([out] [retval] Windows.Foundation.Rect* value);
                [propget] HRESULT Text([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Media.Ocr.IOcrEngineStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass OcrEngine
            {
                [default] interface Windows.Media.Ocr.IOcrEngine;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass OcrLine
            {
                [default] interface Windows.Media.Ocr.IOcrLine;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass OcrResult
            {
                [default] interface Windows.Media.Ocr.IOcrResult;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass OcrWord
            {
                [default] interface Windows.Media.Ocr.IOcrWord;
            }
        }
    }
}
