//
// 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.Storage.idl";
import "Windows.Storage.Streams.idl";
import "Windows.UI.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        interface IAsyncAction;

        interface IClosable;

        typedef struct Rect Rect;

        typedef struct Size Size;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Storage
    {
        interface IStorageFile;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IRandomAccessStream;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        typedef struct Color Color;
    }
}
namespace Windows
{
    namespace Data
    {
        namespace Pdf
        {
            typedef enum PdfPageRotation PdfPageRotation;

            interface IPdfDocument;

            interface IPdfDocumentStatics;

            interface IPdfPage;

            interface IPdfPageDimensions;

            interface IPdfPageRenderOptions;

            runtimeclass PdfDocument;

            runtimeclass PdfPage;

            runtimeclass PdfPageDimensions;

            runtimeclass PdfPageRenderOptions;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Data
    {
        namespace Pdf
        {
            declare
            {
                interface Windows.Foundation.IAsyncOperation<Windows.Data.Pdf.PdfDocument*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Data
    {
        namespace Pdf
        {
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum PdfPageRotation
            {
                Normal    = 0,
                Rotate90  = 1,
                Rotate180 = 2,
                Rotate270 = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Data.Pdf.PdfDocument)]
            [uuid(AC7EBEDD-80FA-4089-846E-81B77FF5A86C)]
            interface IPdfDocument : IInspectable
            {
                HRESULT GetPage([in] UINT32 pageIndex, [out] [retval] Windows.Data.Pdf.PdfPage** pdfPage);
                [propget] HRESULT PageCount([out] [retval] UINT32* value);
                [propget] HRESULT IsPasswordProtected([out] [retval] boolean* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Data.Pdf.PdfDocument)]
            [uuid(433A0B5F-C007-4788-90F2-08143D922599)]
            interface IPdfDocumentStatics : IInspectable
            {
                [overload("LoadFromFileAsync")] HRESULT LoadFromFileAsync([in] Windows.Storage.IStorageFile* file, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Data.Pdf.PdfDocument*>** asyncInfo);
                [overload("LoadFromFileAsync")] HRESULT LoadFromFileWithPasswordAsync([in] Windows.Storage.IStorageFile* file, [in] HSTRING password, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Data.Pdf.PdfDocument*>** asyncInfo);
                [overload("LoadFromStreamAsync")] HRESULT LoadFromStreamAsync([in] Windows.Storage.Streams.IRandomAccessStream* inputStream, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Data.Pdf.PdfDocument*>** asyncInfo);
                [overload("LoadFromStreamAsync")] HRESULT LoadFromStreamWithPasswordAsync([in] Windows.Storage.Streams.IRandomAccessStream* inputStream, [in] HSTRING password, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Data.Pdf.PdfDocument*>** asyncInfo);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Data.Pdf.PdfPage)]
            [uuid(9DB4B0C8-5320-4CFC-AD76-493FDAD0E594)]
            interface IPdfPage : IInspectable
            {
                [overload("RenderToStreamAsync")] HRESULT RenderToStreamAsync([in] Windows.Storage.Streams.IRandomAccessStream* outputStream, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                [overload("RenderToStreamAsync")] HRESULT RenderWithOptionsToStreamAsync([in] Windows.Storage.Streams.IRandomAccessStream* outputStream, [in] Windows.Data.Pdf.PdfPageRenderOptions* options, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                HRESULT PreparePageAsync([out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                [propget] HRESULT Index([out] [retval] UINT32* value);
                [propget] HRESULT Size([out] [retval] Windows.Foundation.Size* value);
                [propget] HRESULT Dimensions([out] [retval] Windows.Data.Pdf.PdfPageDimensions** value);
                [propget] HRESULT Rotation([out] [retval] Windows.Data.Pdf.PdfPageRotation* value);
                [propget] HRESULT PreferredZoom([out] [retval] FLOAT* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Data.Pdf.PdfPageDimensions)]
            [uuid(22170471-313E-44E8-835D-63A3E7624A10)]
            interface IPdfPageDimensions : IInspectable
            {
                [propget] HRESULT MediaBox([out] [retval] Windows.Foundation.Rect* value);
                [propget] HRESULT CropBox([out] [retval] Windows.Foundation.Rect* value);
                [propget] HRESULT BleedBox([out] [retval] Windows.Foundation.Rect* value);
                [propget] HRESULT TrimBox([out] [retval] Windows.Foundation.Rect* value);
                [propget] HRESULT ArtBox([out] [retval] Windows.Foundation.Rect* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Data.Pdf.PdfPageRenderOptions)]
            [uuid(3C98056F-B7CF-4C29-9A04-52D90267F425)]
            interface IPdfPageRenderOptions : IInspectable
            {
                [propget] HRESULT SourceRect([out] [retval] Windows.Foundation.Rect* value);
                [propput] HRESULT SourceRect([in] Windows.Foundation.Rect value);
                [propget] HRESULT DestinationWidth([out] [retval] UINT32* value);
                [propput] HRESULT DestinationWidth([in] UINT32 value);
                [propget] HRESULT DestinationHeight([out] [retval] UINT32* value);
                [propput] HRESULT DestinationHeight([in] UINT32 value);
                [propget] HRESULT BackgroundColor([out] [retval] Windows.UI.Color* value);
                [propput] HRESULT BackgroundColor([in] Windows.UI.Color value);
                [propget] HRESULT IsIgnoringHighContrast([out] [retval] boolean* value);
                [propput] HRESULT IsIgnoringHighContrast([in] boolean value);
                [propget] HRESULT BitmapEncoderId([out] [retval] GUID* value);
                [propput] HRESULT BitmapEncoderId([in] GUID value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Data.Pdf.IPdfDocumentStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            runtimeclass PdfDocument
            {
                [default] interface Windows.Data.Pdf.IPdfDocument;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass PdfPage
            {
                [default] interface Windows.Data.Pdf.IPdfPage;
                interface Windows.Foundation.IClosable;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass PdfPageDimensions
            {
                [default] interface Windows.Data.Pdf.IPdfPageDimensions;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass PdfPageRenderOptions
            {
                [default] interface Windows.Data.Pdf.IPdfPageRenderOptions;
            }
        }
    }
}
