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

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

        interface IClosable;

        interface IMemoryBuffer;

        typedef enum PropertyType PropertyType;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Graphics
    {
        namespace DirectX
        {
            namespace Direct3D11
            {
                interface IDirect3DSurface;
            }
        }
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IBuffer;

            interface IContentTypeProvider;

            interface IInputStream;

            interface IOutputStream;

            interface IRandomAccessStream;

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

            typedef enum BitmapBufferAccessMode BitmapBufferAccessMode;

            typedef enum BitmapFlip BitmapFlip;

            typedef enum BitmapInterpolationMode BitmapInterpolationMode;

            typedef enum BitmapPixelFormat BitmapPixelFormat;

            typedef enum BitmapRotation BitmapRotation;

            typedef enum ColorManagementMode ColorManagementMode;

            typedef enum ExifOrientationMode ExifOrientationMode;

            typedef enum JpegSubsamplingMode JpegSubsamplingMode;

            typedef enum PngFilterMode PngFilterMode;

            typedef enum TiffCompressionMode TiffCompressionMode;

            typedef struct BitmapBounds BitmapBounds;

            typedef struct BitmapPlaneDescription BitmapPlaneDescription;

            typedef struct BitmapSize BitmapSize;

            interface IBitmapBuffer;

            interface IBitmapCodecInformation;

            interface IBitmapDecoder;

            interface IBitmapDecoderStatics;

            interface IBitmapEncoder;

            interface IBitmapEncoderStatics;

            interface IBitmapEncoderWithSoftwareBitmap;

            interface IBitmapFrame;

            interface IBitmapFrameWithSoftwareBitmap;

            interface IBitmapProperties;

            interface IBitmapPropertiesView;

            interface IBitmapTransform;

            interface IBitmapTypedValue;

            interface IBitmapTypedValueFactory;

            interface IPixelDataProvider;

            interface ISoftwareBitmap;

            interface ISoftwareBitmapFactory;

            interface ISoftwareBitmapStatics;

            runtimeclass BitmapBuffer;

            runtimeclass BitmapCodecInformation;

            runtimeclass BitmapDecoder;

            runtimeclass BitmapEncoder;

            runtimeclass BitmapFrame;

            runtimeclass BitmapProperties;

            runtimeclass BitmapPropertiesView;

            runtimeclass BitmapPropertySet;

            runtimeclass BitmapTransform;

            runtimeclass BitmapTypedValue;

            runtimeclass ImageStream;

            runtimeclass PixelDataProvider;

            runtimeclass SoftwareBitmap;
        }
    }
}

// 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.IIterable<Windows.Graphics.Imaging.BitmapPixelFormat>;

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

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

                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.IIterator<Windows.Graphics.Imaging.BitmapPixelFormat>;

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

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

                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.Collections.IVectorView<Windows.Graphics.Imaging.BitmapPixelFormat>;

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

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

                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*>;

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

                interface Windows.Foundation.IReference<Windows.Graphics.Imaging.BitmapBounds>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Graphics
    {
        namespace Imaging
        {
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum BitmapAlphaMode
            {
                Premultiplied = 0,
                Straight      = 1,
                Ignore        = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum BitmapBufferAccessMode
            {
                Read      = 0,
                ReadWrite = 1,
                Write     = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum BitmapFlip
            {
                None       = 0,
                Horizontal = 1,
                Vertical   = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum BitmapInterpolationMode
            {
                NearestNeighbor = 0,
                Linear          = 1,
                Cubic           = 2,
                Fant            = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum BitmapPixelFormat
            {
                Unknown = 0,
                Rgba16  = 12,
                Rgba8   = 30,
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                Gray16  = 57,
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                Gray8   = 62,
                Bgra8   = 87,
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                Nv12    = 103,
                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                P010    = 104,
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                Yuy2    = 107
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum BitmapRotation
            {
                None                = 0,
                Clockwise90Degrees  = 1,
                Clockwise180Degrees = 2,
                Clockwise270Degrees = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum ColorManagementMode
            {
                DoNotColorManage  = 0,
                ColorManageToSRgb = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum ExifOrientationMode
            {
                IgnoreExifOrientation  = 0,
                RespectExifOrientation = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum JpegSubsamplingMode
            {
                Default  = 0,
                Y4Cb2Cr0 = 1,
                Y4Cb2Cr2 = 2,
                Y4Cb4Cr4 = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum PngFilterMode
            {
                Automatic = 0,
                None      = 1,
                Sub       = 2,
                Up        = 3,
                Average   = 4,
                Paeth     = 5,
                Adaptive  = 6
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum TiffCompressionMode
            {
                Automatic        = 0,
                None             = 1,
                Ccitt3           = 2,
                Ccitt4           = 3,
                Lzw              = 4,
                Rle              = 5,
                Zip              = 6,
                LzwhDifferencing = 7
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            struct BitmapBounds
            {
                UINT32 X;
                UINT32 Y;
                UINT32 Width;
                UINT32 Height;
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            struct BitmapPlaneDescription
            {
                INT32 StartIndex;
                INT32 Width;
                INT32 Height;
                INT32 Stride;
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            struct BitmapSize
            {
                UINT32 Width;
                UINT32 Height;
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Graphics.Imaging.BitmapBuffer)]
            [uuid(A53E04C4-399C-438C-B28F-A63A6B83D1A1)]
            interface IBitmapBuffer : IInspectable
                requires
                    Windows.Foundation.IMemoryBuffer,
                    Windows.Foundation.IClosable
            {
                HRESULT GetPlaneCount([out] [retval] INT32* value);
                HRESULT GetPlaneDescription([in] INT32 index, [out] [retval] Windows.Graphics.Imaging.BitmapPlaneDescription* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Graphics.Imaging.BitmapCodecInformation)]
            [uuid(400CAAF2-C4B0-4392-A3B0-6F6F9BA95CB4)]
            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);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Graphics.Imaging.BitmapDecoder)]
            [uuid(ACEF22BA-1D74-4C91-9DFC-9620745233E6)]
            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);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Graphics.Imaging.BitmapDecoder)]
            [uuid(438CCB26-BCEF-4E95-BAD6-23A822E58D01)]
            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);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Graphics.Imaging.BitmapEncoder)]
            [uuid(2BC468E3-E1F8-4B54-95E8-32919551CE62)]
            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);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Graphics.Imaging.BitmapEncoder)]
            [uuid(A74356A7-A4E4-4EB9-8E40-564DE7E1CCB2)]
            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);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Graphics.Imaging.BitmapEncoder)]
            [uuid(686CD241-4330-4C77-ACE4-0334968B1768)]
            interface IBitmapEncoderWithSoftwareBitmap : IInspectable
            {
                HRESULT SetSoftwareBitmap([in] Windows.Graphics.Imaging.SoftwareBitmap* bitmap);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(72A49A1C-8081-438D-91BC-94ECFC8185C6)]
            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);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(FE287C9A-420C-4963-87AD-691436E08383)]
            interface IBitmapFrameWithSoftwareBitmap : IInspectable
                requires
                    Windows.Graphics.Imaging.IBitmapFrame
            {
                [overload("GetSoftwareBitmapAsync")] HRESULT GetSoftwareBitmapAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Graphics.Imaging.SoftwareBitmap*>** value);
                [overload("GetSoftwareBitmapAsync")] HRESULT GetSoftwareBitmapConvertedAsync([in] Windows.Graphics.Imaging.BitmapPixelFormat pixelFormat, [in] Windows.Graphics.Imaging.BitmapAlphaMode alphaMode, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Graphics.Imaging.SoftwareBitmap*>** value);
                [overload("GetSoftwareBitmapAsync")] HRESULT GetSoftwareBitmapTransformedAsync([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.SoftwareBitmap*>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Graphics.Imaging.BitmapProperties)]
            [uuid(EA9F4F1B-B505-4450-A4D1-E8CA94529D8D)]
            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);
            }

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

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Graphics.Imaging.BitmapTransform)]
            [uuid(AE755344-E268-4D35-ADCF-E995D31A8D34)]
            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);
            }

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

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

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

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Graphics.Imaging.SoftwareBitmap)]
            [uuid(689E0708-7EEF-483F-963F-DA938818E073)]
            interface ISoftwareBitmap : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT BitmapPixelFormat([out] [retval] Windows.Graphics.Imaging.BitmapPixelFormat* value);
                [propget] HRESULT BitmapAlphaMode([out] [retval] Windows.Graphics.Imaging.BitmapAlphaMode* value);
                [propget] HRESULT PixelWidth([out] [retval] INT32* value);
                [propget] HRESULT PixelHeight([out] [retval] INT32* value);
                [propget] HRESULT IsReadOnly([out] [retval] boolean* value);
                [propput] HRESULT DpiX([in] DOUBLE value);
                [propget] HRESULT DpiX([out] [retval] DOUBLE* value);
                [propput] HRESULT DpiY([in] DOUBLE value);
                [propget] HRESULT DpiY([out] [retval] DOUBLE* value);
                HRESULT LockBuffer([in] Windows.Graphics.Imaging.BitmapBufferAccessMode mode, [out] [retval] Windows.Graphics.Imaging.BitmapBuffer** value);
                HRESULT CopyTo([in] Windows.Graphics.Imaging.SoftwareBitmap* bitmap);
                HRESULT CopyFromBuffer([in] Windows.Storage.Streams.IBuffer* buffer);
                HRESULT CopyToBuffer([in] Windows.Storage.Streams.IBuffer* buffer);
                HRESULT GetReadOnlyView([out] [retval] Windows.Graphics.Imaging.SoftwareBitmap** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Graphics.Imaging.SoftwareBitmap)]
            [uuid(C99FEB69-2D62-4D47-A6B3-4FDB6A07FDF8)]
            interface ISoftwareBitmapFactory : IInspectable
            {
                HRESULT Create([in] Windows.Graphics.Imaging.BitmapPixelFormat format, [in] INT32 width, [in] INT32 height, [out] [retval] Windows.Graphics.Imaging.SoftwareBitmap** value);
                HRESULT CreateWithAlpha([in] Windows.Graphics.Imaging.BitmapPixelFormat format, [in] INT32 width, [in] INT32 height, [in] Windows.Graphics.Imaging.BitmapAlphaMode alpha, [out] [retval] Windows.Graphics.Imaging.SoftwareBitmap** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Graphics.Imaging.SoftwareBitmap)]
            [uuid(DF0385DB-672F-4A9D-806E-C2442F343E86)]
            interface ISoftwareBitmapStatics : IInspectable
            {
                HRESULT Copy([in] Windows.Graphics.Imaging.SoftwareBitmap* source, [out] [retval] Windows.Graphics.Imaging.SoftwareBitmap** value);
                [overload("Convert")] HRESULT Convert([in] Windows.Graphics.Imaging.SoftwareBitmap* source, [in] Windows.Graphics.Imaging.BitmapPixelFormat format, [out] [retval] Windows.Graphics.Imaging.SoftwareBitmap** value);
                [overload("Convert")] HRESULT ConvertWithAlpha([in] Windows.Graphics.Imaging.SoftwareBitmap* source, [in] Windows.Graphics.Imaging.BitmapPixelFormat format, [in] Windows.Graphics.Imaging.BitmapAlphaMode alpha, [out] [retval] Windows.Graphics.Imaging.SoftwareBitmap** value);
                [overload("CreateCopyFromBuffer")] HRESULT CreateCopyFromBuffer([in] Windows.Storage.Streams.IBuffer* source, [in] Windows.Graphics.Imaging.BitmapPixelFormat format, [in] INT32 width, [in] INT32 height, [out] [retval] Windows.Graphics.Imaging.SoftwareBitmap** value);
                [overload("CreateCopyFromBuffer")] HRESULT CreateCopyWithAlphaFromBuffer([in] Windows.Storage.Streams.IBuffer* source, [in] Windows.Graphics.Imaging.BitmapPixelFormat format, [in] INT32 width, [in] INT32 height, [in] Windows.Graphics.Imaging.BitmapAlphaMode alpha, [out] [retval] Windows.Graphics.Imaging.SoftwareBitmap** value);
                [overload("CreateCopyFromSurfaceAsync")] HRESULT CreateCopyFromSurfaceAsync([in] Windows.Graphics.DirectX.Direct3D11.IDirect3DSurface* surface, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Graphics.Imaging.SoftwareBitmap*>** value);
                [overload("CreateCopyFromSurfaceAsync")] HRESULT CreateCopyWithAlphaFromSurfaceAsync([in] Windows.Graphics.DirectX.Direct3D11.IDirect3DSurface* surface, [in] Windows.Graphics.Imaging.BitmapAlphaMode alpha, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Graphics.Imaging.SoftwareBitmap*>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass BitmapBuffer
            {
                [default] interface Windows.Graphics.Imaging.IBitmapBuffer;
                interface Windows.Foundation.IMemoryBuffer;
                interface Windows.Foundation.IClosable;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass BitmapCodecInformation
            {
                [default] interface Windows.Graphics.Imaging.IBitmapCodecInformation;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Graphics.Imaging.IBitmapDecoderStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            runtimeclass BitmapDecoder
            {
                [default] interface Windows.Graphics.Imaging.IBitmapDecoder;
                interface Windows.Graphics.Imaging.IBitmapFrame;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Graphics.Imaging.IBitmapFrameWithSoftwareBitmap;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Graphics.Imaging.IBitmapEncoderStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            runtimeclass BitmapEncoder
            {
                [default] interface Windows.Graphics.Imaging.IBitmapEncoder;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Graphics.Imaging.IBitmapEncoderWithSoftwareBitmap;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass BitmapFrame
            {
                [default] interface Windows.Graphics.Imaging.IBitmapFrame;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Graphics.Imaging.IBitmapFrameWithSoftwareBitmap;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass BitmapProperties
            {
                [default] interface Windows.Graphics.Imaging.IBitmapProperties;
                interface Windows.Graphics.Imaging.IBitmapPropertiesView;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass BitmapPropertiesView
            {
                [default] interface Windows.Graphics.Imaging.IBitmapPropertiesView;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            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*>*>;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass BitmapTransform
            {
                [default] interface Windows.Graphics.Imaging.IBitmapTransform;
            }

            [activatable(Windows.Graphics.Imaging.IBitmapTypedValueFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass BitmapTypedValue
            {
                [default] interface Windows.Graphics.Imaging.IBitmapTypedValue;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass ImageStream
            {
                [default] interface Windows.Storage.Streams.IRandomAccessStreamWithContentType;
                interface Windows.Storage.Streams.IContentTypeProvider;
                interface Windows.Storage.Streams.IRandomAccessStream;
                interface Windows.Storage.Streams.IOutputStream;
                interface Windows.Foundation.IClosable;
                interface Windows.Storage.Streams.IInputStream;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass PixelDataProvider
            {
                [default] interface Windows.Graphics.Imaging.IPixelDataProvider;
            }

            [activatable(Windows.Graphics.Imaging.ISoftwareBitmapFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Graphics.Imaging.ISoftwareBitmapStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass SoftwareBitmap
            {
                [default] interface Windows.Graphics.Imaging.ISoftwareBitmap;
                interface Windows.Foundation.IClosable;
            }
        }
    }
}
