//
// 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.Storage.Streams.idl";
import "Windows.UI.Xaml.idl";
import "Windows.UI.Xaml.Media.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(__windows2Estorage2Estreams_h__)")
cpp_quote("#include <Windows.Storage.Streams.h>")
cpp_quote("#endif // !defined(__windows2Estorage2Estreams_h__)")
cpp_quote("#if !defined(__windows2Eui2Examl_h__)")
cpp_quote("#include <Windows.UI.Xaml.h>")
cpp_quote("#endif // !defined(__windows2Eui2Examl_h__)")
cpp_quote("#if !defined(__windows2Eui2Examl2Emedia_h__)")
cpp_quote("#include <Windows.UI.Xaml.Media.h>")
cpp_quote("#endif // !defined(__windows2Eui2Examl2Emedia_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

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

        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IBuffer;

            interface IRandomAccessStream;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Xaml
        {
            runtimeclass DependencyProperty;

            delegate ExceptionRoutedEventHandler;

            delegate RoutedEventHandler;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Xaml
        {
            namespace Media
            {
                namespace Imaging
                {
                    typedef enum BitmapCreateOptions BitmapCreateOptions;

                    delegate DownloadProgressEventHandler;

                    interface IBitmapSource;

                    interface IBitmapSourceStatics;

                    interface IBitmapSourceFactory;

                    interface IWriteableBitmap;

                    interface IWriteableBitmapFactory;

                    interface ISurfaceImageSource;

                    interface ISurfaceImageSourceFactory;

                    interface IVirtualSurfaceImageSource;

                    interface IVirtualSurfaceImageSourceFactory;

                    interface IBitmapImage;

                    interface IBitmapImageStatics;

                    interface IBitmapImageFactory;

                    interface IDownloadProgressEventArgs;

                    runtimeclass DownloadProgressEventArgs;

                    runtimeclass BitmapSource;

                    runtimeclass WriteableBitmap;

                    runtimeclass SurfaceImageSource;

                    runtimeclass VirtualSurfaceImageSource;

                    runtimeclass BitmapImage;
                }
            }
        }
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace UI
    {
        namespace Xaml
        {
            namespace Media
            {
                namespace Imaging
                {
                    [flags]
                    [version(0x06020000)]
                    enum BitmapCreateOptions
                    {
                        None             = 0x0,
                        IgnoreImageCache = 0x8
                    };

                    [uuid(1ABAEE23-74EE-4CC7-99BA-B171E3CDA61E)]
                    [version(0x06020000)]
                    delegate
                        HRESULT DownloadProgressEventHandler([in] IInspectable* sender, [in] Windows.UI.Xaml.Media.Imaging.DownloadProgressEventArgs* e);

                    [uuid(23D86411-202F-41B2-8C5B-A8A3B333800B)]
                    [exclusiveto(Windows.UI.Xaml.Media.Imaging.BitmapSource)]
                    [version(0x06020000)]
                    interface IBitmapSource : IInspectable
                    {
                        [propget] HRESULT PixelWidth([out] [retval] INT32* value);
                        [propget] HRESULT PixelHeight([out] [retval] INT32* value);
                        HRESULT SetSource([in] Windows.Storage.Streams.IRandomAccessStream* streamSource);
                        HRESULT SetSourceAsync([in] Windows.Storage.Streams.IRandomAccessStream* streamSource, [out] [retval] Windows.Foundation.IAsyncAction** returnValue);
                    }

                    [uuid(9A9C9981-827B-4E51-891B-8A15B511842D)]
                    [version(0x06020000)]
                    [exclusiveto(Windows.UI.Xaml.Media.Imaging.BitmapSource)]
                    interface IBitmapSourceStatics : IInspectable
                    {
                        [propget] HRESULT PixelWidthProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                        [propget] HRESULT PixelHeightProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                    }

                    [uuid(E240420E-D4A7-49A4-A0B4-A59FDD77E508)]
                    [version(0x06020000)]
                    [exclusiveto(Windows.UI.Xaml.Media.Imaging.BitmapSource)]
                    interface IBitmapSourceFactory : IInspectable
                    {
                        HRESULT CreateInstance([in] IInspectable* outer, [out] IInspectable** inner, [out] [retval] Windows.UI.Xaml.Media.Imaging.BitmapSource** instance);
                    }

                    [uuid(BF0B7E6F-DF7C-4A85-8413-A1216285835C)]
                    [exclusiveto(Windows.UI.Xaml.Media.Imaging.WriteableBitmap)]
                    [version(0x06020000)]
                    interface IWriteableBitmap : IInspectable
                    {
                        [propget] HRESULT PixelBuffer([out] [retval] Windows.Storage.Streams.IBuffer** value);
                        HRESULT Invalidate();
                    }

                    [uuid(5563EBB1-3EF2-42C5-9C6D-1CF5DCC041FF)]
                    [exclusiveto(Windows.UI.Xaml.Media.Imaging.WriteableBitmap)]
                    [version(0x06020000)]
                    interface IWriteableBitmapFactory : IInspectable
                    {
                        HRESULT CreateInstanceWithDimensions([in] INT32 pixelWidth, [in] INT32 pixelHeight, [out] [retval] Windows.UI.Xaml.Media.Imaging.WriteableBitmap** instance);
                    }

                    [uuid(62F7D416-C714-4C4C-8273-F839BC58135C)]
                    [version(0x06020000)]
                    [exclusiveto(Windows.UI.Xaml.Media.Imaging.SurfaceImageSource)]
                    interface ISurfaceImageSource : IInspectable
                    {
                    }

                    [uuid(3AB2212A-EF65-4A5F-BFAC-73993E8C12C9)]
                    [exclusiveto(Windows.UI.Xaml.Media.Imaging.SurfaceImageSource)]
                    [version(0x06020000)]
                    interface ISurfaceImageSourceFactory : IInspectable
                    {
                        HRESULT CreateInstanceWithDimensions([in] INT32 pixelWidth, [in] INT32 pixelHeight, [in] IInspectable* outer, [out] IInspectable** inner, [out] [retval] Windows.UI.Xaml.Media.Imaging.SurfaceImageSource** instance);
                        HRESULT CreateInstanceWithDimensionsAndOpacity([in] INT32 pixelWidth, [in] INT32 pixelHeight, [in] boolean isOpaque, [in] IInspectable* outer, [out] IInspectable** inner, [out] [retval] Windows.UI.Xaml.Media.Imaging.SurfaceImageSource** instance);
                    }

                    [uuid(4A711FEA-BFAC-11E0-A06A-9DE44724019B)]
                    [exclusiveto(Windows.UI.Xaml.Media.Imaging.VirtualSurfaceImageSource)]
                    [version(0x06020000)]
                    interface IVirtualSurfaceImageSource : IInspectable
                    {
                    }

                    [uuid(3AB2212A-BFAC-11E0-8A92-69E44724019B)]
                    [exclusiveto(Windows.UI.Xaml.Media.Imaging.VirtualSurfaceImageSource)]
                    [version(0x06020000)]
                    interface IVirtualSurfaceImageSourceFactory : IInspectable
                    {
                        HRESULT CreateInstanceWithDimensions([in] INT32 pixelWidth, [in] INT32 pixelHeight, [out] [retval] Windows.UI.Xaml.Media.Imaging.VirtualSurfaceImageSource** instance);
                        HRESULT CreateInstanceWithDimensionsAndOpacity([in] INT32 pixelWidth, [in] INT32 pixelHeight, [in] boolean isOpaque, [out] [retval] Windows.UI.Xaml.Media.Imaging.VirtualSurfaceImageSource** instance);
                    }

                    [uuid(31AF3271-E3B4-442D-A341-4C0226B2725B)]
                    [exclusiveto(Windows.UI.Xaml.Media.Imaging.BitmapImage)]
                    [version(0x06020000)]
                    interface IBitmapImage : IInspectable
                    {
                        [propget] HRESULT CreateOptions([out] [retval] Windows.UI.Xaml.Media.Imaging.BitmapCreateOptions* value);
                        [propput] HRESULT CreateOptions([in] Windows.UI.Xaml.Media.Imaging.BitmapCreateOptions value);
                        [propget] HRESULT UriSource([out] [retval] Windows.Foundation.Uri** value);
                        [propput] HRESULT UriSource([in] Windows.Foundation.Uri* value);
                        [propget] HRESULT DecodePixelWidth([out] [retval] INT32* value);
                        [propput] HRESULT DecodePixelWidth([in] INT32 value);
                        [propget] HRESULT DecodePixelHeight([out] [retval] INT32* value);
                        [propput] HRESULT DecodePixelHeight([in] INT32 value);
                        [eventadd] HRESULT DownloadProgress([in] Windows.UI.Xaml.Media.Imaging.DownloadProgressEventHandler* value, [out] [retval] EventRegistrationToken* token);
                        [eventremove] HRESULT DownloadProgress([in] EventRegistrationToken token);
                        [eventadd] HRESULT ImageOpened([in] Windows.UI.Xaml.RoutedEventHandler* value, [out] [retval] EventRegistrationToken* token);
                        [eventremove] HRESULT ImageOpened([in] EventRegistrationToken token);
                        [eventadd] HRESULT ImageFailed([in] Windows.UI.Xaml.ExceptionRoutedEventHandler* value, [out] [retval] EventRegistrationToken* token);
                        [eventremove] HRESULT ImageFailed([in] EventRegistrationToken token);
                    }

                    [uuid(9E282143-70E8-437C-9FA4-2CBF295CFF84)]
                    [exclusiveto(Windows.UI.Xaml.Media.Imaging.BitmapImage)]
                    [version(0x06020000)]
                    interface IBitmapImageStatics : IInspectable
                    {
                        [propget] HRESULT CreateOptionsProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                        [propget] HRESULT UriSourceProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                        [propget] HRESULT DecodePixelWidthProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                        [propget] HRESULT DecodePixelHeightProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                    }

                    [uuid(C9132978-4810-4E5E-8087-03671EE60D85)]
                    [version(0x06020000)]
                    [exclusiveto(Windows.UI.Xaml.Media.Imaging.BitmapImage)]
                    interface IBitmapImageFactory : IInspectable
                    {
                        HRESULT CreateInstanceWithUriSource([in] Windows.Foundation.Uri* uriSource, [out] [retval] Windows.UI.Xaml.Media.Imaging.BitmapImage** instance);
                    }

                    [uuid(7311E0D4-FE94-4E70-9B90-CDD47AC23AFB)]
                    [version(0x06020000)]
                    [exclusiveto(Windows.UI.Xaml.Media.Imaging.DownloadProgressEventArgs)]
                    interface IDownloadProgressEventArgs : IInspectable
                    {
                        [propget] HRESULT Progress([out] [retval] INT32* value);
                        [propput] HRESULT Progress([in] INT32 value);
                    }

                    [version(0x06020000)]
                    [marshaling_behavior(agile)]
                    [threading(both)]
                    runtimeclass DownloadProgressEventArgs
                    {
                        [default] interface Windows.UI.Xaml.Media.Imaging.IDownloadProgressEventArgs;
                    }

                    [composable(Windows.UI.Xaml.Media.Imaging.IBitmapSourceFactory, protected, 0x06020000)]
                    [threading(both)]
                    [marshaling_behavior(agile)]
                    [static(Windows.UI.Xaml.Media.Imaging.IBitmapSourceStatics, 0x06020000)]
                    [version(0x06020000)]
                    runtimeclass BitmapSource : Windows.UI.Xaml.Media.ImageSource
                    {
                        [default] interface Windows.UI.Xaml.Media.Imaging.IBitmapSource;
                    }

                    [marshaling_behavior(agile)]
                    [version(0x06020000)]
                    [activatable(Windows.UI.Xaml.Media.Imaging.IWriteableBitmapFactory, 0x06020000)]
                    [threading(both)]
                    runtimeclass WriteableBitmap : Windows.UI.Xaml.Media.Imaging.BitmapSource
                    {
                        [default] interface Windows.UI.Xaml.Media.Imaging.IWriteableBitmap;
                    }

                    [marshaling_behavior(agile)]
                    [version(0x06020000)]
                    [composable(Windows.UI.Xaml.Media.Imaging.ISurfaceImageSourceFactory, public, 0x06020000)]
                    [threading(both)]
                    runtimeclass SurfaceImageSource : Windows.UI.Xaml.Media.ImageSource
                    {
                        [default] interface Windows.UI.Xaml.Media.Imaging.ISurfaceImageSource;
                    }

                    [marshaling_behavior(agile)]
                    [threading(both)]
                    [version(0x06020000)]
                    [activatable(Windows.UI.Xaml.Media.Imaging.IVirtualSurfaceImageSourceFactory, 0x06020000)]
                    runtimeclass VirtualSurfaceImageSource : Windows.UI.Xaml.Media.Imaging.SurfaceImageSource
                    {
                        [default] interface Windows.UI.Xaml.Media.Imaging.IVirtualSurfaceImageSource;
                    }

                    [activatable(Windows.UI.Xaml.Media.Imaging.IBitmapImageFactory, 0x06020000)]
                    [static(Windows.UI.Xaml.Media.Imaging.IBitmapImageStatics, 0x06020000)]
                    [activatable(0x06020000)]
                    [marshaling_behavior(agile)]
                    [threading(both)]
                    [version(0x06020000)]
                    runtimeclass BitmapImage : Windows.UI.Xaml.Media.Imaging.BitmapSource
                    {
                        [default] interface Windows.UI.Xaml.Media.Imaging.IBitmapImage;
                    }
                }
            }
        }
    }
}
