//
// 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";
// 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(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

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

        interface IClosable;

        typedef enum PropertyType PropertyType;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IContentTypeProvider;

            interface IInputStream;

            interface IOutputStream;

            interface IRandomAccessStream;

            interface IRandomAccessStreamWithContentType;
        }
    }
}
namespace Windows
{
    namespace Graphics
    {
        namespace Imaging
        {
            typedef enum BitmapPixelFormat BitmapPixelFormat;

            typedef enum BitmapAlphaMode BitmapAlphaMode;

            typedef enum BitmapInterpolationMode BitmapInterpolationMode;

            typedef enum BitmapFlip BitmapFlip;

            typedef enum BitmapRotation BitmapRotation;

            typedef enum ColorManagementMode ColorManagementMode;

            typedef enum ExifOrientationMode ExifOrientationMode;

            typedef enum PngFilterMode PngFilterMode;

            typedef enum TiffCompressionMode TiffCompressionMode;

            typedef enum JpegSubsamplingMode JpegSubsamplingMode;

            typedef struct BitmapBounds BitmapBounds;

            interface IBitmapTransform;

            interface IBitmapTypedValue;

            interface IBitmapTypedValueFactory;

            interface IBitmapPropertiesView;

            interface IBitmapProperties;

            interface IPixelDataProvider;

            interface IBitmapFrame;

            interface IBitmapCodecInformation;

            interface IBitmapDecoderStatics;

            interface IBitmapDecoder;

            interface IBitmapEncoderStatics;

            interface IBitmapEncoder;

            runtimeclass BitmapTransform;

            runtimeclass BitmapTypedValue;

            runtimeclass BitmapPropertySet;

            runtimeclass BitmapPropertiesView;

            runtimeclass BitmapProperties;

            runtimeclass PixelDataProvider;

            runtimeclass ImageStream;

            runtimeclass BitmapFrame;

            runtimeclass BitmapCodecInformation;

            runtimeclass BitmapDecoder;

            runtimeclass BitmapEncoder;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Graphics
    {
        namespace Imaging
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Graphics.Imaging.BitmapTypedValue*>*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Graphics.Imaging.BitmapCodecInformation*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Graphics.Imaging.BitmapTypedValue*>*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Graphics.Imaging.BitmapCodecInformation*>;

                interface Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Graphics.Imaging.BitmapTypedValue*>;

                interface Windows.Foundation.Collections.IMapView<HSTRING, Windows.Graphics.Imaging.BitmapTypedValue*>;

                interface Windows.Foundation.Collections.IMap<HSTRING, Windows.Graphics.Imaging.BitmapTypedValue*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Graphics.Imaging.BitmapCodecInformation*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Graphics.Imaging.BitmapDecoder*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Graphics.Imaging.BitmapEncoder*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Graphics.Imaging.BitmapFrame*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Graphics.Imaging.BitmapPropertySet*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Graphics.Imaging.ImageStream*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Graphics.Imaging.PixelDataProvider*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Graphics
    {
        namespace Imaging
        {
            [version(0x06020000)]
            enum BitmapPixelFormat
            {
                Unknown = 0,
                Rgba16  = 12,
                Rgba8   = 30,
                Bgra8   = 87
            };

            [version(0x06020000)]
            enum BitmapAlphaMode
            {
                Premultiplied = 0,
                Straight      = 1,
                Ignore        = 2
            };

            [version(0x06020000)]
            enum BitmapInterpolationMode
            {
                NearestNeighbor = 0,
                Linear          = 1,
                Cubic           = 2,
                Fant            = 3
            };

            [version(0x06020000)]
            enum BitmapFlip
            {
                None       = 0,
                Horizontal = 1,
                Vertical   = 2
            };

            [version(0x06020000)]
            enum BitmapRotation
            {
                None                = 0,
                Clockwise90Degrees  = 1,
                Clockwise180Degrees = 2,
                Clockwise270Degrees = 3
            };

            [version(0x06020000)]
            enum ColorManagementMode
            {
                DoNotColorManage  = 0,
                ColorManageToSRgb = 1
            };

            [version(0x06020000)]
            enum ExifOrientationMode
            {
                IgnoreExifOrientation  = 0,
                RespectExifOrientation = 1
            };

            [version(0x06020000)]
            enum PngFilterMode
            {
                Automatic = 0,
                None      = 1,
                Sub       = 2,
                Up        = 3,
                Average   = 4,
                Paeth     = 5,
                Adaptive  = 6
            };

            [version(0x06020000)]
            enum TiffCompressionMode
            {
                Automatic        = 0,
                None             = 1,
                Ccitt3           = 2,
                Ccitt4           = 3,
                Lzw              = 4,
                Rle              = 5,
                Zip              = 6,
                LzwhDifferencing = 7
            };

            [version(0x06020000)]
            enum JpegSubsamplingMode
            {
                Default  = 0,
                Y4Cb2Cr0 = 1,
                Y4Cb2Cr2 = 2,
                Y4Cb4Cr4 = 3
            };

            [version(0x06020000)]
            struct BitmapBounds
            {
                UINT32 X;
                UINT32 Y;
                UINT32 Width;
                UINT32 Height;
            };

            [uuid(AE755344-E268-4D35-ADCF-E995D31A8D34)]
            [version(0x06020000)]
            [exclusiveto(Windows.Graphics.Imaging.BitmapTransform)]
            interface IBitmapTransform : IInspectable
            {
                [propget] HRESULT ScaledWidth([out] [retval] UINT32* value);
                [propput] HRESULT ScaledWidth([in] UINT32 value);
                [propget] HRESULT ScaledHeight([out] [retval] UINT32* value);
                [propput] HRESULT ScaledHeight([in] UINT32 value);
                [propget] HRESULT InterpolationMode([out] [retval] Windows.Graphics.Imaging.BitmapInterpolationMode* value);
                [propput] HRESULT InterpolationMode([in] Windows.Graphics.Imaging.BitmapInterpolationMode value);
                [propget] HRESULT Flip([out] [retval] Windows.Graphics.Imaging.BitmapFlip* value);
                [propput] HRESULT Flip([in] Windows.Graphics.Imaging.BitmapFlip value);
                [propget] HRESULT Rotation([out] [retval] Windows.Graphics.Imaging.BitmapRotation* value);
                [propput] HRESULT Rotation([in] Windows.Graphics.Imaging.BitmapRotation value);
                [propget] HRESULT Bounds([out] [retval] Windows.Graphics.Imaging.BitmapBounds* value);
                [propput] HRESULT Bounds([in] Windows.Graphics.Imaging.BitmapBounds value);
            }

            [uuid(CD8044A9-2443-4000-B0CD-79316C56F589)]
            [version(0x06020000)]
            [exclusiveto(Windows.Graphics.Imaging.BitmapTypedValue)]
            interface IBitmapTypedValue : IInspectable
            {
                [propget] HRESULT Value([out] [retval] IInspectable** value);
                [propget] HRESULT Type([out] [retval] Windows.Foundation.PropertyType* value);
            }

            [uuid(92DBB599-CE13-46BB-9545-CB3A3F63EB8B)]
            [version(0x06020000)]
            [exclusiveto(Windows.Graphics.Imaging.BitmapTypedValue)]
            interface IBitmapTypedValueFactory : IInspectable
            {
                HRESULT Create([in] IInspectable* value, [in] Windows.Foundation.PropertyType type, [out] [retval] Windows.Graphics.Imaging.BitmapTypedValue** bitmapTypedValue);
            }

            [uuid(7E0FE87A-3A70-48F8-9C55-196CF5A545F5)]
            [version(0x06020000)]
            interface IBitmapPropertiesView : IInspectable
            {
                HRESULT GetPropertiesAsync([in] Windows.Foundation.Collections.IIterable<HSTRING>* propertiesToRetrieve, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Graphics.Imaging.BitmapPropertySet*>** asyncInfo);
            }

            [uuid(EA9F4F1B-B505-4450-A4D1-E8CA94529D8D)]
            [exclusiveto(Windows.Graphics.Imaging.BitmapProperties)]
            [version(0x06020000)]
            interface IBitmapProperties : IInspectable
                requires
                    Windows.Graphics.Imaging.IBitmapPropertiesView
            {
                HRESULT SetPropertiesAsync([in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Graphics.Imaging.BitmapTypedValue*>*>* propertiesToSet, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
            }

            [uuid(DD831F25-185C-4595-9FB9-CCBE6EC18A6F)]
            [exclusiveto(Windows.Graphics.Imaging.PixelDataProvider)]
            [version(0x06020000)]
            interface IPixelDataProvider : IInspectable
            {
                HRESULT DetachPixelData([out] UINT32* __pixelDataSize, [out] [retval] [size_is(, *__pixelDataSize)] BYTE** pixelData);
            }

            [uuid(72A49A1C-8081-438D-91BC-94ECFC8185C6)]
            [version(0x06020000)]
            interface IBitmapFrame : IInspectable
            {
                HRESULT GetThumbnailAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Graphics.Imaging.ImageStream*>** asyncInfo);
                [propget] HRESULT BitmapProperties([out] [retval] Windows.Graphics.Imaging.BitmapPropertiesView** value);
                [propget] HRESULT BitmapPixelFormat([out] [retval] Windows.Graphics.Imaging.BitmapPixelFormat* value);
                [propget] HRESULT BitmapAlphaMode([out] [retval] Windows.Graphics.Imaging.BitmapAlphaMode* value);
                [propget] HRESULT DpiX([out] [retval] DOUBLE* value);
                [propget] HRESULT DpiY([out] [retval] DOUBLE* value);
                [propget] HRESULT PixelWidth([out] [retval] UINT32* value);
                [propget] HRESULT PixelHeight([out] [retval] UINT32* value);
                [propget] HRESULT OrientedPixelWidth([out] [retval] UINT32* value);
                [propget] HRESULT OrientedPixelHeight([out] [retval] UINT32* value);
                [overload("GetPixelDataAsync")] HRESULT GetPixelDataAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Graphics.Imaging.PixelDataProvider*>** asyncInfo);
                [overload("GetPixelDataAsync")] HRESULT GetPixelDataTransformedAsync([in] Windows.Graphics.Imaging.BitmapPixelFormat pixelFormat, [in] Windows.Graphics.Imaging.BitmapAlphaMode alphaMode, [in] Windows.Graphics.Imaging.BitmapTransform* transform, [in] Windows.Graphics.Imaging.ExifOrientationMode exifOrientationMode, [in] Windows.Graphics.Imaging.ColorManagementMode colorManagementMode, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Graphics.Imaging.PixelDataProvider*>** asyncInfo);
            }

            [uuid(400CAAF2-C4B0-4392-A3B0-6F6F9BA95CB4)]
            [version(0x06020000)]
            [exclusiveto(Windows.Graphics.Imaging.BitmapCodecInformation)]
            interface IBitmapCodecInformation : IInspectable
            {
                [propget] HRESULT CodecId([out] [retval] GUID* value);
                [propget] HRESULT FileExtensions([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                [propget] HRESULT FriendlyName([out] [retval] HSTRING* value);
                [propget] HRESULT MimeTypes([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
            }

            [uuid(438CCB26-BCEF-4E95-BAD6-23A822E58D01)]
            [exclusiveto(Windows.Graphics.Imaging.BitmapDecoder)]
            [version(0x06020000)]
            interface IBitmapDecoderStatics : IInspectable
            {
                [propget] HRESULT BmpDecoderId([out] [retval] GUID* value);
                [propget] HRESULT JpegDecoderId([out] [retval] GUID* value);
                [propget] HRESULT PngDecoderId([out] [retval] GUID* value);
                [propget] HRESULT TiffDecoderId([out] [retval] GUID* value);
                [propget] HRESULT GifDecoderId([out] [retval] GUID* value);
                [propget] HRESULT JpegXRDecoderId([out] [retval] GUID* value);
                [propget] HRESULT IcoDecoderId([out] [retval] GUID* value);
                HRESULT GetDecoderInformationEnumerator([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Graphics.Imaging.BitmapCodecInformation*>** decoderInformationEnumerator);
                [overload("CreateAsync")] HRESULT CreateAsync([in] Windows.Storage.Streams.IRandomAccessStream* stream, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Graphics.Imaging.BitmapDecoder*>** asyncInfo);
                [overload("CreateAsync")] HRESULT CreateWithIdAsync([in] GUID decoderId, [in] Windows.Storage.Streams.IRandomAccessStream* stream, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Graphics.Imaging.BitmapDecoder*>** asyncInfo);
            }

            [uuid(ACEF22BA-1D74-4C91-9DFC-9620745233E6)]
            [exclusiveto(Windows.Graphics.Imaging.BitmapDecoder)]
            [version(0x06020000)]
            interface IBitmapDecoder : IInspectable
            {
                [propget] HRESULT BitmapContainerProperties([out] [retval] Windows.Graphics.Imaging.BitmapPropertiesView** value);
                [propget] HRESULT DecoderInformation([out] [retval] Windows.Graphics.Imaging.BitmapCodecInformation** value);
                [propget] HRESULT FrameCount([out] [retval] UINT32* value);
                HRESULT GetPreviewAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Graphics.Imaging.ImageStream*>** asyncInfo);
                HRESULT GetFrameAsync([in] UINT32 frameIndex, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Graphics.Imaging.BitmapFrame*>** asyncInfo);
            }

            [uuid(A74356A7-A4E4-4EB9-8E40-564DE7E1CCB2)]
            [version(0x06020000)]
            [exclusiveto(Windows.Graphics.Imaging.BitmapEncoder)]
            interface IBitmapEncoderStatics : IInspectable
            {
                [propget] HRESULT BmpEncoderId([out] [retval] GUID* value);
                [propget] HRESULT JpegEncoderId([out] [retval] GUID* value);
                [propget] HRESULT PngEncoderId([out] [retval] GUID* value);
                [propget] HRESULT TiffEncoderId([out] [retval] GUID* value);
                [propget] HRESULT GifEncoderId([out] [retval] GUID* value);
                [propget] HRESULT JpegXREncoderId([out] [retval] GUID* value);
                HRESULT GetEncoderInformationEnumerator([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Graphics.Imaging.BitmapCodecInformation*>** encoderInformationEnumerator);
                [overload("CreateAsync")] HRESULT CreateAsync([in] GUID encoderId, [in] Windows.Storage.Streams.IRandomAccessStream* stream, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Graphics.Imaging.BitmapEncoder*>** asyncInfo);
                [overload("CreateAsync")] HRESULT CreateWithEncodingOptionsAsync([in] GUID encoderId, [in] Windows.Storage.Streams.IRandomAccessStream* stream, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Graphics.Imaging.BitmapTypedValue*>*>* encodingOptions, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Graphics.Imaging.BitmapEncoder*>** asyncInfo);
                HRESULT CreateForTranscodingAsync([in] Windows.Storage.Streams.IRandomAccessStream* stream, [in] Windows.Graphics.Imaging.BitmapDecoder* bitmapDecoder, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Graphics.Imaging.BitmapEncoder*>** asyncInfo);
                HRESULT CreateForInPlacePropertyEncodingAsync([in] Windows.Graphics.Imaging.BitmapDecoder* bitmapDecoder, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Graphics.Imaging.BitmapEncoder*>** asyncInfo);
            }

            [uuid(2BC468E3-E1F8-4B54-95E8-32919551CE62)]
            [version(0x06020000)]
            [exclusiveto(Windows.Graphics.Imaging.BitmapEncoder)]
            interface IBitmapEncoder : IInspectable
            {
                [propget] HRESULT EncoderInformation([out] [retval] Windows.Graphics.Imaging.BitmapCodecInformation** value);
                [propget] HRESULT BitmapProperties([out] [retval] Windows.Graphics.Imaging.BitmapProperties** value);
                [propget] HRESULT BitmapContainerProperties([out] [retval] Windows.Graphics.Imaging.BitmapProperties** value);
                [propget] HRESULT IsThumbnailGenerated([out] [retval] boolean* value);
                [propput] HRESULT IsThumbnailGenerated([in] boolean value);
                [propget] HRESULT GeneratedThumbnailWidth([out] [retval] UINT32* value);
                [propput] HRESULT GeneratedThumbnailWidth([in] UINT32 value);
                [propget] HRESULT GeneratedThumbnailHeight([out] [retval] UINT32* value);
                [propput] HRESULT GeneratedThumbnailHeight([in] UINT32 value);
                [propget] HRESULT BitmapTransform([out] [retval] Windows.Graphics.Imaging.BitmapTransform** value);
                HRESULT SetPixelData([in] Windows.Graphics.Imaging.BitmapPixelFormat pixelFormat, [in] Windows.Graphics.Imaging.BitmapAlphaMode alphaMode, [in] UINT32 width, [in] UINT32 height, [in] DOUBLE dpiX, [in] DOUBLE dpiY, [range(0x00000000, 0x7FFFFFFF)] [in] UINT32 __pixelsSize, [in] [size_is(__pixelsSize)] BYTE* pixels);
                [overload("GoToNextFrameAsync")] HRESULT GoToNextFrameAsync([out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                [overload("GoToNextFrameAsync")] HRESULT GoToNextFrameWithEncodingOptionsAsync([in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Graphics.Imaging.BitmapTypedValue*>*>* encodingOptions, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                HRESULT FlushAsync([out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
            }

            [version(0x06020000)]
            [marshaling_behavior(agile)]
            [activatable(0x06020000)]
            runtimeclass BitmapTransform
            {
                [default] interface Windows.Graphics.Imaging.IBitmapTransform;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06020000)]
            [activatable(Windows.Graphics.Imaging.IBitmapTypedValueFactory, 0x06020000)]
            runtimeclass BitmapTypedValue
            {
                [default] interface Windows.Graphics.Imaging.IBitmapTypedValue;
            }

            [version(0x06020000)]
            [threading(both)]
            [marshaling_behavior(agile)]
            [activatable(0x06020000)]
            runtimeclass BitmapPropertySet
            {
                [default] interface Windows.Foundation.Collections.IMap<HSTRING, Windows.Graphics.Imaging.BitmapTypedValue*>;
                interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Graphics.Imaging.BitmapTypedValue*>*>;
            }

            [version(0x06020000)]
            [marshaling_behavior(agile)]
            runtimeclass BitmapPropertiesView
            {
                [default] interface Windows.Graphics.Imaging.IBitmapPropertiesView;
            }

            [marshaling_behavior(agile)]
            [version(0x06020000)]
            runtimeclass BitmapProperties
            {
                [default] interface Windows.Graphics.Imaging.IBitmapProperties;
                interface Windows.Graphics.Imaging.IBitmapPropertiesView;
            }

            [marshaling_behavior(agile)]
            [version(0x06020000)]
            runtimeclass PixelDataProvider
            {
                [default] interface Windows.Graphics.Imaging.IPixelDataProvider;
            }

            [version(0x06020000)]
            [marshaling_behavior(agile)]
            runtimeclass ImageStream
            {
                [default] interface Windows.Storage.Streams.IRandomAccessStreamWithContentType;
                interface Windows.Storage.Streams.IRandomAccessStream;
                interface Windows.Foundation.IClosable;
                interface Windows.Storage.Streams.IInputStream;
                interface Windows.Storage.Streams.IOutputStream;
                interface Windows.Storage.Streams.IContentTypeProvider;
            }

            [version(0x06020000)]
            [marshaling_behavior(agile)]
            runtimeclass BitmapFrame
            {
                [default] interface Windows.Graphics.Imaging.IBitmapFrame;
            }

            [marshaling_behavior(agile)]
            [version(0x06020000)]
            runtimeclass BitmapCodecInformation
            {
                [default] interface Windows.Graphics.Imaging.IBitmapCodecInformation;
            }

            [static(Windows.Graphics.Imaging.IBitmapDecoderStatics, 0x06020000)]
            [marshaling_behavior(agile)]
            [version(0x06020000)]
            runtimeclass BitmapDecoder
            {
                [default] interface Windows.Graphics.Imaging.IBitmapDecoder;
                interface Windows.Graphics.Imaging.IBitmapFrame;
            }

            [static(Windows.Graphics.Imaging.IBitmapEncoderStatics, 0x06020000)]
            [marshaling_behavior(agile)]
            [version(0x06020000)]
            runtimeclass BitmapEncoder
            {
                [default] interface Windows.Graphics.Imaging.IBitmapEncoder;
            }
        }
    }
}
