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

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Graphics
    {
        namespace Printing
        {
            interface IPrintDocumentSource;

            runtimeclass PrintTaskOptions;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Xaml
        {
            runtimeclass DependencyProperty;

            runtimeclass UIElement;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Xaml
        {
            namespace Printing
            {
                typedef enum PreviewPageCountType PreviewPageCountType;

                delegate AddPagesEventHandler;

                delegate GetPreviewPageEventHandler;

                delegate PaginateEventHandler;

                interface IAddPagesEventArgs;

                interface IGetPreviewPageEventArgs;

                interface IPaginateEventArgs;

                interface IPrintDocument;

                interface IPrintDocumentFactory;

                interface IPrintDocumentStatics;

                runtimeclass AddPagesEventArgs;

                runtimeclass GetPreviewPageEventArgs;

                runtimeclass PaginateEventArgs;

                runtimeclass PrintDocument;
            }
        }
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace UI
    {
        namespace Xaml
        {
            namespace Printing
            {
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                enum PreviewPageCountType
                {
                    Final        = 0,
                    Intermediate = 1
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [uuid(D4B57970-57A0-4209-847C-C093B54BC729)]
                delegate
                    HRESULT AddPagesEventHandler([in] IInspectable* sender, [in] Windows.UI.Xaml.Printing.AddPagesEventArgs* e);

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [uuid(CCB3E9ED-9C11-4E50-AB49-E98086BBFDEF)]
                delegate
                    HRESULT GetPreviewPageEventHandler([in] IInspectable* sender, [in] Windows.UI.Xaml.Printing.GetPreviewPageEventArgs* e);

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [uuid(0CC05B61-811B-4A32-9965-13EB78DBB01B)]
                delegate
                    HRESULT PaginateEventHandler([in] IInspectable* sender, [in] Windows.UI.Xaml.Printing.PaginateEventArgs* e);

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.UI.Xaml.Printing.AddPagesEventArgs)]
                [uuid(E2E52BE5-056C-4420-9795-CB3526CE0C20)]
                interface IAddPagesEventArgs : IInspectable
                {
                    [propget] HRESULT PrintTaskOptions([out] [retval] Windows.Graphics.Printing.PrintTaskOptions** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.UI.Xaml.Printing.GetPreviewPageEventArgs)]
                [uuid(A43D703D-DEA9-4DF6-A7ED-35049CD485C7)]
                interface IGetPreviewPageEventArgs : IInspectable
                {
                    [propget] HRESULT PageNumber([out] [retval] INT32* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.UI.Xaml.Printing.PaginateEventArgs)]
                [uuid(ED945FD6-79AB-42B7-930A-3D6E09011D21)]
                interface IPaginateEventArgs : IInspectable
                {
                    [propget] HRESULT PrintTaskOptions([out] [retval] Windows.Graphics.Printing.PrintTaskOptions** value);
                    [propget] HRESULT CurrentPreviewPageNumber([out] [retval] INT32* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.UI.Xaml.Printing.PrintDocument)]
                [uuid(E44327C3-A999-485B-B1D8-72DC517821E6)]
                interface IPrintDocument : IInspectable
                {
                    [propget] HRESULT DocumentSource([out] [retval] Windows.Graphics.Printing.IPrintDocumentSource** value);
                    [eventadd] HRESULT Paginate([in] Windows.UI.Xaml.Printing.PaginateEventHandler* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT Paginate([in] EventRegistrationToken token);
                    [eventadd] HRESULT GetPreviewPage([in] Windows.UI.Xaml.Printing.GetPreviewPageEventHandler* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT GetPreviewPage([in] EventRegistrationToken token);
                    [eventadd] HRESULT AddPages([in] Windows.UI.Xaml.Printing.AddPagesEventHandler* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT AddPages([in] EventRegistrationToken token);
                    HRESULT AddPage([in] Windows.UI.Xaml.UIElement* pageVisual);
                    HRESULT AddPagesComplete();
                    HRESULT SetPreviewPageCount([in] INT32 count, [in] Windows.UI.Xaml.Printing.PreviewPageCountType type);
                    HRESULT SetPreviewPage([in] INT32 pageNumber, [in] Windows.UI.Xaml.UIElement* pageVisual);
                    HRESULT InvalidatePreview();
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.UI.Xaml.Printing.PrintDocument)]
                [uuid(FB87B18F-2606-4A2F-99D4-A7CDBC35D7C7)]
                interface IPrintDocumentFactory : IInspectable
                {
                    HRESULT CreateInstance([in] IInspectable* baseInterface, [out] IInspectable** innerInterface, [out] [retval] Windows.UI.Xaml.Printing.PrintDocument** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.UI.Xaml.Printing.PrintDocument)]
                [uuid(FD970A3C-B152-49E0-A6BD-6AA6477E43C7)]
                interface IPrintDocumentStatics : IInspectable
                {
                    [propget] HRESULT DocumentSourceProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                }

                [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass AddPagesEventArgs
                {
                    [default] interface Windows.UI.Xaml.Printing.IAddPagesEventArgs;
                }

                [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass GetPreviewPageEventArgs
                {
                    [default] interface Windows.UI.Xaml.Printing.IGetPreviewPageEventArgs;
                }

                [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass PaginateEventArgs
                {
                    [default] interface Windows.UI.Xaml.Printing.IPaginateEventArgs;
                }

                [composable(Windows.UI.Xaml.Printing.IPrintDocumentFactory, public, Windows.Foundation.UniversalApiContract, 1.0)]
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.UI.Xaml.Printing.IPrintDocumentStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass PrintDocument : Windows.UI.Xaml.DependencyObject
                {
                    [default] interface Windows.UI.Xaml.Printing.IPrintDocument;
                }
            }
        }
    }
}
