/*** Autogenerated by WIDL 1.3.12 from wincodec.idl - Do not edit ***/

#include <rpc.h>
#include <rpcndr.h>

#ifndef __WIDL_WINCODEC_H
#define __WIDL_WINCODEC_H

/* Forward declarations */

#ifndef __IWICColorContext_FWD_DEFINED__
#define __IWICColorContext_FWD_DEFINED__
typedef interface IWICColorContext IWICColorContext;
#endif

#ifndef __IWICBitmapSource_FWD_DEFINED__
#define __IWICBitmapSource_FWD_DEFINED__
typedef interface IWICBitmapSource IWICBitmapSource;
#endif

#ifndef __IWICBitmapLock_FWD_DEFINED__
#define __IWICBitmapLock_FWD_DEFINED__
typedef interface IWICBitmapLock IWICBitmapLock;
#endif

#ifndef __IWICBitmapFlipRotator_FWD_DEFINED__
#define __IWICBitmapFlipRotator_FWD_DEFINED__
typedef interface IWICBitmapFlipRotator IWICBitmapFlipRotator;
#endif

#ifndef __IWICBitmap_FWD_DEFINED__
#define __IWICBitmap_FWD_DEFINED__
typedef interface IWICBitmap IWICBitmap;
#endif

#ifndef __IWICPalette_FWD_DEFINED__
#define __IWICPalette_FWD_DEFINED__
typedef interface IWICPalette IWICPalette;
#endif

#ifndef __IWICComponentInfo_FWD_DEFINED__
#define __IWICComponentInfo_FWD_DEFINED__
typedef interface IWICComponentInfo IWICComponentInfo;
#endif

#ifndef __IWICMetadataQueryReader_FWD_DEFINED__
#define __IWICMetadataQueryReader_FWD_DEFINED__
typedef interface IWICMetadataQueryReader IWICMetadataQueryReader;
#endif

#ifndef __IWICMetadataQueryWriter_FWD_DEFINED__
#define __IWICMetadataQueryWriter_FWD_DEFINED__
typedef interface IWICMetadataQueryWriter IWICMetadataQueryWriter;
#endif

#ifndef __IWICBitmapFrameDecode_FWD_DEFINED__
#define __IWICBitmapFrameDecode_FWD_DEFINED__
typedef interface IWICBitmapFrameDecode IWICBitmapFrameDecode;
#endif

#ifndef __IWICBitmapCodecInfo_FWD_DEFINED__
#define __IWICBitmapCodecInfo_FWD_DEFINED__
typedef interface IWICBitmapCodecInfo IWICBitmapCodecInfo;
#endif

#ifndef __IWICBitmapDecoderInfo_FWD_DEFINED__
#define __IWICBitmapDecoderInfo_FWD_DEFINED__
typedef interface IWICBitmapDecoderInfo IWICBitmapDecoderInfo;
#endif

#ifndef __IWICBitmapDecoder_FWD_DEFINED__
#define __IWICBitmapDecoder_FWD_DEFINED__
typedef interface IWICBitmapDecoder IWICBitmapDecoder;
#endif

#ifndef __IWICBitmapFrameEncode_FWD_DEFINED__
#define __IWICBitmapFrameEncode_FWD_DEFINED__
typedef interface IWICBitmapFrameEncode IWICBitmapFrameEncode;
#endif

#ifndef __IWICBitmapEncoderInfo_FWD_DEFINED__
#define __IWICBitmapEncoderInfo_FWD_DEFINED__
typedef interface IWICBitmapEncoderInfo IWICBitmapEncoderInfo;
#endif

#ifndef __IWICBitmapEncoder_FWD_DEFINED__
#define __IWICBitmapEncoder_FWD_DEFINED__
typedef interface IWICBitmapEncoder IWICBitmapEncoder;
#endif

#ifndef __IWICFormatConverter_FWD_DEFINED__
#define __IWICFormatConverter_FWD_DEFINED__
typedef interface IWICFormatConverter IWICFormatConverter;
#endif

#ifndef __IWICFormatConverterInfo_FWD_DEFINED__
#define __IWICFormatConverterInfo_FWD_DEFINED__
typedef interface IWICFormatConverterInfo IWICFormatConverterInfo;
#endif

#ifndef __IWICStream_FWD_DEFINED__
#define __IWICStream_FWD_DEFINED__
typedef interface IWICStream IWICStream;
#endif

#ifndef __IWICBitmapScaler_FWD_DEFINED__
#define __IWICBitmapScaler_FWD_DEFINED__
typedef interface IWICBitmapScaler IWICBitmapScaler;
#endif

#ifndef __IWICBitmapClipper_FWD_DEFINED__
#define __IWICBitmapClipper_FWD_DEFINED__
typedef interface IWICBitmapClipper IWICBitmapClipper;
#endif

#ifndef __IWICColorTransform_FWD_DEFINED__
#define __IWICColorTransform_FWD_DEFINED__
typedef interface IWICColorTransform IWICColorTransform;
#endif

#ifndef __IWICFastMetadataEncoder_FWD_DEFINED__
#define __IWICFastMetadataEncoder_FWD_DEFINED__
typedef interface IWICFastMetadataEncoder IWICFastMetadataEncoder;
#endif

#ifndef __IWICImagingFactory_FWD_DEFINED__
#define __IWICImagingFactory_FWD_DEFINED__
typedef interface IWICImagingFactory IWICImagingFactory;
#endif

/* Headers for imported files */

#include <wtypes.h>
#include <propidl.h>
#include <objidl.h>
#include <ocidl.h>

#ifdef __cplusplus
extern "C" {
#endif

#define WINCODEC_SDK_VERSION 0x0236
typedef enum WICDecodeOptions {
    WICDecodeMetadataCacheOnDemand = 0x0,
    WICDecodeMetadataCacheOnLoad = 0x1,
    WICMETADATACACHEOPTION_FORCE_DWORD = 0x7fffffff
} WICDecodeOptions;
typedef enum WICBitmapCreateCacheOption {
    WICBitmapNoCache = 0x0,
    WICBitmapCacheOnDemand = 0x1,
    WICBitmapCacheOnLoad = 0x2,
    WICBITMAPCREATECACHEOPTION_FORCE_DWORD = 0x7fffffff
} WICBitmapCreateCacheOption;
typedef enum WICBitmapAlphaChannelOption {
    WICBitmapUseAlpha = 0x0,
    WICBitmapUsePremultipliedAlpha = 0x1,
    WICBitmapIgnoreAlpha = 0x2,
    WICBITMAPALPHACHANNELOPTIONS_FORCE_DWORD = 0x7fffffff
} WICBitmapAlphaChannelOption;
typedef enum WICBitmapDecoderCapabilities {
    WICBitmapDecoderCapabilitySameEncoder = 0x1,
    WICBitmapDecoderCapabilityCanDecodeAllImages = 0x2,
    WICBitmapDecoderCapabilityCanDecodeSomeImages = 0x4,
    WICBitmapDecoderCapabilityCanEnumerateMetadata = 0x8,
    WICBitmapDecoderCapabilityCanDecodeThumbnail = 0x10
} WICBitmapDecoderCapabilities;
typedef enum WICBitmapDitherType {
    WICBitmapDitherTypeNone = 0x0,
    WICBitmapDitherTypeSolid = 0x0,
    WICBitmapDitherTypeOrdered4x4 = 0x1,
    WICBitmapDitherTypeOrdered8x8 = 0x2,
    WICBitmapDitherTypeOrdered16x16 = 0x3,
    WICBitmapDitherTypeSpiral4x4 = 0x4,
    WICBitmapDitherTypeSpiral8x8 = 0x5,
    WICBitmapDitherTypeDualSpiral4x4 = 0x6,
    WICBitmapDitherTypeDualSpiral8x8 = 0x7,
    WICBitmapDitherTypeErrorDiffusion = 0x8,
    WICBITMAPDITHERTYPE_FORCE_DWORD = 0x7fffffff
} WICBitmapDitherType;
typedef enum WICBitmapEncoderCacheOption {
    WICBitmapEncoderCacheInMemory = 0x0,
    WICBitmapEncoderCacheTempFile = 0x1,
    WICBitmapEncoderNoCache = 0x2,
    WICBITMAPENCODERCACHEOPTION_FORCE_DWORD = 0x7fffffff
} WICBitmapEncoderCacheOption;
typedef enum WICBitmapInterpolationMode {
    WICBitmapInterpolationModeNearestNeighbor = 0x0,
    WICBitmapInterpolationModeLinear = 0x1,
    WICBitmapInterpolationModeCubic = 0x2,
    WICBitmapInterpolationModeFaint = 0x3,
    WICBITMAPINTERPOLATIONMODE_FORCE_DWORD = 0x7fffffff
} WICBitmapInterpolationMode;
typedef enum WICBitmapPaletteType {
    WICBitmapPaletteTypeCustom = 0x0,
    WICBitmapPaletteTypeMedianCut = 0x1,
    WICBitmapPaletteTypeFixedBW = 0x2,
    WICBitmapPaletteTypeFixedHalftone8 = 0x3,
    WICBitmapPaletteTypeFixedHalftone27 = 0x4,
    WICBitmapPaletteTypeFixedHalftone64 = 0x5,
    WICBitmapPaletteTypeFixedHalftone125 = 0x6,
    WICBitmapPaletteTypeFixedHalftone216 = 0x7,
    WICBitmapPaletteTypeFixedWebPalette = WICBitmapPaletteTypeFixedHalftone216,
    WICBitmapPaletteTypeFixedHalftone252 = 0x8,
    WICBitmapPaletteTypeFixedHalftone256 = 0x9,
    WICBitmapPaletteTypeFixedGray4 = 0xa,
    WICBitmapPaletteTypeFixedGray16 = 0xb,
    WICBitmapPaletteTypeFixedGray256 = 0xc,
    WICBITMAPPALETTETYPE_FORCE_DWORD = 0x7fffffff
} WICBitmapPaletteType;
typedef enum WICBitmapTransformOptions {
    WICBitmapTransformRotate0 = 0x0,
    WICBitmapTransformRotate90 = 0x1,
    WICBitmapTransformRotate180 = 0x2,
    WICBitmapTransformRotate270 = 0x3,
    WICBitmapTransformFlipHorizontal = 0x8,
    WICBitmapTransformFlipVertical = 0x10,
    WICBITMAPTRANSFORMOPTIONS_FORCE_DWORD = 0x7fffffff
} WICBitmapTransformOptions;
typedef enum WICColorContextType {
    WICColorContextUninitialized = 0x0,
    WICColorContextProfile = 0x1,
    WICColorContextExifColorSpace = 0x2
} WICColorContextType;
typedef enum WICComponentType {
    WICDecoder = 0x1,
    WICEncoder = 0x2,
    WICPixelFormatConverter = 0x4,
    WICMetadataReader = 0x8,
    WICMetadataWriter = 0x10,
    WICPixelFormat = 0x20,
    WICCOMPONENTTYPE_FORCE_DWORD = 0x7fffffff
} WICComponentType;
typedef enum WICComponentSigning {
    WICComponentSigned = 0x1,
    WICComponentUnsigned = 0x2,
    WICComponentSafe = 0x4,
    WICComponentDisabled = 0x80000000
} WICComponentSigning;
typedef enum WICComponentEnumerateOptions {
    WICComponentEnumerateDefault = 0x0,
    WICComponentEnumerateRefresh = 0x1,
    WICComponentEnumerateBuiltInOnly = 0x20000000,
    WICComponentEnumerateUnsigned = 0x40000000,
    WICComponentEnumerateDisabled = 0x80000000
} WICComponentEnumerateOptions;
typedef GUID WICPixelFormatGUID;
typedef REFGUID REFWICPixelFormatGUID;
DEFINE_GUID(GUID_WICPixelFormatDontCare, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x00);
#define GUID_WICPixelFormatUndefined GUID_WICPixelFormatDontCare
DEFINE_GUID(GUID_WICPixelFormat1bppIndexed, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x01);
DEFINE_GUID(GUID_WICPixelFormat2bppIndexed, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x02);
DEFINE_GUID(GUID_WICPixelFormat4bppIndexed, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x03);
DEFINE_GUID(GUID_WICPixelFormat8bppIndexed, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x04);
DEFINE_GUID(GUID_WICPixelFormatBlackWhite, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x05);
DEFINE_GUID(GUID_WICPixelFormat2bppGray, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x06);
DEFINE_GUID(GUID_WICPixelFormat4bppGray, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x07);
DEFINE_GUID(GUID_WICPixelFormat8bppGray, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x08);
DEFINE_GUID(GUID_WICPixelFormat16bppGray, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x0b);
DEFINE_GUID(GUID_WICPixelFormat16bppBGR555, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x09);
DEFINE_GUID(GUID_WICPixelFormat16bppBGR565, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x0a);
DEFINE_GUID(GUID_WICPixelFormat16bppBGRA5551, 0x05ec7c2b,0xf1e6,0x4961,0xad,0x46,0xe1,0xcc,0x81,0x0a,0x87,0xd2);
DEFINE_GUID(GUID_WICPixelFormat24bppBGR, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x0c);
DEFINE_GUID(GUID_WICPixelFormat32bppBGR, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x0e);
DEFINE_GUID(GUID_WICPixelFormat32bppBGRA, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x0f);
DEFINE_GUID(GUID_WICPixelFormat32bppPBGRA, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x10);
DEFINE_GUID(GUID_WICPixelFormat48bppRGB, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x15);
DEFINE_GUID(GUID_WICPixelFormat64bppRGBA, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x16);
DEFINE_GUID(GUID_WICPixelFormat64bppPRGBA, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x17);
DEFINE_GUID(GUID_WICPixelFormat32bppCMYK, 0x6fddc324,0x4e03,0x4fbe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x1c);
typedef struct WICRect {
    INT X;
    INT Y;
    INT Width;
    INT Height;
} WICRect;
typedef struct WICBitmapPattern {
    ULARGE_INTEGER Position;
    ULONG Length;
    BYTE *Pattern;
    BYTE *Mask;
    BOOL EndOfStream;
} WICBitmapPattern;
typedef UINT32 WICColor;
#define WINCODEC_ERR_WRONGSTATE 0x88982f04
#define WINCODEC_ERR_VALUEOUTOFRANGE 0x88982f05
#define WINCODEC_ERR_NOTINITIALIZED 0x88982f0c
#define WINCODEC_ERR_CODECNOTHUMBNAIL 0x88982f44
#define WINCODEC_ERR_PALETTEUNAVAILABLE 0x88982f45
#define WINCODEC_ERR_COMPONENTNOTFOUND 0x88982f50
#define WINCODEC_ERR_FRAMEMISSING 0x88982f62
#define WINCODEC_ERR_UNSUPPORTEDPIXELFORMAT 0x88982f80
#define WINCODEC_ERR_UNSUPPORTEDOPERATION 0x88982f81
#define WINCODEC_ERR_INSUFFICIENTBUFFER 0x88982f8c
#ifndef __IWICPalette_FWD_DEFINED__
#define __IWICPalette_FWD_DEFINED__
typedef interface IWICPalette IWICPalette;
#endif

/*****************************************************************************
 * IWICColorContext interface
 */
#ifndef __IWICColorContext_INTERFACE_DEFINED__
#define __IWICColorContext_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICColorContext, 0x3c613a02, 0x34b2, 0x44ea, 0x9a,0x7c, 0x45,0xae,0xa9,0xc6,0xfd,0x6d);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWICColorContext : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE InitializeFromFilename(
        LPCWSTR wzFilename) = 0;

    virtual HRESULT STDMETHODCALLTYPE InitializeFromMemory(
        const BYTE *pbBuffer,
        UINT cbBufferSize) = 0;

    virtual HRESULT STDMETHODCALLTYPE InitializeFromExifColorSpace(
        UINT value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetType(
        WICColorContextType *pType) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetProfileBytes(
        UINT cbBuffer,
        BYTE *pbBuffer,
        UINT *pcbActual) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetExifColorSpace(
        UINT *pValue) = 0;

};
#else
typedef struct IWICColorContextVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICColorContext* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICColorContext* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICColorContext* This);

    /*** IWICColorContext methods ***/
    HRESULT (STDMETHODCALLTYPE *InitializeFromFilename)(
        IWICColorContext* This,
        LPCWSTR wzFilename);

    HRESULT (STDMETHODCALLTYPE *InitializeFromMemory)(
        IWICColorContext* This,
        const BYTE *pbBuffer,
        UINT cbBufferSize);

    HRESULT (STDMETHODCALLTYPE *InitializeFromExifColorSpace)(
        IWICColorContext* This,
        UINT value);

    HRESULT (STDMETHODCALLTYPE *GetType)(
        IWICColorContext* This,
        WICColorContextType *pType);

    HRESULT (STDMETHODCALLTYPE *GetProfileBytes)(
        IWICColorContext* This,
        UINT cbBuffer,
        BYTE *pbBuffer,
        UINT *pcbActual);

    HRESULT (STDMETHODCALLTYPE *GetExifColorSpace)(
        IWICColorContext* This,
        UINT *pValue);

    END_INTERFACE
} IWICColorContextVtbl;
interface IWICColorContext {
    CONST_VTBL IWICColorContextVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICColorContext_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICColorContext_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICColorContext_Release(This) (This)->lpVtbl->Release(This)
/*** IWICColorContext methods ***/
#define IWICColorContext_InitializeFromFilename(This,wzFilename) (This)->lpVtbl->InitializeFromFilename(This,wzFilename)
#define IWICColorContext_InitializeFromMemory(This,pbBuffer,cbBufferSize) (This)->lpVtbl->InitializeFromMemory(This,pbBuffer,cbBufferSize)
#define IWICColorContext_InitializeFromExifColorSpace(This,value) (This)->lpVtbl->InitializeFromExifColorSpace(This,value)
#define IWICColorContext_GetType(This,pType) (This)->lpVtbl->GetType(This,pType)
#define IWICColorContext_GetProfileBytes(This,cbBuffer,pbBuffer,pcbActual) (This)->lpVtbl->GetProfileBytes(This,cbBuffer,pbBuffer,pcbActual)
#define IWICColorContext_GetExifColorSpace(This,pValue) (This)->lpVtbl->GetExifColorSpace(This,pValue)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICColorContext_InitializeFromFilename_Proxy(
    IWICColorContext* This,
    LPCWSTR wzFilename);
void __RPC_STUB IWICColorContext_InitializeFromFilename_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICColorContext_InitializeFromMemory_Proxy(
    IWICColorContext* This,
    const BYTE *pbBuffer,
    UINT cbBufferSize);
void __RPC_STUB IWICColorContext_InitializeFromMemory_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICColorContext_InitializeFromExifColorSpace_Proxy(
    IWICColorContext* This,
    UINT value);
void __RPC_STUB IWICColorContext_InitializeFromExifColorSpace_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICColorContext_GetType_Proxy(
    IWICColorContext* This,
    WICColorContextType *pType);
void __RPC_STUB IWICColorContext_GetType_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICColorContext_GetProfileBytes_Proxy(
    IWICColorContext* This,
    UINT cbBuffer,
    BYTE *pbBuffer,
    UINT *pcbActual);
void __RPC_STUB IWICColorContext_GetProfileBytes_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICColorContext_GetExifColorSpace_Proxy(
    IWICColorContext* This,
    UINT *pValue);
void __RPC_STUB IWICColorContext_GetExifColorSpace_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICColorContext_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICBitmapSource interface
 */
#ifndef __IWICBitmapSource_INTERFACE_DEFINED__
#define __IWICBitmapSource_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICBitmapSource, 0x00000120, 0xa8f2, 0x4877, 0xba,0x0a, 0xfd,0x2b,0x66,0x45,0xfb,0x94);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWICBitmapSource : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetSize(
        UINT *puiWidth,
        UINT *puiHeight) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPixelFormat(
        WICPixelFormatGUID *pPixelFormat) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetResolution(
        double *pDpiX,
        double *pDpiY) = 0;

    virtual HRESULT STDMETHODCALLTYPE CopyPalette(
        IWICPalette *pIPalette) = 0;

    virtual HRESULT STDMETHODCALLTYPE CopyPixels(
        const WICRect *prc,
        UINT cbStride,
        UINT cbBufferSize,
        BYTE *pbBuffer) = 0;

};
#else
typedef struct IWICBitmapSourceVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICBitmapSource* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICBitmapSource* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICBitmapSource* This);

    /*** IWICBitmapSource methods ***/
    HRESULT (STDMETHODCALLTYPE *GetSize)(
        IWICBitmapSource* This,
        UINT *puiWidth,
        UINT *puiHeight);

    HRESULT (STDMETHODCALLTYPE *GetPixelFormat)(
        IWICBitmapSource* This,
        WICPixelFormatGUID *pPixelFormat);

    HRESULT (STDMETHODCALLTYPE *GetResolution)(
        IWICBitmapSource* This,
        double *pDpiX,
        double *pDpiY);

    HRESULT (STDMETHODCALLTYPE *CopyPalette)(
        IWICBitmapSource* This,
        IWICPalette *pIPalette);

    HRESULT (STDMETHODCALLTYPE *CopyPixels)(
        IWICBitmapSource* This,
        const WICRect *prc,
        UINT cbStride,
        UINT cbBufferSize,
        BYTE *pbBuffer);

    END_INTERFACE
} IWICBitmapSourceVtbl;
interface IWICBitmapSource {
    CONST_VTBL IWICBitmapSourceVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICBitmapSource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICBitmapSource_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICBitmapSource_Release(This) (This)->lpVtbl->Release(This)
/*** IWICBitmapSource methods ***/
#define IWICBitmapSource_GetSize(This,puiWidth,puiHeight) (This)->lpVtbl->GetSize(This,puiWidth,puiHeight)
#define IWICBitmapSource_GetPixelFormat(This,pPixelFormat) (This)->lpVtbl->GetPixelFormat(This,pPixelFormat)
#define IWICBitmapSource_GetResolution(This,pDpiX,pDpiY) (This)->lpVtbl->GetResolution(This,pDpiX,pDpiY)
#define IWICBitmapSource_CopyPalette(This,pIPalette) (This)->lpVtbl->CopyPalette(This,pIPalette)
#define IWICBitmapSource_CopyPixels(This,prc,cbStride,cbBufferSize,pbBuffer) (This)->lpVtbl->CopyPixels(This,prc,cbStride,cbBufferSize,pbBuffer)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICBitmapSource_GetSize_Proxy(
    IWICBitmapSource* This,
    UINT *puiWidth,
    UINT *puiHeight);
void __RPC_STUB IWICBitmapSource_GetSize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapSource_GetPixelFormat_Proxy(
    IWICBitmapSource* This,
    WICPixelFormatGUID *pPixelFormat);
void __RPC_STUB IWICBitmapSource_GetPixelFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapSource_GetResolution_Proxy(
    IWICBitmapSource* This,
    double *pDpiX,
    double *pDpiY);
void __RPC_STUB IWICBitmapSource_GetResolution_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapSource_CopyPalette_Proxy(
    IWICBitmapSource* This,
    IWICPalette *pIPalette);
void __RPC_STUB IWICBitmapSource_CopyPalette_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapSource_CopyPixels_Proxy(
    IWICBitmapSource* This,
    const WICRect *prc,
    UINT cbStride,
    UINT cbBufferSize,
    BYTE *pbBuffer);
void __RPC_STUB IWICBitmapSource_CopyPixels_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICBitmapSource_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICBitmapLock interface
 */
#ifndef __IWICBitmapLock_INTERFACE_DEFINED__
#define __IWICBitmapLock_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICBitmapLock, 0x00000123, 0xa8f2, 0x4877, 0xba,0x0a, 0xfd,0x2b,0x66,0x45,0xfb,0x94);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWICBitmapLock : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetSize(
        UINT *pWidth,
        UINT *pHeight) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStride(
        UINT *pcbStride) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDataPointer(
        UINT *pcbBufferSize,
        BYTE **ppbData) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPixelFormat(
        WICPixelFormatGUID *pPixelFormat) = 0;

};
#else
typedef struct IWICBitmapLockVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICBitmapLock* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICBitmapLock* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICBitmapLock* This);

    /*** IWICBitmapLock methods ***/
    HRESULT (STDMETHODCALLTYPE *GetSize)(
        IWICBitmapLock* This,
        UINT *pWidth,
        UINT *pHeight);

    HRESULT (STDMETHODCALLTYPE *GetStride)(
        IWICBitmapLock* This,
        UINT *pcbStride);

    HRESULT (STDMETHODCALLTYPE *GetDataPointer)(
        IWICBitmapLock* This,
        UINT *pcbBufferSize,
        BYTE **ppbData);

    HRESULT (STDMETHODCALLTYPE *GetPixelFormat)(
        IWICBitmapLock* This,
        WICPixelFormatGUID *pPixelFormat);

    END_INTERFACE
} IWICBitmapLockVtbl;
interface IWICBitmapLock {
    CONST_VTBL IWICBitmapLockVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICBitmapLock_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICBitmapLock_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICBitmapLock_Release(This) (This)->lpVtbl->Release(This)
/*** IWICBitmapLock methods ***/
#define IWICBitmapLock_GetSize(This,pWidth,pHeight) (This)->lpVtbl->GetSize(This,pWidth,pHeight)
#define IWICBitmapLock_GetStride(This,pcbStride) (This)->lpVtbl->GetStride(This,pcbStride)
#define IWICBitmapLock_GetDataPointer(This,pcbBufferSize,ppbData) (This)->lpVtbl->GetDataPointer(This,pcbBufferSize,ppbData)
#define IWICBitmapLock_GetPixelFormat(This,pPixelFormat) (This)->lpVtbl->GetPixelFormat(This,pPixelFormat)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICBitmapLock_GetSize_Proxy(
    IWICBitmapLock* This,
    UINT *pWidth,
    UINT *pHeight);
void __RPC_STUB IWICBitmapLock_GetSize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapLock_GetStride_Proxy(
    IWICBitmapLock* This,
    UINT *pcbStride);
void __RPC_STUB IWICBitmapLock_GetStride_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapLock_GetDataPointer_Proxy(
    IWICBitmapLock* This,
    UINT *pcbBufferSize,
    BYTE **ppbData);
void __RPC_STUB IWICBitmapLock_GetDataPointer_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapLock_GetPixelFormat_Proxy(
    IWICBitmapLock* This,
    WICPixelFormatGUID *pPixelFormat);
void __RPC_STUB IWICBitmapLock_GetPixelFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICBitmapLock_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICBitmapFlipRotator interface
 */
#ifndef __IWICBitmapFlipRotator_INTERFACE_DEFINED__
#define __IWICBitmapFlipRotator_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICBitmapFlipRotator, 0x5009834f, 0x2d6a, 0x41ce, 0x9e,0x1b, 0x17,0xc5,0xaf,0xf7,0xa7,0x82);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWICBitmapFlipRotator : public IWICBitmapSource
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        IWICBitmapSource *pISource,
        WICBitmapTransformOptions options) = 0;

};
#else
typedef struct IWICBitmapFlipRotatorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICBitmapFlipRotator* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICBitmapFlipRotator* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICBitmapFlipRotator* This);

    /*** IWICBitmapSource methods ***/
    HRESULT (STDMETHODCALLTYPE *GetSize)(
        IWICBitmapFlipRotator* This,
        UINT *puiWidth,
        UINT *puiHeight);

    HRESULT (STDMETHODCALLTYPE *GetPixelFormat)(
        IWICBitmapFlipRotator* This,
        WICPixelFormatGUID *pPixelFormat);

    HRESULT (STDMETHODCALLTYPE *GetResolution)(
        IWICBitmapFlipRotator* This,
        double *pDpiX,
        double *pDpiY);

    HRESULT (STDMETHODCALLTYPE *CopyPalette)(
        IWICBitmapFlipRotator* This,
        IWICPalette *pIPalette);

    HRESULT (STDMETHODCALLTYPE *CopyPixels)(
        IWICBitmapFlipRotator* This,
        const WICRect *prc,
        UINT cbStride,
        UINT cbBufferSize,
        BYTE *pbBuffer);

    /*** IWICBitmapFlipRotator methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IWICBitmapFlipRotator* This,
        IWICBitmapSource *pISource,
        WICBitmapTransformOptions options);

    END_INTERFACE
} IWICBitmapFlipRotatorVtbl;
interface IWICBitmapFlipRotator {
    CONST_VTBL IWICBitmapFlipRotatorVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICBitmapFlipRotator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICBitmapFlipRotator_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICBitmapFlipRotator_Release(This) (This)->lpVtbl->Release(This)
/*** IWICBitmapSource methods ***/
#define IWICBitmapFlipRotator_GetSize(This,puiWidth,puiHeight) (This)->lpVtbl->GetSize(This,puiWidth,puiHeight)
#define IWICBitmapFlipRotator_GetPixelFormat(This,pPixelFormat) (This)->lpVtbl->GetPixelFormat(This,pPixelFormat)
#define IWICBitmapFlipRotator_GetResolution(This,pDpiX,pDpiY) (This)->lpVtbl->GetResolution(This,pDpiX,pDpiY)
#define IWICBitmapFlipRotator_CopyPalette(This,pIPalette) (This)->lpVtbl->CopyPalette(This,pIPalette)
#define IWICBitmapFlipRotator_CopyPixels(This,prc,cbStride,cbBufferSize,pbBuffer) (This)->lpVtbl->CopyPixels(This,prc,cbStride,cbBufferSize,pbBuffer)
/*** IWICBitmapFlipRotator methods ***/
#define IWICBitmapFlipRotator_Initialize(This,pISource,options) (This)->lpVtbl->Initialize(This,pISource,options)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICBitmapFlipRotator_Initialize_Proxy(
    IWICBitmapFlipRotator* This,
    IWICBitmapSource *pISource,
    WICBitmapTransformOptions options);
void __RPC_STUB IWICBitmapFlipRotator_Initialize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICBitmapFlipRotator_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICBitmap interface
 */
#ifndef __IWICBitmap_INTERFACE_DEFINED__
#define __IWICBitmap_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICBitmap, 0x00000121, 0xa8f2, 0x4877, 0xba,0x0a, 0xfd,0x2b,0x66,0x45,0xfb,0x94);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWICBitmap : public IWICBitmapSource
{
    virtual HRESULT STDMETHODCALLTYPE Lock(
        const WICRect *prcLock,
        DWORD flags,
        IWICBitmapLock **ppILock) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPalette(
        IWICPalette *pIPalette) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetResolution(
        double dpiX,
        double dpiY) = 0;

};
#else
typedef struct IWICBitmapVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICBitmap* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICBitmap* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICBitmap* This);

    /*** IWICBitmapSource methods ***/
    HRESULT (STDMETHODCALLTYPE *GetSize)(
        IWICBitmap* This,
        UINT *puiWidth,
        UINT *puiHeight);

    HRESULT (STDMETHODCALLTYPE *GetPixelFormat)(
        IWICBitmap* This,
        WICPixelFormatGUID *pPixelFormat);

    HRESULT (STDMETHODCALLTYPE *GetResolution)(
        IWICBitmap* This,
        double *pDpiX,
        double *pDpiY);

    HRESULT (STDMETHODCALLTYPE *CopyPalette)(
        IWICBitmap* This,
        IWICPalette *pIPalette);

    HRESULT (STDMETHODCALLTYPE *CopyPixels)(
        IWICBitmap* This,
        const WICRect *prc,
        UINT cbStride,
        UINT cbBufferSize,
        BYTE *pbBuffer);

    /*** IWICBitmap methods ***/
    HRESULT (STDMETHODCALLTYPE *Lock)(
        IWICBitmap* This,
        const WICRect *prcLock,
        DWORD flags,
        IWICBitmapLock **ppILock);

    HRESULT (STDMETHODCALLTYPE *SetPalette)(
        IWICBitmap* This,
        IWICPalette *pIPalette);

    HRESULT (STDMETHODCALLTYPE *SetResolution)(
        IWICBitmap* This,
        double dpiX,
        double dpiY);

    END_INTERFACE
} IWICBitmapVtbl;
interface IWICBitmap {
    CONST_VTBL IWICBitmapVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICBitmap_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICBitmap_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICBitmap_Release(This) (This)->lpVtbl->Release(This)
/*** IWICBitmapSource methods ***/
#define IWICBitmap_GetSize(This,puiWidth,puiHeight) (This)->lpVtbl->GetSize(This,puiWidth,puiHeight)
#define IWICBitmap_GetPixelFormat(This,pPixelFormat) (This)->lpVtbl->GetPixelFormat(This,pPixelFormat)
#define IWICBitmap_GetResolution(This,pDpiX,pDpiY) (This)->lpVtbl->GetResolution(This,pDpiX,pDpiY)
#define IWICBitmap_CopyPalette(This,pIPalette) (This)->lpVtbl->CopyPalette(This,pIPalette)
#define IWICBitmap_CopyPixels(This,prc,cbStride,cbBufferSize,pbBuffer) (This)->lpVtbl->CopyPixels(This,prc,cbStride,cbBufferSize,pbBuffer)
/*** IWICBitmap methods ***/
#define IWICBitmap_Lock(This,prcLock,flags,ppILock) (This)->lpVtbl->Lock(This,prcLock,flags,ppILock)
#define IWICBitmap_SetPalette(This,pIPalette) (This)->lpVtbl->SetPalette(This,pIPalette)
#define IWICBitmap_SetResolution(This,dpiX,dpiY) (This)->lpVtbl->SetResolution(This,dpiX,dpiY)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICBitmap_Lock_Proxy(
    IWICBitmap* This,
    const WICRect *prcLock,
    DWORD flags,
    IWICBitmapLock **ppILock);
void __RPC_STUB IWICBitmap_Lock_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmap_SetPalette_Proxy(
    IWICBitmap* This,
    IWICPalette *pIPalette);
void __RPC_STUB IWICBitmap_SetPalette_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmap_SetResolution_Proxy(
    IWICBitmap* This,
    double dpiX,
    double dpiY);
void __RPC_STUB IWICBitmap_SetResolution_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICBitmap_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICPalette interface
 */
#ifndef __IWICPalette_INTERFACE_DEFINED__
#define __IWICPalette_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICPalette, 0x00000040, 0xa8f2, 0x4877, 0xba,0x0a, 0xfd,0x2b,0x66,0x45,0xfb,0x94);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWICPalette : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE InitializePredefined(
        WICBitmapPaletteType ePaletteType,
        BOOL fAddTransparentColor) = 0;

    virtual HRESULT STDMETHODCALLTYPE InitializeCustom(
        WICColor *pColors,
        UINT colorCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE InitializeFromBitmap(
        IWICBitmapSource *pISurface,
        UINT colorCount,
        BOOL fAddTransparentColor) = 0;

    virtual HRESULT STDMETHODCALLTYPE InitializeFromPalette(
        IWICPalette *pIPalette) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetType(
        WICBitmapPaletteType *pePaletteType) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetColorCount(
        UINT *pcCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetColors(
        UINT colorCount,
        WICColor *pColors,
        UINT *pcActualColors) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsBlackWhite(
        BOOL *pfIsBlackWhite) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsGrayscale(
        BOOL *pfIsGrayscale) = 0;

    virtual HRESULT STDMETHODCALLTYPE HasAlpha(
        BOOL *pfHasAlpha) = 0;

};
#else
typedef struct IWICPaletteVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICPalette* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICPalette* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICPalette* This);

    /*** IWICPalette methods ***/
    HRESULT (STDMETHODCALLTYPE *InitializePredefined)(
        IWICPalette* This,
        WICBitmapPaletteType ePaletteType,
        BOOL fAddTransparentColor);

    HRESULT (STDMETHODCALLTYPE *InitializeCustom)(
        IWICPalette* This,
        WICColor *pColors,
        UINT colorCount);

    HRESULT (STDMETHODCALLTYPE *InitializeFromBitmap)(
        IWICPalette* This,
        IWICBitmapSource *pISurface,
        UINT colorCount,
        BOOL fAddTransparentColor);

    HRESULT (STDMETHODCALLTYPE *InitializeFromPalette)(
        IWICPalette* This,
        IWICPalette *pIPalette);

    HRESULT (STDMETHODCALLTYPE *GetType)(
        IWICPalette* This,
        WICBitmapPaletteType *pePaletteType);

    HRESULT (STDMETHODCALLTYPE *GetColorCount)(
        IWICPalette* This,
        UINT *pcCount);

    HRESULT (STDMETHODCALLTYPE *GetColors)(
        IWICPalette* This,
        UINT colorCount,
        WICColor *pColors,
        UINT *pcActualColors);

    HRESULT (STDMETHODCALLTYPE *IsBlackWhite)(
        IWICPalette* This,
        BOOL *pfIsBlackWhite);

    HRESULT (STDMETHODCALLTYPE *IsGrayscale)(
        IWICPalette* This,
        BOOL *pfIsGrayscale);

    HRESULT (STDMETHODCALLTYPE *HasAlpha)(
        IWICPalette* This,
        BOOL *pfHasAlpha);

    END_INTERFACE
} IWICPaletteVtbl;
interface IWICPalette {
    CONST_VTBL IWICPaletteVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICPalette_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICPalette_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICPalette_Release(This) (This)->lpVtbl->Release(This)
/*** IWICPalette methods ***/
#define IWICPalette_InitializePredefined(This,ePaletteType,fAddTransparentColor) (This)->lpVtbl->InitializePredefined(This,ePaletteType,fAddTransparentColor)
#define IWICPalette_InitializeCustom(This,pColors,colorCount) (This)->lpVtbl->InitializeCustom(This,pColors,colorCount)
#define IWICPalette_InitializeFromBitmap(This,pISurface,colorCount,fAddTransparentColor) (This)->lpVtbl->InitializeFromBitmap(This,pISurface,colorCount,fAddTransparentColor)
#define IWICPalette_InitializeFromPalette(This,pIPalette) (This)->lpVtbl->InitializeFromPalette(This,pIPalette)
#define IWICPalette_GetType(This,pePaletteType) (This)->lpVtbl->GetType(This,pePaletteType)
#define IWICPalette_GetColorCount(This,pcCount) (This)->lpVtbl->GetColorCount(This,pcCount)
#define IWICPalette_GetColors(This,colorCount,pColors,pcActualColors) (This)->lpVtbl->GetColors(This,colorCount,pColors,pcActualColors)
#define IWICPalette_IsBlackWhite(This,pfIsBlackWhite) (This)->lpVtbl->IsBlackWhite(This,pfIsBlackWhite)
#define IWICPalette_IsGrayscale(This,pfIsGrayscale) (This)->lpVtbl->IsGrayscale(This,pfIsGrayscale)
#define IWICPalette_HasAlpha(This,pfHasAlpha) (This)->lpVtbl->HasAlpha(This,pfHasAlpha)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICPalette_InitializePredefined_Proxy(
    IWICPalette* This,
    WICBitmapPaletteType ePaletteType,
    BOOL fAddTransparentColor);
void __RPC_STUB IWICPalette_InitializePredefined_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICPalette_InitializeCustom_Proxy(
    IWICPalette* This,
    WICColor *pColors,
    UINT colorCount);
void __RPC_STUB IWICPalette_InitializeCustom_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICPalette_InitializeFromBitmap_Proxy(
    IWICPalette* This,
    IWICBitmapSource *pISurface,
    UINT colorCount,
    BOOL fAddTransparentColor);
void __RPC_STUB IWICPalette_InitializeFromBitmap_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICPalette_InitializeFromPalette_Proxy(
    IWICPalette* This,
    IWICPalette *pIPalette);
void __RPC_STUB IWICPalette_InitializeFromPalette_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICPalette_GetType_Proxy(
    IWICPalette* This,
    WICBitmapPaletteType *pePaletteType);
void __RPC_STUB IWICPalette_GetType_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICPalette_GetColorCount_Proxy(
    IWICPalette* This,
    UINT *pcCount);
void __RPC_STUB IWICPalette_GetColorCount_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICPalette_GetColors_Proxy(
    IWICPalette* This,
    UINT colorCount,
    WICColor *pColors,
    UINT *pcActualColors);
void __RPC_STUB IWICPalette_GetColors_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICPalette_IsBlackWhite_Proxy(
    IWICPalette* This,
    BOOL *pfIsBlackWhite);
void __RPC_STUB IWICPalette_IsBlackWhite_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICPalette_IsGrayscale_Proxy(
    IWICPalette* This,
    BOOL *pfIsGrayscale);
void __RPC_STUB IWICPalette_IsGrayscale_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICPalette_HasAlpha_Proxy(
    IWICPalette* This,
    BOOL *pfHasAlpha);
void __RPC_STUB IWICPalette_HasAlpha_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICPalette_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICComponentInfo interface
 */
#ifndef __IWICComponentInfo_INTERFACE_DEFINED__
#define __IWICComponentInfo_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICComponentInfo, 0x23bc3f0a, 0x698b, 0x4357, 0x88,0x6b, 0xf2,0x4d,0x50,0x67,0x13,0x34);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWICComponentInfo : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetComponentType(
        WICComponentType *pType) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCLSID(
        CLSID *pclsid) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSigningStatus(
        DWORD *pStatus) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAuthor(
        UINT cchAuthor,
        WCHAR *wzAuthor,
        UINT *pcchActual) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVendorGUID(
        GUID *pguidVendor) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVersion(
        UINT cchVersion,
        WCHAR *wzVersion,
        UINT *pcchActual) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSpecVersion(
        UINT cchSpecVersion,
        WCHAR *wzSpecVersion,
        UINT *pcchActual) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFriendlyName(
        UINT cchFriendlyName,
        WCHAR *wzFriendlyName,
        UINT *pcchActual) = 0;

};
#else
typedef struct IWICComponentInfoVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICComponentInfo* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICComponentInfo* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICComponentInfo* This);

    /*** IWICComponentInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *GetComponentType)(
        IWICComponentInfo* This,
        WICComponentType *pType);

    HRESULT (STDMETHODCALLTYPE *GetCLSID)(
        IWICComponentInfo* This,
        CLSID *pclsid);

    HRESULT (STDMETHODCALLTYPE *GetSigningStatus)(
        IWICComponentInfo* This,
        DWORD *pStatus);

    HRESULT (STDMETHODCALLTYPE *GetAuthor)(
        IWICComponentInfo* This,
        UINT cchAuthor,
        WCHAR *wzAuthor,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetVendorGUID)(
        IWICComponentInfo* This,
        GUID *pguidVendor);

    HRESULT (STDMETHODCALLTYPE *GetVersion)(
        IWICComponentInfo* This,
        UINT cchVersion,
        WCHAR *wzVersion,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetSpecVersion)(
        IWICComponentInfo* This,
        UINT cchSpecVersion,
        WCHAR *wzSpecVersion,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetFriendlyName)(
        IWICComponentInfo* This,
        UINT cchFriendlyName,
        WCHAR *wzFriendlyName,
        UINT *pcchActual);

    END_INTERFACE
} IWICComponentInfoVtbl;
interface IWICComponentInfo {
    CONST_VTBL IWICComponentInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICComponentInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICComponentInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICComponentInfo_Release(This) (This)->lpVtbl->Release(This)
/*** IWICComponentInfo methods ***/
#define IWICComponentInfo_GetComponentType(This,pType) (This)->lpVtbl->GetComponentType(This,pType)
#define IWICComponentInfo_GetCLSID(This,pclsid) (This)->lpVtbl->GetCLSID(This,pclsid)
#define IWICComponentInfo_GetSigningStatus(This,pStatus) (This)->lpVtbl->GetSigningStatus(This,pStatus)
#define IWICComponentInfo_GetAuthor(This,cchAuthor,wzAuthor,pcchActual) (This)->lpVtbl->GetAuthor(This,cchAuthor,wzAuthor,pcchActual)
#define IWICComponentInfo_GetVendorGUID(This,pguidVendor) (This)->lpVtbl->GetVendorGUID(This,pguidVendor)
#define IWICComponentInfo_GetVersion(This,cchVersion,wzVersion,pcchActual) (This)->lpVtbl->GetVersion(This,cchVersion,wzVersion,pcchActual)
#define IWICComponentInfo_GetSpecVersion(This,cchSpecVersion,wzSpecVersion,pcchActual) (This)->lpVtbl->GetSpecVersion(This,cchSpecVersion,wzSpecVersion,pcchActual)
#define IWICComponentInfo_GetFriendlyName(This,cchFriendlyName,wzFriendlyName,pcchActual) (This)->lpVtbl->GetFriendlyName(This,cchFriendlyName,wzFriendlyName,pcchActual)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICComponentInfo_GetComponentType_Proxy(
    IWICComponentInfo* This,
    WICComponentType *pType);
void __RPC_STUB IWICComponentInfo_GetComponentType_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICComponentInfo_GetCLSID_Proxy(
    IWICComponentInfo* This,
    CLSID *pclsid);
void __RPC_STUB IWICComponentInfo_GetCLSID_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICComponentInfo_GetSigningStatus_Proxy(
    IWICComponentInfo* This,
    DWORD *pStatus);
void __RPC_STUB IWICComponentInfo_GetSigningStatus_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICComponentInfo_GetAuthor_Proxy(
    IWICComponentInfo* This,
    UINT cchAuthor,
    WCHAR *wzAuthor,
    UINT *pcchActual);
void __RPC_STUB IWICComponentInfo_GetAuthor_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICComponentInfo_GetVendorGUID_Proxy(
    IWICComponentInfo* This,
    GUID *pguidVendor);
void __RPC_STUB IWICComponentInfo_GetVendorGUID_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICComponentInfo_GetVersion_Proxy(
    IWICComponentInfo* This,
    UINT cchVersion,
    WCHAR *wzVersion,
    UINT *pcchActual);
void __RPC_STUB IWICComponentInfo_GetVersion_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICComponentInfo_GetSpecVersion_Proxy(
    IWICComponentInfo* This,
    UINT cchSpecVersion,
    WCHAR *wzSpecVersion,
    UINT *pcchActual);
void __RPC_STUB IWICComponentInfo_GetSpecVersion_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICComponentInfo_GetFriendlyName_Proxy(
    IWICComponentInfo* This,
    UINT cchFriendlyName,
    WCHAR *wzFriendlyName,
    UINT *pcchActual);
void __RPC_STUB IWICComponentInfo_GetFriendlyName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICComponentInfo_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICMetadataQueryReader interface
 */
#ifndef __IWICMetadataQueryReader_INTERFACE_DEFINED__
#define __IWICMetadataQueryReader_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICMetadataQueryReader, 0x30989668, 0xe1c9, 0x4597, 0xb3,0x95, 0x45,0x8e,0xed,0xb8,0x08,0xdf);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWICMetadataQueryReader : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetContainerFormat(
        GUID *pguidContainerFormat) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetLocation(
        UINT cchMaxLength,
        WCHAR *wzNamespace,
        UINT *pcchActualLength) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMetadataByName(
        LPCWSTR wzName,
        PROPVARIANT *pvarValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetEnumerator(
        IEnumString **ppIEnumString) = 0;

};
#else
typedef struct IWICMetadataQueryReaderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICMetadataQueryReader* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICMetadataQueryReader* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICMetadataQueryReader* This);

    /*** IWICMetadataQueryReader methods ***/
    HRESULT (STDMETHODCALLTYPE *GetContainerFormat)(
        IWICMetadataQueryReader* This,
        GUID *pguidContainerFormat);

    HRESULT (STDMETHODCALLTYPE *GetLocation)(
        IWICMetadataQueryReader* This,
        UINT cchMaxLength,
        WCHAR *wzNamespace,
        UINT *pcchActualLength);

    HRESULT (STDMETHODCALLTYPE *GetMetadataByName)(
        IWICMetadataQueryReader* This,
        LPCWSTR wzName,
        PROPVARIANT *pvarValue);

    HRESULT (STDMETHODCALLTYPE *GetEnumerator)(
        IWICMetadataQueryReader* This,
        IEnumString **ppIEnumString);

    END_INTERFACE
} IWICMetadataQueryReaderVtbl;
interface IWICMetadataQueryReader {
    CONST_VTBL IWICMetadataQueryReaderVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICMetadataQueryReader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICMetadataQueryReader_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICMetadataQueryReader_Release(This) (This)->lpVtbl->Release(This)
/*** IWICMetadataQueryReader methods ***/
#define IWICMetadataQueryReader_GetContainerFormat(This,pguidContainerFormat) (This)->lpVtbl->GetContainerFormat(This,pguidContainerFormat)
#define IWICMetadataQueryReader_GetLocation(This,cchMaxLength,wzNamespace,pcchActualLength) (This)->lpVtbl->GetLocation(This,cchMaxLength,wzNamespace,pcchActualLength)
#define IWICMetadataQueryReader_GetMetadataByName(This,wzName,pvarValue) (This)->lpVtbl->GetMetadataByName(This,wzName,pvarValue)
#define IWICMetadataQueryReader_GetEnumerator(This,ppIEnumString) (This)->lpVtbl->GetEnumerator(This,ppIEnumString)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICMetadataQueryReader_GetContainerFormat_Proxy(
    IWICMetadataQueryReader* This,
    GUID *pguidContainerFormat);
void __RPC_STUB IWICMetadataQueryReader_GetContainerFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICMetadataQueryReader_GetLocation_Proxy(
    IWICMetadataQueryReader* This,
    UINT cchMaxLength,
    WCHAR *wzNamespace,
    UINT *pcchActualLength);
void __RPC_STUB IWICMetadataQueryReader_GetLocation_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICMetadataQueryReader_GetMetadataByName_Proxy(
    IWICMetadataQueryReader* This,
    LPCWSTR wzName,
    PROPVARIANT *pvarValue);
void __RPC_STUB IWICMetadataQueryReader_GetMetadataByName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICMetadataQueryReader_GetEnumerator_Proxy(
    IWICMetadataQueryReader* This,
    IEnumString **ppIEnumString);
void __RPC_STUB IWICMetadataQueryReader_GetEnumerator_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICMetadataQueryReader_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICMetadataQueryWriter interface
 */
#ifndef __IWICMetadataQueryWriter_INTERFACE_DEFINED__
#define __IWICMetadataQueryWriter_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICMetadataQueryWriter, 0xa721791a, 0x0def, 0x4d06, 0xbd,0x91, 0x21,0x18,0xbf,0x1d,0xb1,0x0b);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWICMetadataQueryWriter : public IWICMetadataQueryReader
{
    virtual HRESULT STDMETHODCALLTYPE SetMetadataByName(
        LPCWSTR wzName,
        const PROPVARIANT *pvarValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveMetadataByName(
        LPCWSTR wzName) = 0;

};
#else
typedef struct IWICMetadataQueryWriterVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICMetadataQueryWriter* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICMetadataQueryWriter* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICMetadataQueryWriter* This);

    /*** IWICMetadataQueryReader methods ***/
    HRESULT (STDMETHODCALLTYPE *GetContainerFormat)(
        IWICMetadataQueryWriter* This,
        GUID *pguidContainerFormat);

    HRESULT (STDMETHODCALLTYPE *GetLocation)(
        IWICMetadataQueryWriter* This,
        UINT cchMaxLength,
        WCHAR *wzNamespace,
        UINT *pcchActualLength);

    HRESULT (STDMETHODCALLTYPE *GetMetadataByName)(
        IWICMetadataQueryWriter* This,
        LPCWSTR wzName,
        PROPVARIANT *pvarValue);

    HRESULT (STDMETHODCALLTYPE *GetEnumerator)(
        IWICMetadataQueryWriter* This,
        IEnumString **ppIEnumString);

    /*** IWICMetadataQueryWriter methods ***/
    HRESULT (STDMETHODCALLTYPE *SetMetadataByName)(
        IWICMetadataQueryWriter* This,
        LPCWSTR wzName,
        const PROPVARIANT *pvarValue);

    HRESULT (STDMETHODCALLTYPE *RemoveMetadataByName)(
        IWICMetadataQueryWriter* This,
        LPCWSTR wzName);

    END_INTERFACE
} IWICMetadataQueryWriterVtbl;
interface IWICMetadataQueryWriter {
    CONST_VTBL IWICMetadataQueryWriterVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICMetadataQueryWriter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICMetadataQueryWriter_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICMetadataQueryWriter_Release(This) (This)->lpVtbl->Release(This)
/*** IWICMetadataQueryReader methods ***/
#define IWICMetadataQueryWriter_GetContainerFormat(This,pguidContainerFormat) (This)->lpVtbl->GetContainerFormat(This,pguidContainerFormat)
#define IWICMetadataQueryWriter_GetLocation(This,cchMaxLength,wzNamespace,pcchActualLength) (This)->lpVtbl->GetLocation(This,cchMaxLength,wzNamespace,pcchActualLength)
#define IWICMetadataQueryWriter_GetMetadataByName(This,wzName,pvarValue) (This)->lpVtbl->GetMetadataByName(This,wzName,pvarValue)
#define IWICMetadataQueryWriter_GetEnumerator(This,ppIEnumString) (This)->lpVtbl->GetEnumerator(This,ppIEnumString)
/*** IWICMetadataQueryWriter methods ***/
#define IWICMetadataQueryWriter_SetMetadataByName(This,wzName,pvarValue) (This)->lpVtbl->SetMetadataByName(This,wzName,pvarValue)
#define IWICMetadataQueryWriter_RemoveMetadataByName(This,wzName) (This)->lpVtbl->RemoveMetadataByName(This,wzName)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICMetadataQueryWriter_SetMetadataByName_Proxy(
    IWICMetadataQueryWriter* This,
    LPCWSTR wzName,
    const PROPVARIANT *pvarValue);
void __RPC_STUB IWICMetadataQueryWriter_SetMetadataByName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICMetadataQueryWriter_RemoveMetadataByName_Proxy(
    IWICMetadataQueryWriter* This,
    LPCWSTR wzName);
void __RPC_STUB IWICMetadataQueryWriter_RemoveMetadataByName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICMetadataQueryWriter_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICBitmapFrameDecode interface
 */
#ifndef __IWICBitmapFrameDecode_INTERFACE_DEFINED__
#define __IWICBitmapFrameDecode_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICBitmapFrameDecode, 0x3b16811b, 0x6a43, 0x4ec9, 0xa8,0x13, 0x3d,0x93,0x0c,0x13,0xb9,0x40);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWICBitmapFrameDecode : public IWICBitmapSource
{
    virtual HRESULT STDMETHODCALLTYPE GetMetadataQueryReader(
        IWICMetadataQueryReader **ppIMetadataQueryReader) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetColorContexts(
        UINT cCount,
        IWICColorContext **ppIColorContexts,
        UINT *pcActualCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetThumbnail(
        IWICBitmapSource **ppIThumbnail) = 0;

};
#else
typedef struct IWICBitmapFrameDecodeVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICBitmapFrameDecode* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICBitmapFrameDecode* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICBitmapFrameDecode* This);

    /*** IWICBitmapSource methods ***/
    HRESULT (STDMETHODCALLTYPE *GetSize)(
        IWICBitmapFrameDecode* This,
        UINT *puiWidth,
        UINT *puiHeight);

    HRESULT (STDMETHODCALLTYPE *GetPixelFormat)(
        IWICBitmapFrameDecode* This,
        WICPixelFormatGUID *pPixelFormat);

    HRESULT (STDMETHODCALLTYPE *GetResolution)(
        IWICBitmapFrameDecode* This,
        double *pDpiX,
        double *pDpiY);

    HRESULT (STDMETHODCALLTYPE *CopyPalette)(
        IWICBitmapFrameDecode* This,
        IWICPalette *pIPalette);

    HRESULT (STDMETHODCALLTYPE *CopyPixels)(
        IWICBitmapFrameDecode* This,
        const WICRect *prc,
        UINT cbStride,
        UINT cbBufferSize,
        BYTE *pbBuffer);

    /*** IWICBitmapFrameDecode methods ***/
    HRESULT (STDMETHODCALLTYPE *GetMetadataQueryReader)(
        IWICBitmapFrameDecode* This,
        IWICMetadataQueryReader **ppIMetadataQueryReader);

    HRESULT (STDMETHODCALLTYPE *GetColorContexts)(
        IWICBitmapFrameDecode* This,
        UINT cCount,
        IWICColorContext **ppIColorContexts,
        UINT *pcActualCount);

    HRESULT (STDMETHODCALLTYPE *GetThumbnail)(
        IWICBitmapFrameDecode* This,
        IWICBitmapSource **ppIThumbnail);

    END_INTERFACE
} IWICBitmapFrameDecodeVtbl;
interface IWICBitmapFrameDecode {
    CONST_VTBL IWICBitmapFrameDecodeVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICBitmapFrameDecode_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICBitmapFrameDecode_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICBitmapFrameDecode_Release(This) (This)->lpVtbl->Release(This)
/*** IWICBitmapSource methods ***/
#define IWICBitmapFrameDecode_GetSize(This,puiWidth,puiHeight) (This)->lpVtbl->GetSize(This,puiWidth,puiHeight)
#define IWICBitmapFrameDecode_GetPixelFormat(This,pPixelFormat) (This)->lpVtbl->GetPixelFormat(This,pPixelFormat)
#define IWICBitmapFrameDecode_GetResolution(This,pDpiX,pDpiY) (This)->lpVtbl->GetResolution(This,pDpiX,pDpiY)
#define IWICBitmapFrameDecode_CopyPalette(This,pIPalette) (This)->lpVtbl->CopyPalette(This,pIPalette)
#define IWICBitmapFrameDecode_CopyPixels(This,prc,cbStride,cbBufferSize,pbBuffer) (This)->lpVtbl->CopyPixels(This,prc,cbStride,cbBufferSize,pbBuffer)
/*** IWICBitmapFrameDecode methods ***/
#define IWICBitmapFrameDecode_GetMetadataQueryReader(This,ppIMetadataQueryReader) (This)->lpVtbl->GetMetadataQueryReader(This,ppIMetadataQueryReader)
#define IWICBitmapFrameDecode_GetColorContexts(This,cCount,ppIColorContexts,pcActualCount) (This)->lpVtbl->GetColorContexts(This,cCount,ppIColorContexts,pcActualCount)
#define IWICBitmapFrameDecode_GetThumbnail(This,ppIThumbnail) (This)->lpVtbl->GetThumbnail(This,ppIThumbnail)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICBitmapFrameDecode_GetMetadataQueryReader_Proxy(
    IWICBitmapFrameDecode* This,
    IWICMetadataQueryReader **ppIMetadataQueryReader);
void __RPC_STUB IWICBitmapFrameDecode_GetMetadataQueryReader_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapFrameDecode_GetColorContexts_Proxy(
    IWICBitmapFrameDecode* This,
    UINT cCount,
    IWICColorContext **ppIColorContexts,
    UINT *pcActualCount);
void __RPC_STUB IWICBitmapFrameDecode_GetColorContexts_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapFrameDecode_GetThumbnail_Proxy(
    IWICBitmapFrameDecode* This,
    IWICBitmapSource **ppIThumbnail);
void __RPC_STUB IWICBitmapFrameDecode_GetThumbnail_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICBitmapFrameDecode_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICBitmapCodecInfo interface
 */
#ifndef __IWICBitmapCodecInfo_INTERFACE_DEFINED__
#define __IWICBitmapCodecInfo_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICBitmapCodecInfo, 0xe87a44c4, 0xb76e, 0x4c47, 0x8b,0x09, 0x29,0x8e,0xb1,0x2a,0x27,0x14);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWICBitmapCodecInfo : public IWICComponentInfo
{
    virtual HRESULT STDMETHODCALLTYPE GetContainerFormat(
        GUID *pguidContainerFormat) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPixelFormats(
        UINT cFormats,
        GUID *pguidPixelFormats,
        UINT *pcActual) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetColorManagementVersion(
        UINT cchColorManagementVersion,
        WCHAR *wzColorManagementVersion,
        UINT *pcchActual) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDeviceManufacturer(
        UINT cchDeviceManufacturer,
        WCHAR *wzDeviceManufacturer,
        UINT *pcchActual) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDeviceModels(
        UINT cchDeviceModels,
        WCHAR *wzDeviceModels,
        UINT *pcchActual) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMimeTypes(
        UINT cchMimeTypes,
        WCHAR *wzMimeTypes,
        UINT *pcchActual) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFileExtensions(
        UINT cchFileExtensions,
        WCHAR *wzFileExtensions,
        UINT *pcchActual) = 0;

    virtual HRESULT STDMETHODCALLTYPE DoesSupportAnimation(
        BOOL *pfSupportAnimation) = 0;

    virtual HRESULT STDMETHODCALLTYPE DoesSupportChromaKey(
        BOOL *pfSupportChromaKey) = 0;

    virtual HRESULT STDMETHODCALLTYPE DoesSupportLossless(
        BOOL *pfSupportLossless) = 0;

    virtual HRESULT STDMETHODCALLTYPE DoesSupportMultiframe(
        BOOL *pfSupportMultiframe) = 0;

    virtual HRESULT STDMETHODCALLTYPE MatchesMimeType(
        LPCWSTR wzMimeType,
        BOOL *pfMatches) = 0;

};
#else
typedef struct IWICBitmapCodecInfoVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICBitmapCodecInfo* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICBitmapCodecInfo* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICBitmapCodecInfo* This);

    /*** IWICComponentInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *GetComponentType)(
        IWICBitmapCodecInfo* This,
        WICComponentType *pType);

    HRESULT (STDMETHODCALLTYPE *GetCLSID)(
        IWICBitmapCodecInfo* This,
        CLSID *pclsid);

    HRESULT (STDMETHODCALLTYPE *GetSigningStatus)(
        IWICBitmapCodecInfo* This,
        DWORD *pStatus);

    HRESULT (STDMETHODCALLTYPE *GetAuthor)(
        IWICBitmapCodecInfo* This,
        UINT cchAuthor,
        WCHAR *wzAuthor,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetVendorGUID)(
        IWICBitmapCodecInfo* This,
        GUID *pguidVendor);

    HRESULT (STDMETHODCALLTYPE *GetVersion)(
        IWICBitmapCodecInfo* This,
        UINT cchVersion,
        WCHAR *wzVersion,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetSpecVersion)(
        IWICBitmapCodecInfo* This,
        UINT cchSpecVersion,
        WCHAR *wzSpecVersion,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetFriendlyName)(
        IWICBitmapCodecInfo* This,
        UINT cchFriendlyName,
        WCHAR *wzFriendlyName,
        UINT *pcchActual);

    /*** IWICBitmapCodecInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *GetContainerFormat)(
        IWICBitmapCodecInfo* This,
        GUID *pguidContainerFormat);

    HRESULT (STDMETHODCALLTYPE *GetPixelFormats)(
        IWICBitmapCodecInfo* This,
        UINT cFormats,
        GUID *pguidPixelFormats,
        UINT *pcActual);

    HRESULT (STDMETHODCALLTYPE *GetColorManagementVersion)(
        IWICBitmapCodecInfo* This,
        UINT cchColorManagementVersion,
        WCHAR *wzColorManagementVersion,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetDeviceManufacturer)(
        IWICBitmapCodecInfo* This,
        UINT cchDeviceManufacturer,
        WCHAR *wzDeviceManufacturer,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetDeviceModels)(
        IWICBitmapCodecInfo* This,
        UINT cchDeviceModels,
        WCHAR *wzDeviceModels,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetMimeTypes)(
        IWICBitmapCodecInfo* This,
        UINT cchMimeTypes,
        WCHAR *wzMimeTypes,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetFileExtensions)(
        IWICBitmapCodecInfo* This,
        UINT cchFileExtensions,
        WCHAR *wzFileExtensions,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *DoesSupportAnimation)(
        IWICBitmapCodecInfo* This,
        BOOL *pfSupportAnimation);

    HRESULT (STDMETHODCALLTYPE *DoesSupportChromaKey)(
        IWICBitmapCodecInfo* This,
        BOOL *pfSupportChromaKey);

    HRESULT (STDMETHODCALLTYPE *DoesSupportLossless)(
        IWICBitmapCodecInfo* This,
        BOOL *pfSupportLossless);

    HRESULT (STDMETHODCALLTYPE *DoesSupportMultiframe)(
        IWICBitmapCodecInfo* This,
        BOOL *pfSupportMultiframe);

    HRESULT (STDMETHODCALLTYPE *MatchesMimeType)(
        IWICBitmapCodecInfo* This,
        LPCWSTR wzMimeType,
        BOOL *pfMatches);

    END_INTERFACE
} IWICBitmapCodecInfoVtbl;
interface IWICBitmapCodecInfo {
    CONST_VTBL IWICBitmapCodecInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICBitmapCodecInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICBitmapCodecInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICBitmapCodecInfo_Release(This) (This)->lpVtbl->Release(This)
/*** IWICComponentInfo methods ***/
#define IWICBitmapCodecInfo_GetComponentType(This,pType) (This)->lpVtbl->GetComponentType(This,pType)
#define IWICBitmapCodecInfo_GetCLSID(This,pclsid) (This)->lpVtbl->GetCLSID(This,pclsid)
#define IWICBitmapCodecInfo_GetSigningStatus(This,pStatus) (This)->lpVtbl->GetSigningStatus(This,pStatus)
#define IWICBitmapCodecInfo_GetAuthor(This,cchAuthor,wzAuthor,pcchActual) (This)->lpVtbl->GetAuthor(This,cchAuthor,wzAuthor,pcchActual)
#define IWICBitmapCodecInfo_GetVendorGUID(This,pguidVendor) (This)->lpVtbl->GetVendorGUID(This,pguidVendor)
#define IWICBitmapCodecInfo_GetVersion(This,cchVersion,wzVersion,pcchActual) (This)->lpVtbl->GetVersion(This,cchVersion,wzVersion,pcchActual)
#define IWICBitmapCodecInfo_GetSpecVersion(This,cchSpecVersion,wzSpecVersion,pcchActual) (This)->lpVtbl->GetSpecVersion(This,cchSpecVersion,wzSpecVersion,pcchActual)
#define IWICBitmapCodecInfo_GetFriendlyName(This,cchFriendlyName,wzFriendlyName,pcchActual) (This)->lpVtbl->GetFriendlyName(This,cchFriendlyName,wzFriendlyName,pcchActual)
/*** IWICBitmapCodecInfo methods ***/
#define IWICBitmapCodecInfo_GetContainerFormat(This,pguidContainerFormat) (This)->lpVtbl->GetContainerFormat(This,pguidContainerFormat)
#define IWICBitmapCodecInfo_GetPixelFormats(This,cFormats,pguidPixelFormats,pcActual) (This)->lpVtbl->GetPixelFormats(This,cFormats,pguidPixelFormats,pcActual)
#define IWICBitmapCodecInfo_GetColorManagementVersion(This,cchColorManagementVersion,wzColorManagementVersion,pcchActual) (This)->lpVtbl->GetColorManagementVersion(This,cchColorManagementVersion,wzColorManagementVersion,pcchActual)
#define IWICBitmapCodecInfo_GetDeviceManufacturer(This,cchDeviceManufacturer,wzDeviceManufacturer,pcchActual) (This)->lpVtbl->GetDeviceManufacturer(This,cchDeviceManufacturer,wzDeviceManufacturer,pcchActual)
#define IWICBitmapCodecInfo_GetDeviceModels(This,cchDeviceModels,wzDeviceModels,pcchActual) (This)->lpVtbl->GetDeviceModels(This,cchDeviceModels,wzDeviceModels,pcchActual)
#define IWICBitmapCodecInfo_GetMimeTypes(This,cchMimeTypes,wzMimeTypes,pcchActual) (This)->lpVtbl->GetMimeTypes(This,cchMimeTypes,wzMimeTypes,pcchActual)
#define IWICBitmapCodecInfo_GetFileExtensions(This,cchFileExtensions,wzFileExtensions,pcchActual) (This)->lpVtbl->GetFileExtensions(This,cchFileExtensions,wzFileExtensions,pcchActual)
#define IWICBitmapCodecInfo_DoesSupportAnimation(This,pfSupportAnimation) (This)->lpVtbl->DoesSupportAnimation(This,pfSupportAnimation)
#define IWICBitmapCodecInfo_DoesSupportChromaKey(This,pfSupportChromaKey) (This)->lpVtbl->DoesSupportChromaKey(This,pfSupportChromaKey)
#define IWICBitmapCodecInfo_DoesSupportLossless(This,pfSupportLossless) (This)->lpVtbl->DoesSupportLossless(This,pfSupportLossless)
#define IWICBitmapCodecInfo_DoesSupportMultiframe(This,pfSupportMultiframe) (This)->lpVtbl->DoesSupportMultiframe(This,pfSupportMultiframe)
#define IWICBitmapCodecInfo_MatchesMimeType(This,wzMimeType,pfMatches) (This)->lpVtbl->MatchesMimeType(This,wzMimeType,pfMatches)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICBitmapCodecInfo_GetContainerFormat_Proxy(
    IWICBitmapCodecInfo* This,
    GUID *pguidContainerFormat);
void __RPC_STUB IWICBitmapCodecInfo_GetContainerFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapCodecInfo_GetPixelFormats_Proxy(
    IWICBitmapCodecInfo* This,
    UINT cFormats,
    GUID *pguidPixelFormats,
    UINT *pcActual);
void __RPC_STUB IWICBitmapCodecInfo_GetPixelFormats_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapCodecInfo_GetColorManagementVersion_Proxy(
    IWICBitmapCodecInfo* This,
    UINT cchColorManagementVersion,
    WCHAR *wzColorManagementVersion,
    UINT *pcchActual);
void __RPC_STUB IWICBitmapCodecInfo_GetColorManagementVersion_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapCodecInfo_GetDeviceManufacturer_Proxy(
    IWICBitmapCodecInfo* This,
    UINT cchDeviceManufacturer,
    WCHAR *wzDeviceManufacturer,
    UINT *pcchActual);
void __RPC_STUB IWICBitmapCodecInfo_GetDeviceManufacturer_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapCodecInfo_GetDeviceModels_Proxy(
    IWICBitmapCodecInfo* This,
    UINT cchDeviceModels,
    WCHAR *wzDeviceModels,
    UINT *pcchActual);
void __RPC_STUB IWICBitmapCodecInfo_GetDeviceModels_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapCodecInfo_GetMimeTypes_Proxy(
    IWICBitmapCodecInfo* This,
    UINT cchMimeTypes,
    WCHAR *wzMimeTypes,
    UINT *pcchActual);
void __RPC_STUB IWICBitmapCodecInfo_GetMimeTypes_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapCodecInfo_GetFileExtensions_Proxy(
    IWICBitmapCodecInfo* This,
    UINT cchFileExtensions,
    WCHAR *wzFileExtensions,
    UINT *pcchActual);
void __RPC_STUB IWICBitmapCodecInfo_GetFileExtensions_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapCodecInfo_DoesSupportAnimation_Proxy(
    IWICBitmapCodecInfo* This,
    BOOL *pfSupportAnimation);
void __RPC_STUB IWICBitmapCodecInfo_DoesSupportAnimation_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapCodecInfo_DoesSupportChromaKey_Proxy(
    IWICBitmapCodecInfo* This,
    BOOL *pfSupportChromaKey);
void __RPC_STUB IWICBitmapCodecInfo_DoesSupportChromaKey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapCodecInfo_DoesSupportLossless_Proxy(
    IWICBitmapCodecInfo* This,
    BOOL *pfSupportLossless);
void __RPC_STUB IWICBitmapCodecInfo_DoesSupportLossless_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapCodecInfo_DoesSupportMultiframe_Proxy(
    IWICBitmapCodecInfo* This,
    BOOL *pfSupportMultiframe);
void __RPC_STUB IWICBitmapCodecInfo_DoesSupportMultiframe_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapCodecInfo_MatchesMimeType_Proxy(
    IWICBitmapCodecInfo* This,
    LPCWSTR wzMimeType,
    BOOL *pfMatches);
void __RPC_STUB IWICBitmapCodecInfo_MatchesMimeType_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICBitmapCodecInfo_INTERFACE_DEFINED__ */

#ifndef __IWICBitmapDecoder_FWD_DEFINED__
#define __IWICBitmapDecoder_FWD_DEFINED__
typedef interface IWICBitmapDecoder IWICBitmapDecoder;
#endif

/*****************************************************************************
 * IWICBitmapDecoderInfo interface
 */
#ifndef __IWICBitmapDecoderInfo_INTERFACE_DEFINED__
#define __IWICBitmapDecoderInfo_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICBitmapDecoderInfo, 0xd8cd007f, 0xd08f, 0x4191, 0x9b,0xfc, 0x23,0x6e,0xa7,0xf0,0xe4,0xb5);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWICBitmapDecoderInfo : public IWICBitmapCodecInfo
{
    virtual HRESULT STDMETHODCALLTYPE GetPatterns(
        UINT cbSizePatterns,
        WICBitmapPattern *pPatterns,
        UINT *pcPatterns,
        UINT *pcbPatternsActual) = 0;

    virtual HRESULT STDMETHODCALLTYPE MatchesPattern(
        IStream *pIStream,
        BOOL *pfMatches) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateInstance(
        IWICBitmapDecoder **ppIBitmapDecoder) = 0;

};
#else
typedef struct IWICBitmapDecoderInfoVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICBitmapDecoderInfo* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICBitmapDecoderInfo* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICBitmapDecoderInfo* This);

    /*** IWICComponentInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *GetComponentType)(
        IWICBitmapDecoderInfo* This,
        WICComponentType *pType);

    HRESULT (STDMETHODCALLTYPE *GetCLSID)(
        IWICBitmapDecoderInfo* This,
        CLSID *pclsid);

    HRESULT (STDMETHODCALLTYPE *GetSigningStatus)(
        IWICBitmapDecoderInfo* This,
        DWORD *pStatus);

    HRESULT (STDMETHODCALLTYPE *GetAuthor)(
        IWICBitmapDecoderInfo* This,
        UINT cchAuthor,
        WCHAR *wzAuthor,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetVendorGUID)(
        IWICBitmapDecoderInfo* This,
        GUID *pguidVendor);

    HRESULT (STDMETHODCALLTYPE *GetVersion)(
        IWICBitmapDecoderInfo* This,
        UINT cchVersion,
        WCHAR *wzVersion,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetSpecVersion)(
        IWICBitmapDecoderInfo* This,
        UINT cchSpecVersion,
        WCHAR *wzSpecVersion,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetFriendlyName)(
        IWICBitmapDecoderInfo* This,
        UINT cchFriendlyName,
        WCHAR *wzFriendlyName,
        UINT *pcchActual);

    /*** IWICBitmapCodecInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *GetContainerFormat)(
        IWICBitmapDecoderInfo* This,
        GUID *pguidContainerFormat);

    HRESULT (STDMETHODCALLTYPE *GetPixelFormats)(
        IWICBitmapDecoderInfo* This,
        UINT cFormats,
        GUID *pguidPixelFormats,
        UINT *pcActual);

    HRESULT (STDMETHODCALLTYPE *GetColorManagementVersion)(
        IWICBitmapDecoderInfo* This,
        UINT cchColorManagementVersion,
        WCHAR *wzColorManagementVersion,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetDeviceManufacturer)(
        IWICBitmapDecoderInfo* This,
        UINT cchDeviceManufacturer,
        WCHAR *wzDeviceManufacturer,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetDeviceModels)(
        IWICBitmapDecoderInfo* This,
        UINT cchDeviceModels,
        WCHAR *wzDeviceModels,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetMimeTypes)(
        IWICBitmapDecoderInfo* This,
        UINT cchMimeTypes,
        WCHAR *wzMimeTypes,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetFileExtensions)(
        IWICBitmapDecoderInfo* This,
        UINT cchFileExtensions,
        WCHAR *wzFileExtensions,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *DoesSupportAnimation)(
        IWICBitmapDecoderInfo* This,
        BOOL *pfSupportAnimation);

    HRESULT (STDMETHODCALLTYPE *DoesSupportChromaKey)(
        IWICBitmapDecoderInfo* This,
        BOOL *pfSupportChromaKey);

    HRESULT (STDMETHODCALLTYPE *DoesSupportLossless)(
        IWICBitmapDecoderInfo* This,
        BOOL *pfSupportLossless);

    HRESULT (STDMETHODCALLTYPE *DoesSupportMultiframe)(
        IWICBitmapDecoderInfo* This,
        BOOL *pfSupportMultiframe);

    HRESULT (STDMETHODCALLTYPE *MatchesMimeType)(
        IWICBitmapDecoderInfo* This,
        LPCWSTR wzMimeType,
        BOOL *pfMatches);

    /*** IWICBitmapDecoderInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPatterns)(
        IWICBitmapDecoderInfo* This,
        UINT cbSizePatterns,
        WICBitmapPattern *pPatterns,
        UINT *pcPatterns,
        UINT *pcbPatternsActual);

    HRESULT (STDMETHODCALLTYPE *MatchesPattern)(
        IWICBitmapDecoderInfo* This,
        IStream *pIStream,
        BOOL *pfMatches);

    HRESULT (STDMETHODCALLTYPE *CreateInstance)(
        IWICBitmapDecoderInfo* This,
        IWICBitmapDecoder **ppIBitmapDecoder);

    END_INTERFACE
} IWICBitmapDecoderInfoVtbl;
interface IWICBitmapDecoderInfo {
    CONST_VTBL IWICBitmapDecoderInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICBitmapDecoderInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICBitmapDecoderInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICBitmapDecoderInfo_Release(This) (This)->lpVtbl->Release(This)
/*** IWICComponentInfo methods ***/
#define IWICBitmapDecoderInfo_GetComponentType(This,pType) (This)->lpVtbl->GetComponentType(This,pType)
#define IWICBitmapDecoderInfo_GetCLSID(This,pclsid) (This)->lpVtbl->GetCLSID(This,pclsid)
#define IWICBitmapDecoderInfo_GetSigningStatus(This,pStatus) (This)->lpVtbl->GetSigningStatus(This,pStatus)
#define IWICBitmapDecoderInfo_GetAuthor(This,cchAuthor,wzAuthor,pcchActual) (This)->lpVtbl->GetAuthor(This,cchAuthor,wzAuthor,pcchActual)
#define IWICBitmapDecoderInfo_GetVendorGUID(This,pguidVendor) (This)->lpVtbl->GetVendorGUID(This,pguidVendor)
#define IWICBitmapDecoderInfo_GetVersion(This,cchVersion,wzVersion,pcchActual) (This)->lpVtbl->GetVersion(This,cchVersion,wzVersion,pcchActual)
#define IWICBitmapDecoderInfo_GetSpecVersion(This,cchSpecVersion,wzSpecVersion,pcchActual) (This)->lpVtbl->GetSpecVersion(This,cchSpecVersion,wzSpecVersion,pcchActual)
#define IWICBitmapDecoderInfo_GetFriendlyName(This,cchFriendlyName,wzFriendlyName,pcchActual) (This)->lpVtbl->GetFriendlyName(This,cchFriendlyName,wzFriendlyName,pcchActual)
/*** IWICBitmapCodecInfo methods ***/
#define IWICBitmapDecoderInfo_GetContainerFormat(This,pguidContainerFormat) (This)->lpVtbl->GetContainerFormat(This,pguidContainerFormat)
#define IWICBitmapDecoderInfo_GetPixelFormats(This,cFormats,pguidPixelFormats,pcActual) (This)->lpVtbl->GetPixelFormats(This,cFormats,pguidPixelFormats,pcActual)
#define IWICBitmapDecoderInfo_GetColorManagementVersion(This,cchColorManagementVersion,wzColorManagementVersion,pcchActual) (This)->lpVtbl->GetColorManagementVersion(This,cchColorManagementVersion,wzColorManagementVersion,pcchActual)
#define IWICBitmapDecoderInfo_GetDeviceManufacturer(This,cchDeviceManufacturer,wzDeviceManufacturer,pcchActual) (This)->lpVtbl->GetDeviceManufacturer(This,cchDeviceManufacturer,wzDeviceManufacturer,pcchActual)
#define IWICBitmapDecoderInfo_GetDeviceModels(This,cchDeviceModels,wzDeviceModels,pcchActual) (This)->lpVtbl->GetDeviceModels(This,cchDeviceModels,wzDeviceModels,pcchActual)
#define IWICBitmapDecoderInfo_GetMimeTypes(This,cchMimeTypes,wzMimeTypes,pcchActual) (This)->lpVtbl->GetMimeTypes(This,cchMimeTypes,wzMimeTypes,pcchActual)
#define IWICBitmapDecoderInfo_GetFileExtensions(This,cchFileExtensions,wzFileExtensions,pcchActual) (This)->lpVtbl->GetFileExtensions(This,cchFileExtensions,wzFileExtensions,pcchActual)
#define IWICBitmapDecoderInfo_DoesSupportAnimation(This,pfSupportAnimation) (This)->lpVtbl->DoesSupportAnimation(This,pfSupportAnimation)
#define IWICBitmapDecoderInfo_DoesSupportChromaKey(This,pfSupportChromaKey) (This)->lpVtbl->DoesSupportChromaKey(This,pfSupportChromaKey)
#define IWICBitmapDecoderInfo_DoesSupportLossless(This,pfSupportLossless) (This)->lpVtbl->DoesSupportLossless(This,pfSupportLossless)
#define IWICBitmapDecoderInfo_DoesSupportMultiframe(This,pfSupportMultiframe) (This)->lpVtbl->DoesSupportMultiframe(This,pfSupportMultiframe)
#define IWICBitmapDecoderInfo_MatchesMimeType(This,wzMimeType,pfMatches) (This)->lpVtbl->MatchesMimeType(This,wzMimeType,pfMatches)
/*** IWICBitmapDecoderInfo methods ***/
#define IWICBitmapDecoderInfo_GetPatterns(This,cbSizePatterns,pPatterns,pcPatterns,pcbPatternsActual) (This)->lpVtbl->GetPatterns(This,cbSizePatterns,pPatterns,pcPatterns,pcbPatternsActual)
#define IWICBitmapDecoderInfo_MatchesPattern(This,pIStream,pfMatches) (This)->lpVtbl->MatchesPattern(This,pIStream,pfMatches)
#define IWICBitmapDecoderInfo_CreateInstance(This,ppIBitmapDecoder) (This)->lpVtbl->CreateInstance(This,ppIBitmapDecoder)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICBitmapDecoderInfo_MatchesPattern_Proxy(
    IWICBitmapDecoderInfo* This,
    IStream *pIStream,
    BOOL *pfMatches);
void __RPC_STUB IWICBitmapDecoderInfo_MatchesPattern_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapDecoderInfo_CreateInstance_Proxy(
    IWICBitmapDecoderInfo* This,
    IWICBitmapDecoder **ppIBitmapDecoder);
void __RPC_STUB IWICBitmapDecoderInfo_CreateInstance_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICBitmapDecoderInfo_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICBitmapDecoder interface
 */
#ifndef __IWICBitmapDecoder_INTERFACE_DEFINED__
#define __IWICBitmapDecoder_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICBitmapDecoder, 0x9edde9e7, 0x8dee, 0x47ea, 0x99,0xdf, 0xe6,0xfa,0xf2,0xed,0x44,0xbf);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWICBitmapDecoder : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE QueryCapability(
        IStream *pIStream,
        DWORD *pdwCapability) = 0;

    virtual HRESULT STDMETHODCALLTYPE Initialize(
        IStream *pIStream,
        WICDecodeOptions cacheOptions) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetContainerFormat(
        GUID *pguidContainerFormat) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDecoderInfo(
        IWICBitmapDecoderInfo **ppIDecoderInfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE CopyPalette(
        IWICPalette *pIPalette) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMetadataQueryReader(
        IWICMetadataQueryReader **ppIMetadataQueryReader) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPreview(
        IWICBitmapSource **ppIBitmapSource) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetColorContexts(
        UINT cCount,
        IWICColorContext **ppIColorContexts,
        UINT *pcActualCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetThumbnail(
        IWICBitmapSource **ppIThumbnail) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFrameCount(
        UINT *pCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFrame(
        UINT index,
        IWICBitmapFrameDecode **ppIBitmapFrame) = 0;

};
#else
typedef struct IWICBitmapDecoderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICBitmapDecoder* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICBitmapDecoder* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICBitmapDecoder* This);

    /*** IWICBitmapDecoder methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryCapability)(
        IWICBitmapDecoder* This,
        IStream *pIStream,
        DWORD *pdwCapability);

    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IWICBitmapDecoder* This,
        IStream *pIStream,
        WICDecodeOptions cacheOptions);

    HRESULT (STDMETHODCALLTYPE *GetContainerFormat)(
        IWICBitmapDecoder* This,
        GUID *pguidContainerFormat);

    HRESULT (STDMETHODCALLTYPE *GetDecoderInfo)(
        IWICBitmapDecoder* This,
        IWICBitmapDecoderInfo **ppIDecoderInfo);

    HRESULT (STDMETHODCALLTYPE *CopyPalette)(
        IWICBitmapDecoder* This,
        IWICPalette *pIPalette);

    HRESULT (STDMETHODCALLTYPE *GetMetadataQueryReader)(
        IWICBitmapDecoder* This,
        IWICMetadataQueryReader **ppIMetadataQueryReader);

    HRESULT (STDMETHODCALLTYPE *GetPreview)(
        IWICBitmapDecoder* This,
        IWICBitmapSource **ppIBitmapSource);

    HRESULT (STDMETHODCALLTYPE *GetColorContexts)(
        IWICBitmapDecoder* This,
        UINT cCount,
        IWICColorContext **ppIColorContexts,
        UINT *pcActualCount);

    HRESULT (STDMETHODCALLTYPE *GetThumbnail)(
        IWICBitmapDecoder* This,
        IWICBitmapSource **ppIThumbnail);

    HRESULT (STDMETHODCALLTYPE *GetFrameCount)(
        IWICBitmapDecoder* This,
        UINT *pCount);

    HRESULT (STDMETHODCALLTYPE *GetFrame)(
        IWICBitmapDecoder* This,
        UINT index,
        IWICBitmapFrameDecode **ppIBitmapFrame);

    END_INTERFACE
} IWICBitmapDecoderVtbl;
interface IWICBitmapDecoder {
    CONST_VTBL IWICBitmapDecoderVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICBitmapDecoder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICBitmapDecoder_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICBitmapDecoder_Release(This) (This)->lpVtbl->Release(This)
/*** IWICBitmapDecoder methods ***/
#define IWICBitmapDecoder_QueryCapability(This,pIStream,pdwCapability) (This)->lpVtbl->QueryCapability(This,pIStream,pdwCapability)
#define IWICBitmapDecoder_Initialize(This,pIStream,cacheOptions) (This)->lpVtbl->Initialize(This,pIStream,cacheOptions)
#define IWICBitmapDecoder_GetContainerFormat(This,pguidContainerFormat) (This)->lpVtbl->GetContainerFormat(This,pguidContainerFormat)
#define IWICBitmapDecoder_GetDecoderInfo(This,ppIDecoderInfo) (This)->lpVtbl->GetDecoderInfo(This,ppIDecoderInfo)
#define IWICBitmapDecoder_CopyPalette(This,pIPalette) (This)->lpVtbl->CopyPalette(This,pIPalette)
#define IWICBitmapDecoder_GetMetadataQueryReader(This,ppIMetadataQueryReader) (This)->lpVtbl->GetMetadataQueryReader(This,ppIMetadataQueryReader)
#define IWICBitmapDecoder_GetPreview(This,ppIBitmapSource) (This)->lpVtbl->GetPreview(This,ppIBitmapSource)
#define IWICBitmapDecoder_GetColorContexts(This,cCount,ppIColorContexts,pcActualCount) (This)->lpVtbl->GetColorContexts(This,cCount,ppIColorContexts,pcActualCount)
#define IWICBitmapDecoder_GetThumbnail(This,ppIThumbnail) (This)->lpVtbl->GetThumbnail(This,ppIThumbnail)
#define IWICBitmapDecoder_GetFrameCount(This,pCount) (This)->lpVtbl->GetFrameCount(This,pCount)
#define IWICBitmapDecoder_GetFrame(This,index,ppIBitmapFrame) (This)->lpVtbl->GetFrame(This,index,ppIBitmapFrame)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICBitmapDecoder_QueryCapability_Proxy(
    IWICBitmapDecoder* This,
    IStream *pIStream,
    DWORD *pdwCapability);
void __RPC_STUB IWICBitmapDecoder_QueryCapability_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapDecoder_Initialize_Proxy(
    IWICBitmapDecoder* This,
    IStream *pIStream,
    WICDecodeOptions cacheOptions);
void __RPC_STUB IWICBitmapDecoder_Initialize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapDecoder_GetContainerFormat_Proxy(
    IWICBitmapDecoder* This,
    GUID *pguidContainerFormat);
void __RPC_STUB IWICBitmapDecoder_GetContainerFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapDecoder_GetDecoderInfo_Proxy(
    IWICBitmapDecoder* This,
    IWICBitmapDecoderInfo **ppIDecoderInfo);
void __RPC_STUB IWICBitmapDecoder_GetDecoderInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapDecoder_CopyPalette_Proxy(
    IWICBitmapDecoder* This,
    IWICPalette *pIPalette);
void __RPC_STUB IWICBitmapDecoder_CopyPalette_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapDecoder_GetMetadataQueryReader_Proxy(
    IWICBitmapDecoder* This,
    IWICMetadataQueryReader **ppIMetadataQueryReader);
void __RPC_STUB IWICBitmapDecoder_GetMetadataQueryReader_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapDecoder_GetPreview_Proxy(
    IWICBitmapDecoder* This,
    IWICBitmapSource **ppIBitmapSource);
void __RPC_STUB IWICBitmapDecoder_GetPreview_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapDecoder_GetColorContexts_Proxy(
    IWICBitmapDecoder* This,
    UINT cCount,
    IWICColorContext **ppIColorContexts,
    UINT *pcActualCount);
void __RPC_STUB IWICBitmapDecoder_GetColorContexts_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapDecoder_GetThumbnail_Proxy(
    IWICBitmapDecoder* This,
    IWICBitmapSource **ppIThumbnail);
void __RPC_STUB IWICBitmapDecoder_GetThumbnail_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapDecoder_GetFrameCount_Proxy(
    IWICBitmapDecoder* This,
    UINT *pCount);
void __RPC_STUB IWICBitmapDecoder_GetFrameCount_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapDecoder_GetFrame_Proxy(
    IWICBitmapDecoder* This,
    UINT index,
    IWICBitmapFrameDecode **ppIBitmapFrame);
void __RPC_STUB IWICBitmapDecoder_GetFrame_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICBitmapDecoder_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICBitmapFrameEncode interface
 */
#ifndef __IWICBitmapFrameEncode_INTERFACE_DEFINED__
#define __IWICBitmapFrameEncode_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICBitmapFrameEncode, 0x00000105, 0xa8f2, 0x4877, 0xba,0x0a, 0xfd,0x2b,0x66,0x45,0xfb,0x94);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWICBitmapFrameEncode : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        IPropertyBag2 *pIEncoderOptions) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetSize(
        UINT uiWidth,
        UINT uiHeight) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetResolution(
        double dpiX,
        double dpiY) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPixelFormat(
        WICPixelFormatGUID *pPixelFormat) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetColorContexts(
        UINT cCount,
        IWICColorContext **ppIColorContext) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPalette(
        IWICPalette *pIPalette) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetThumbnail(
        IWICBitmapSource *pIThumbnail) = 0;

    virtual HRESULT STDMETHODCALLTYPE WritePixels(
        UINT lineCount,
        UINT cbStride,
        UINT cbBufferSize,
        BYTE *pbPixels) = 0;

    virtual HRESULT STDMETHODCALLTYPE WriteSource(
        IWICBitmapSource *pIBitmapSource,
        WICRect *prc) = 0;

    virtual HRESULT STDMETHODCALLTYPE Commit(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMetadataQueryWriter(
        IWICMetadataQueryWriter **ppIMetadataQueryWriter) = 0;

};
#else
typedef struct IWICBitmapFrameEncodeVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICBitmapFrameEncode* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICBitmapFrameEncode* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICBitmapFrameEncode* This);

    /*** IWICBitmapFrameEncode methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IWICBitmapFrameEncode* This,
        IPropertyBag2 *pIEncoderOptions);

    HRESULT (STDMETHODCALLTYPE *SetSize)(
        IWICBitmapFrameEncode* This,
        UINT uiWidth,
        UINT uiHeight);

    HRESULT (STDMETHODCALLTYPE *SetResolution)(
        IWICBitmapFrameEncode* This,
        double dpiX,
        double dpiY);

    HRESULT (STDMETHODCALLTYPE *SetPixelFormat)(
        IWICBitmapFrameEncode* This,
        WICPixelFormatGUID *pPixelFormat);

    HRESULT (STDMETHODCALLTYPE *SetColorContexts)(
        IWICBitmapFrameEncode* This,
        UINT cCount,
        IWICColorContext **ppIColorContext);

    HRESULT (STDMETHODCALLTYPE *SetPalette)(
        IWICBitmapFrameEncode* This,
        IWICPalette *pIPalette);

    HRESULT (STDMETHODCALLTYPE *SetThumbnail)(
        IWICBitmapFrameEncode* This,
        IWICBitmapSource *pIThumbnail);

    HRESULT (STDMETHODCALLTYPE *WritePixels)(
        IWICBitmapFrameEncode* This,
        UINT lineCount,
        UINT cbStride,
        UINT cbBufferSize,
        BYTE *pbPixels);

    HRESULT (STDMETHODCALLTYPE *WriteSource)(
        IWICBitmapFrameEncode* This,
        IWICBitmapSource *pIBitmapSource,
        WICRect *prc);

    HRESULT (STDMETHODCALLTYPE *Commit)(
        IWICBitmapFrameEncode* This);

    HRESULT (STDMETHODCALLTYPE *GetMetadataQueryWriter)(
        IWICBitmapFrameEncode* This,
        IWICMetadataQueryWriter **ppIMetadataQueryWriter);

    END_INTERFACE
} IWICBitmapFrameEncodeVtbl;
interface IWICBitmapFrameEncode {
    CONST_VTBL IWICBitmapFrameEncodeVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICBitmapFrameEncode_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICBitmapFrameEncode_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICBitmapFrameEncode_Release(This) (This)->lpVtbl->Release(This)
/*** IWICBitmapFrameEncode methods ***/
#define IWICBitmapFrameEncode_Initialize(This,pIEncoderOptions) (This)->lpVtbl->Initialize(This,pIEncoderOptions)
#define IWICBitmapFrameEncode_SetSize(This,uiWidth,uiHeight) (This)->lpVtbl->SetSize(This,uiWidth,uiHeight)
#define IWICBitmapFrameEncode_SetResolution(This,dpiX,dpiY) (This)->lpVtbl->SetResolution(This,dpiX,dpiY)
#define IWICBitmapFrameEncode_SetPixelFormat(This,pPixelFormat) (This)->lpVtbl->SetPixelFormat(This,pPixelFormat)
#define IWICBitmapFrameEncode_SetColorContexts(This,cCount,ppIColorContext) (This)->lpVtbl->SetColorContexts(This,cCount,ppIColorContext)
#define IWICBitmapFrameEncode_SetPalette(This,pIPalette) (This)->lpVtbl->SetPalette(This,pIPalette)
#define IWICBitmapFrameEncode_SetThumbnail(This,pIThumbnail) (This)->lpVtbl->SetThumbnail(This,pIThumbnail)
#define IWICBitmapFrameEncode_WritePixels(This,lineCount,cbStride,cbBufferSize,pbPixels) (This)->lpVtbl->WritePixels(This,lineCount,cbStride,cbBufferSize,pbPixels)
#define IWICBitmapFrameEncode_WriteSource(This,pIBitmapSource,prc) (This)->lpVtbl->WriteSource(This,pIBitmapSource,prc)
#define IWICBitmapFrameEncode_Commit(This) (This)->lpVtbl->Commit(This)
#define IWICBitmapFrameEncode_GetMetadataQueryWriter(This,ppIMetadataQueryWriter) (This)->lpVtbl->GetMetadataQueryWriter(This,ppIMetadataQueryWriter)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICBitmapFrameEncode_Initialize_Proxy(
    IWICBitmapFrameEncode* This,
    IPropertyBag2 *pIEncoderOptions);
void __RPC_STUB IWICBitmapFrameEncode_Initialize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapFrameEncode_SetSize_Proxy(
    IWICBitmapFrameEncode* This,
    UINT uiWidth,
    UINT uiHeight);
void __RPC_STUB IWICBitmapFrameEncode_SetSize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapFrameEncode_SetResolution_Proxy(
    IWICBitmapFrameEncode* This,
    double dpiX,
    double dpiY);
void __RPC_STUB IWICBitmapFrameEncode_SetResolution_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapFrameEncode_SetPixelFormat_Proxy(
    IWICBitmapFrameEncode* This,
    WICPixelFormatGUID *pPixelFormat);
void __RPC_STUB IWICBitmapFrameEncode_SetPixelFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapFrameEncode_SetColorContexts_Proxy(
    IWICBitmapFrameEncode* This,
    UINT cCount,
    IWICColorContext **ppIColorContext);
void __RPC_STUB IWICBitmapFrameEncode_SetColorContexts_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapFrameEncode_SetPalette_Proxy(
    IWICBitmapFrameEncode* This,
    IWICPalette *pIPalette);
void __RPC_STUB IWICBitmapFrameEncode_SetPalette_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapFrameEncode_SetThumbnail_Proxy(
    IWICBitmapFrameEncode* This,
    IWICBitmapSource *pIThumbnail);
void __RPC_STUB IWICBitmapFrameEncode_SetThumbnail_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapFrameEncode_WritePixels_Proxy(
    IWICBitmapFrameEncode* This,
    UINT lineCount,
    UINT cbStride,
    UINT cbBufferSize,
    BYTE *pbPixels);
void __RPC_STUB IWICBitmapFrameEncode_WritePixels_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapFrameEncode_WriteSource_Proxy(
    IWICBitmapFrameEncode* This,
    IWICBitmapSource *pIBitmapSource,
    WICRect *prc);
void __RPC_STUB IWICBitmapFrameEncode_WriteSource_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapFrameEncode_Commit_Proxy(
    IWICBitmapFrameEncode* This);
void __RPC_STUB IWICBitmapFrameEncode_Commit_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapFrameEncode_GetMetadataQueryWriter_Proxy(
    IWICBitmapFrameEncode* This,
    IWICMetadataQueryWriter **ppIMetadataQueryWriter);
void __RPC_STUB IWICBitmapFrameEncode_GetMetadataQueryWriter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICBitmapFrameEncode_INTERFACE_DEFINED__ */

#ifndef __IWICBitmapEncoder_FWD_DEFINED__
#define __IWICBitmapEncoder_FWD_DEFINED__
typedef interface IWICBitmapEncoder IWICBitmapEncoder;
#endif

/*****************************************************************************
 * IWICBitmapEncoderInfo interface
 */
#ifndef __IWICBitmapEncoderInfo_INTERFACE_DEFINED__
#define __IWICBitmapEncoderInfo_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICBitmapEncoderInfo, 0x94c9b4ee, 0xa09f, 0x4f92, 0x8a,0x1e, 0x4a,0x9b,0xce,0x7e,0x76,0xfb);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWICBitmapEncoderInfo : public IWICBitmapCodecInfo
{
    virtual HRESULT STDMETHODCALLTYPE CreateInstance(
        IWICBitmapEncoder **ppIBitmapEncoder) = 0;

};
#else
typedef struct IWICBitmapEncoderInfoVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICBitmapEncoderInfo* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICBitmapEncoderInfo* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICBitmapEncoderInfo* This);

    /*** IWICComponentInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *GetComponentType)(
        IWICBitmapEncoderInfo* This,
        WICComponentType *pType);

    HRESULT (STDMETHODCALLTYPE *GetCLSID)(
        IWICBitmapEncoderInfo* This,
        CLSID *pclsid);

    HRESULT (STDMETHODCALLTYPE *GetSigningStatus)(
        IWICBitmapEncoderInfo* This,
        DWORD *pStatus);

    HRESULT (STDMETHODCALLTYPE *GetAuthor)(
        IWICBitmapEncoderInfo* This,
        UINT cchAuthor,
        WCHAR *wzAuthor,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetVendorGUID)(
        IWICBitmapEncoderInfo* This,
        GUID *pguidVendor);

    HRESULT (STDMETHODCALLTYPE *GetVersion)(
        IWICBitmapEncoderInfo* This,
        UINT cchVersion,
        WCHAR *wzVersion,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetSpecVersion)(
        IWICBitmapEncoderInfo* This,
        UINT cchSpecVersion,
        WCHAR *wzSpecVersion,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetFriendlyName)(
        IWICBitmapEncoderInfo* This,
        UINT cchFriendlyName,
        WCHAR *wzFriendlyName,
        UINT *pcchActual);

    /*** IWICBitmapCodecInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *GetContainerFormat)(
        IWICBitmapEncoderInfo* This,
        GUID *pguidContainerFormat);

    HRESULT (STDMETHODCALLTYPE *GetPixelFormats)(
        IWICBitmapEncoderInfo* This,
        UINT cFormats,
        GUID *pguidPixelFormats,
        UINT *pcActual);

    HRESULT (STDMETHODCALLTYPE *GetColorManagementVersion)(
        IWICBitmapEncoderInfo* This,
        UINT cchColorManagementVersion,
        WCHAR *wzColorManagementVersion,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetDeviceManufacturer)(
        IWICBitmapEncoderInfo* This,
        UINT cchDeviceManufacturer,
        WCHAR *wzDeviceManufacturer,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetDeviceModels)(
        IWICBitmapEncoderInfo* This,
        UINT cchDeviceModels,
        WCHAR *wzDeviceModels,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetMimeTypes)(
        IWICBitmapEncoderInfo* This,
        UINT cchMimeTypes,
        WCHAR *wzMimeTypes,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetFileExtensions)(
        IWICBitmapEncoderInfo* This,
        UINT cchFileExtensions,
        WCHAR *wzFileExtensions,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *DoesSupportAnimation)(
        IWICBitmapEncoderInfo* This,
        BOOL *pfSupportAnimation);

    HRESULT (STDMETHODCALLTYPE *DoesSupportChromaKey)(
        IWICBitmapEncoderInfo* This,
        BOOL *pfSupportChromaKey);

    HRESULT (STDMETHODCALLTYPE *DoesSupportLossless)(
        IWICBitmapEncoderInfo* This,
        BOOL *pfSupportLossless);

    HRESULT (STDMETHODCALLTYPE *DoesSupportMultiframe)(
        IWICBitmapEncoderInfo* This,
        BOOL *pfSupportMultiframe);

    HRESULT (STDMETHODCALLTYPE *MatchesMimeType)(
        IWICBitmapEncoderInfo* This,
        LPCWSTR wzMimeType,
        BOOL *pfMatches);

    /*** IWICBitmapEncoderInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateInstance)(
        IWICBitmapEncoderInfo* This,
        IWICBitmapEncoder **ppIBitmapEncoder);

    END_INTERFACE
} IWICBitmapEncoderInfoVtbl;
interface IWICBitmapEncoderInfo {
    CONST_VTBL IWICBitmapEncoderInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICBitmapEncoderInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICBitmapEncoderInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICBitmapEncoderInfo_Release(This) (This)->lpVtbl->Release(This)
/*** IWICComponentInfo methods ***/
#define IWICBitmapEncoderInfo_GetComponentType(This,pType) (This)->lpVtbl->GetComponentType(This,pType)
#define IWICBitmapEncoderInfo_GetCLSID(This,pclsid) (This)->lpVtbl->GetCLSID(This,pclsid)
#define IWICBitmapEncoderInfo_GetSigningStatus(This,pStatus) (This)->lpVtbl->GetSigningStatus(This,pStatus)
#define IWICBitmapEncoderInfo_GetAuthor(This,cchAuthor,wzAuthor,pcchActual) (This)->lpVtbl->GetAuthor(This,cchAuthor,wzAuthor,pcchActual)
#define IWICBitmapEncoderInfo_GetVendorGUID(This,pguidVendor) (This)->lpVtbl->GetVendorGUID(This,pguidVendor)
#define IWICBitmapEncoderInfo_GetVersion(This,cchVersion,wzVersion,pcchActual) (This)->lpVtbl->GetVersion(This,cchVersion,wzVersion,pcchActual)
#define IWICBitmapEncoderInfo_GetSpecVersion(This,cchSpecVersion,wzSpecVersion,pcchActual) (This)->lpVtbl->GetSpecVersion(This,cchSpecVersion,wzSpecVersion,pcchActual)
#define IWICBitmapEncoderInfo_GetFriendlyName(This,cchFriendlyName,wzFriendlyName,pcchActual) (This)->lpVtbl->GetFriendlyName(This,cchFriendlyName,wzFriendlyName,pcchActual)
/*** IWICBitmapCodecInfo methods ***/
#define IWICBitmapEncoderInfo_GetContainerFormat(This,pguidContainerFormat) (This)->lpVtbl->GetContainerFormat(This,pguidContainerFormat)
#define IWICBitmapEncoderInfo_GetPixelFormats(This,cFormats,pguidPixelFormats,pcActual) (This)->lpVtbl->GetPixelFormats(This,cFormats,pguidPixelFormats,pcActual)
#define IWICBitmapEncoderInfo_GetColorManagementVersion(This,cchColorManagementVersion,wzColorManagementVersion,pcchActual) (This)->lpVtbl->GetColorManagementVersion(This,cchColorManagementVersion,wzColorManagementVersion,pcchActual)
#define IWICBitmapEncoderInfo_GetDeviceManufacturer(This,cchDeviceManufacturer,wzDeviceManufacturer,pcchActual) (This)->lpVtbl->GetDeviceManufacturer(This,cchDeviceManufacturer,wzDeviceManufacturer,pcchActual)
#define IWICBitmapEncoderInfo_GetDeviceModels(This,cchDeviceModels,wzDeviceModels,pcchActual) (This)->lpVtbl->GetDeviceModels(This,cchDeviceModels,wzDeviceModels,pcchActual)
#define IWICBitmapEncoderInfo_GetMimeTypes(This,cchMimeTypes,wzMimeTypes,pcchActual) (This)->lpVtbl->GetMimeTypes(This,cchMimeTypes,wzMimeTypes,pcchActual)
#define IWICBitmapEncoderInfo_GetFileExtensions(This,cchFileExtensions,wzFileExtensions,pcchActual) (This)->lpVtbl->GetFileExtensions(This,cchFileExtensions,wzFileExtensions,pcchActual)
#define IWICBitmapEncoderInfo_DoesSupportAnimation(This,pfSupportAnimation) (This)->lpVtbl->DoesSupportAnimation(This,pfSupportAnimation)
#define IWICBitmapEncoderInfo_DoesSupportChromaKey(This,pfSupportChromaKey) (This)->lpVtbl->DoesSupportChromaKey(This,pfSupportChromaKey)
#define IWICBitmapEncoderInfo_DoesSupportLossless(This,pfSupportLossless) (This)->lpVtbl->DoesSupportLossless(This,pfSupportLossless)
#define IWICBitmapEncoderInfo_DoesSupportMultiframe(This,pfSupportMultiframe) (This)->lpVtbl->DoesSupportMultiframe(This,pfSupportMultiframe)
#define IWICBitmapEncoderInfo_MatchesMimeType(This,wzMimeType,pfMatches) (This)->lpVtbl->MatchesMimeType(This,wzMimeType,pfMatches)
/*** IWICBitmapEncoderInfo methods ***/
#define IWICBitmapEncoderInfo_CreateInstance(This,ppIBitmapEncoder) (This)->lpVtbl->CreateInstance(This,ppIBitmapEncoder)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICBitmapEncoderInfo_CreateInstance_Proxy(
    IWICBitmapEncoderInfo* This,
    IWICBitmapEncoder **ppIBitmapEncoder);
void __RPC_STUB IWICBitmapEncoderInfo_CreateInstance_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICBitmapEncoderInfo_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICBitmapEncoder interface
 */
#ifndef __IWICBitmapEncoder_INTERFACE_DEFINED__
#define __IWICBitmapEncoder_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICBitmapEncoder, 0x00000103, 0xa8f2, 0x4877, 0xba,0x0a, 0xfd,0x2b,0x66,0x45,0xfb,0x94);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWICBitmapEncoder : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        IStream *pIStream,
        WICBitmapEncoderCacheOption cacheOption) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetContainerFormat(
        GUID *pguidContainerFormat) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetEncoderInfo(
        IWICBitmapEncoderInfo **ppIEncoderInfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetColorContexts(
        UINT cCount,
        IWICColorContext **ppIColorContext) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPalette(
        IWICPalette *pIPalette) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetThumbnail(
        IWICBitmapSource *pIThumbnail) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPreview(
        IWICBitmapSource *pIPreview) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateNewFrame(
        IWICBitmapFrameEncode **ppIFrameEncode,
        IPropertyBag2 **ppIEncoderOptions) = 0;

    virtual HRESULT STDMETHODCALLTYPE Commit(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMetadataQueryWriter(
        IWICMetadataQueryWriter **ppIMetadataQueryWriter) = 0;

};
#else
typedef struct IWICBitmapEncoderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICBitmapEncoder* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICBitmapEncoder* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICBitmapEncoder* This);

    /*** IWICBitmapEncoder methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IWICBitmapEncoder* This,
        IStream *pIStream,
        WICBitmapEncoderCacheOption cacheOption);

    HRESULT (STDMETHODCALLTYPE *GetContainerFormat)(
        IWICBitmapEncoder* This,
        GUID *pguidContainerFormat);

    HRESULT (STDMETHODCALLTYPE *GetEncoderInfo)(
        IWICBitmapEncoder* This,
        IWICBitmapEncoderInfo **ppIEncoderInfo);

    HRESULT (STDMETHODCALLTYPE *SetColorContexts)(
        IWICBitmapEncoder* This,
        UINT cCount,
        IWICColorContext **ppIColorContext);

    HRESULT (STDMETHODCALLTYPE *SetPalette)(
        IWICBitmapEncoder* This,
        IWICPalette *pIPalette);

    HRESULT (STDMETHODCALLTYPE *SetThumbnail)(
        IWICBitmapEncoder* This,
        IWICBitmapSource *pIThumbnail);

    HRESULT (STDMETHODCALLTYPE *SetPreview)(
        IWICBitmapEncoder* This,
        IWICBitmapSource *pIPreview);

    HRESULT (STDMETHODCALLTYPE *CreateNewFrame)(
        IWICBitmapEncoder* This,
        IWICBitmapFrameEncode **ppIFrameEncode,
        IPropertyBag2 **ppIEncoderOptions);

    HRESULT (STDMETHODCALLTYPE *Commit)(
        IWICBitmapEncoder* This);

    HRESULT (STDMETHODCALLTYPE *GetMetadataQueryWriter)(
        IWICBitmapEncoder* This,
        IWICMetadataQueryWriter **ppIMetadataQueryWriter);

    END_INTERFACE
} IWICBitmapEncoderVtbl;
interface IWICBitmapEncoder {
    CONST_VTBL IWICBitmapEncoderVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICBitmapEncoder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICBitmapEncoder_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICBitmapEncoder_Release(This) (This)->lpVtbl->Release(This)
/*** IWICBitmapEncoder methods ***/
#define IWICBitmapEncoder_Initialize(This,pIStream,cacheOption) (This)->lpVtbl->Initialize(This,pIStream,cacheOption)
#define IWICBitmapEncoder_GetContainerFormat(This,pguidContainerFormat) (This)->lpVtbl->GetContainerFormat(This,pguidContainerFormat)
#define IWICBitmapEncoder_GetEncoderInfo(This,ppIEncoderInfo) (This)->lpVtbl->GetEncoderInfo(This,ppIEncoderInfo)
#define IWICBitmapEncoder_SetColorContexts(This,cCount,ppIColorContext) (This)->lpVtbl->SetColorContexts(This,cCount,ppIColorContext)
#define IWICBitmapEncoder_SetPalette(This,pIPalette) (This)->lpVtbl->SetPalette(This,pIPalette)
#define IWICBitmapEncoder_SetThumbnail(This,pIThumbnail) (This)->lpVtbl->SetThumbnail(This,pIThumbnail)
#define IWICBitmapEncoder_SetPreview(This,pIPreview) (This)->lpVtbl->SetPreview(This,pIPreview)
#define IWICBitmapEncoder_CreateNewFrame(This,ppIFrameEncode,ppIEncoderOptions) (This)->lpVtbl->CreateNewFrame(This,ppIFrameEncode,ppIEncoderOptions)
#define IWICBitmapEncoder_Commit(This) (This)->lpVtbl->Commit(This)
#define IWICBitmapEncoder_GetMetadataQueryWriter(This,ppIMetadataQueryWriter) (This)->lpVtbl->GetMetadataQueryWriter(This,ppIMetadataQueryWriter)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICBitmapEncoder_Initialize_Proxy(
    IWICBitmapEncoder* This,
    IStream *pIStream,
    WICBitmapEncoderCacheOption cacheOption);
void __RPC_STUB IWICBitmapEncoder_Initialize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapEncoder_GetContainerFormat_Proxy(
    IWICBitmapEncoder* This,
    GUID *pguidContainerFormat);
void __RPC_STUB IWICBitmapEncoder_GetContainerFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapEncoder_GetEncoderInfo_Proxy(
    IWICBitmapEncoder* This,
    IWICBitmapEncoderInfo **ppIEncoderInfo);
void __RPC_STUB IWICBitmapEncoder_GetEncoderInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapEncoder_SetColorContexts_Proxy(
    IWICBitmapEncoder* This,
    UINT cCount,
    IWICColorContext **ppIColorContext);
void __RPC_STUB IWICBitmapEncoder_SetColorContexts_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapEncoder_SetPalette_Proxy(
    IWICBitmapEncoder* This,
    IWICPalette *pIPalette);
void __RPC_STUB IWICBitmapEncoder_SetPalette_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapEncoder_SetThumbnail_Proxy(
    IWICBitmapEncoder* This,
    IWICBitmapSource *pIThumbnail);
void __RPC_STUB IWICBitmapEncoder_SetThumbnail_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapEncoder_SetPreview_Proxy(
    IWICBitmapEncoder* This,
    IWICBitmapSource *pIPreview);
void __RPC_STUB IWICBitmapEncoder_SetPreview_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapEncoder_CreateNewFrame_Proxy(
    IWICBitmapEncoder* This,
    IWICBitmapFrameEncode **ppIFrameEncode,
    IPropertyBag2 **ppIEncoderOptions);
void __RPC_STUB IWICBitmapEncoder_CreateNewFrame_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapEncoder_Commit_Proxy(
    IWICBitmapEncoder* This);
void __RPC_STUB IWICBitmapEncoder_Commit_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICBitmapEncoder_GetMetadataQueryWriter_Proxy(
    IWICBitmapEncoder* This,
    IWICMetadataQueryWriter **ppIMetadataQueryWriter);
void __RPC_STUB IWICBitmapEncoder_GetMetadataQueryWriter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICBitmapEncoder_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICFormatConverter interface
 */
#ifndef __IWICFormatConverter_INTERFACE_DEFINED__
#define __IWICFormatConverter_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICFormatConverter, 0x00000301, 0xa8f2, 0x4877, 0xba,0x0a, 0xfd,0x2b,0x66,0x45,0xfb,0x94);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWICFormatConverter : public IWICBitmapSource
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        IWICBitmapSource *pISource,
        REFWICPixelFormatGUID dstFormat,
        WICBitmapDitherType dither,
        IWICPalette *pIPalette,
        double alphaThresholdPercent,
        WICBitmapPaletteType paletteTranslate) = 0;

    virtual HRESULT STDMETHODCALLTYPE CanConvert(
        REFWICPixelFormatGUID srcPixelFormat,
        REFWICPixelFormatGUID dstPixelFormat,
        BOOL *pfCanConvert) = 0;

};
#else
typedef struct IWICFormatConverterVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICFormatConverter* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICFormatConverter* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICFormatConverter* This);

    /*** IWICBitmapSource methods ***/
    HRESULT (STDMETHODCALLTYPE *GetSize)(
        IWICFormatConverter* This,
        UINT *puiWidth,
        UINT *puiHeight);

    HRESULT (STDMETHODCALLTYPE *GetPixelFormat)(
        IWICFormatConverter* This,
        WICPixelFormatGUID *pPixelFormat);

    HRESULT (STDMETHODCALLTYPE *GetResolution)(
        IWICFormatConverter* This,
        double *pDpiX,
        double *pDpiY);

    HRESULT (STDMETHODCALLTYPE *CopyPalette)(
        IWICFormatConverter* This,
        IWICPalette *pIPalette);

    HRESULT (STDMETHODCALLTYPE *CopyPixels)(
        IWICFormatConverter* This,
        const WICRect *prc,
        UINT cbStride,
        UINT cbBufferSize,
        BYTE *pbBuffer);

    /*** IWICFormatConverter methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IWICFormatConverter* This,
        IWICBitmapSource *pISource,
        REFWICPixelFormatGUID dstFormat,
        WICBitmapDitherType dither,
        IWICPalette *pIPalette,
        double alphaThresholdPercent,
        WICBitmapPaletteType paletteTranslate);

    HRESULT (STDMETHODCALLTYPE *CanConvert)(
        IWICFormatConverter* This,
        REFWICPixelFormatGUID srcPixelFormat,
        REFWICPixelFormatGUID dstPixelFormat,
        BOOL *pfCanConvert);

    END_INTERFACE
} IWICFormatConverterVtbl;
interface IWICFormatConverter {
    CONST_VTBL IWICFormatConverterVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICFormatConverter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICFormatConverter_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICFormatConverter_Release(This) (This)->lpVtbl->Release(This)
/*** IWICBitmapSource methods ***/
#define IWICFormatConverter_GetSize(This,puiWidth,puiHeight) (This)->lpVtbl->GetSize(This,puiWidth,puiHeight)
#define IWICFormatConverter_GetPixelFormat(This,pPixelFormat) (This)->lpVtbl->GetPixelFormat(This,pPixelFormat)
#define IWICFormatConverter_GetResolution(This,pDpiX,pDpiY) (This)->lpVtbl->GetResolution(This,pDpiX,pDpiY)
#define IWICFormatConverter_CopyPalette(This,pIPalette) (This)->lpVtbl->CopyPalette(This,pIPalette)
#define IWICFormatConverter_CopyPixels(This,prc,cbStride,cbBufferSize,pbBuffer) (This)->lpVtbl->CopyPixels(This,prc,cbStride,cbBufferSize,pbBuffer)
/*** IWICFormatConverter methods ***/
#define IWICFormatConverter_Initialize(This,pISource,dstFormat,dither,pIPalette,alphaThresholdPercent,paletteTranslate) (This)->lpVtbl->Initialize(This,pISource,dstFormat,dither,pIPalette,alphaThresholdPercent,paletteTranslate)
#define IWICFormatConverter_CanConvert(This,srcPixelFormat,dstPixelFormat,pfCanConvert) (This)->lpVtbl->CanConvert(This,srcPixelFormat,dstPixelFormat,pfCanConvert)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICFormatConverter_Initialize_Proxy(
    IWICFormatConverter* This,
    IWICBitmapSource *pISource,
    REFWICPixelFormatGUID dstFormat,
    WICBitmapDitherType dither,
    IWICPalette *pIPalette,
    double alphaThresholdPercent,
    WICBitmapPaletteType paletteTranslate);
void __RPC_STUB IWICFormatConverter_Initialize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICFormatConverter_CanConvert_Proxy(
    IWICFormatConverter* This,
    REFWICPixelFormatGUID srcPixelFormat,
    REFWICPixelFormatGUID dstPixelFormat,
    BOOL *pfCanConvert);
void __RPC_STUB IWICFormatConverter_CanConvert_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICFormatConverter_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICFormatConverterInfo interface
 */
#ifndef __IWICFormatConverterInfo_INTERFACE_DEFINED__
#define __IWICFormatConverterInfo_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICFormatConverterInfo, 0x9f34fb65, 0x13f4, 0x4f15, 0xbc,0x57, 0x37,0x26,0xb5,0xe5,0x3d,0x9f);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWICFormatConverterInfo : public IWICComponentInfo
{
    virtual HRESULT STDMETHODCALLTYPE GetPixelFormats(
        UINT cFormats,
        WICPixelFormatGUID *pPixelFormatGUIDs,
        UINT *pcActual) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateInstance(
        IWICFormatConverter **ppIConverter) = 0;

};
#else
typedef struct IWICFormatConverterInfoVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICFormatConverterInfo* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICFormatConverterInfo* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICFormatConverterInfo* This);

    /*** IWICComponentInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *GetComponentType)(
        IWICFormatConverterInfo* This,
        WICComponentType *pType);

    HRESULT (STDMETHODCALLTYPE *GetCLSID)(
        IWICFormatConverterInfo* This,
        CLSID *pclsid);

    HRESULT (STDMETHODCALLTYPE *GetSigningStatus)(
        IWICFormatConverterInfo* This,
        DWORD *pStatus);

    HRESULT (STDMETHODCALLTYPE *GetAuthor)(
        IWICFormatConverterInfo* This,
        UINT cchAuthor,
        WCHAR *wzAuthor,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetVendorGUID)(
        IWICFormatConverterInfo* This,
        GUID *pguidVendor);

    HRESULT (STDMETHODCALLTYPE *GetVersion)(
        IWICFormatConverterInfo* This,
        UINT cchVersion,
        WCHAR *wzVersion,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetSpecVersion)(
        IWICFormatConverterInfo* This,
        UINT cchSpecVersion,
        WCHAR *wzSpecVersion,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetFriendlyName)(
        IWICFormatConverterInfo* This,
        UINT cchFriendlyName,
        WCHAR *wzFriendlyName,
        UINT *pcchActual);

    /*** IWICFormatConverterInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPixelFormats)(
        IWICFormatConverterInfo* This,
        UINT cFormats,
        WICPixelFormatGUID *pPixelFormatGUIDs,
        UINT *pcActual);

    HRESULT (STDMETHODCALLTYPE *CreateInstance)(
        IWICFormatConverterInfo* This,
        IWICFormatConverter **ppIConverter);

    END_INTERFACE
} IWICFormatConverterInfoVtbl;
interface IWICFormatConverterInfo {
    CONST_VTBL IWICFormatConverterInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICFormatConverterInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICFormatConverterInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICFormatConverterInfo_Release(This) (This)->lpVtbl->Release(This)
/*** IWICComponentInfo methods ***/
#define IWICFormatConverterInfo_GetComponentType(This,pType) (This)->lpVtbl->GetComponentType(This,pType)
#define IWICFormatConverterInfo_GetCLSID(This,pclsid) (This)->lpVtbl->GetCLSID(This,pclsid)
#define IWICFormatConverterInfo_GetSigningStatus(This,pStatus) (This)->lpVtbl->GetSigningStatus(This,pStatus)
#define IWICFormatConverterInfo_GetAuthor(This,cchAuthor,wzAuthor,pcchActual) (This)->lpVtbl->GetAuthor(This,cchAuthor,wzAuthor,pcchActual)
#define IWICFormatConverterInfo_GetVendorGUID(This,pguidVendor) (This)->lpVtbl->GetVendorGUID(This,pguidVendor)
#define IWICFormatConverterInfo_GetVersion(This,cchVersion,wzVersion,pcchActual) (This)->lpVtbl->GetVersion(This,cchVersion,wzVersion,pcchActual)
#define IWICFormatConverterInfo_GetSpecVersion(This,cchSpecVersion,wzSpecVersion,pcchActual) (This)->lpVtbl->GetSpecVersion(This,cchSpecVersion,wzSpecVersion,pcchActual)
#define IWICFormatConverterInfo_GetFriendlyName(This,cchFriendlyName,wzFriendlyName,pcchActual) (This)->lpVtbl->GetFriendlyName(This,cchFriendlyName,wzFriendlyName,pcchActual)
/*** IWICFormatConverterInfo methods ***/
#define IWICFormatConverterInfo_GetPixelFormats(This,cFormats,pPixelFormatGUIDs,pcActual) (This)->lpVtbl->GetPixelFormats(This,cFormats,pPixelFormatGUIDs,pcActual)
#define IWICFormatConverterInfo_CreateInstance(This,ppIConverter) (This)->lpVtbl->CreateInstance(This,ppIConverter)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICFormatConverterInfo_GetPixelFormats_Proxy(
    IWICFormatConverterInfo* This,
    UINT cFormats,
    WICPixelFormatGUID *pPixelFormatGUIDs,
    UINT *pcActual);
void __RPC_STUB IWICFormatConverterInfo_GetPixelFormats_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICFormatConverterInfo_CreateInstance_Proxy(
    IWICFormatConverterInfo* This,
    IWICFormatConverter **ppIConverter);
void __RPC_STUB IWICFormatConverterInfo_CreateInstance_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICFormatConverterInfo_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICStream interface
 */
#ifndef __IWICStream_INTERFACE_DEFINED__
#define __IWICStream_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICStream, 0x135ff860, 0x22b7, 0x4ddf, 0xb0,0xf6, 0x21,0x8f,0x4f,0x29,0x9a,0x43);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWICStream : public IStream
{
    virtual HRESULT STDMETHODCALLTYPE InitializeFromIStream(
        IStream *pIStream) = 0;

    virtual HRESULT STDMETHODCALLTYPE InitializeFromFilename(
        LPCWSTR wzFileName,
        DWORD dwAccessMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE InitializeFromMemory(
        BYTE *pbBuffer,
        DWORD cbBufferSize) = 0;

    virtual HRESULT STDMETHODCALLTYPE InitializeFromIStreamRegion(
        IStream *pIStream,
        ULARGE_INTEGER ulOffset,
        ULARGE_INTEGER ulMaxSize) = 0;

};
#else
typedef struct IWICStreamVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICStream* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICStream* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICStream* This);

    /*** ISequentialStream methods ***/
    HRESULT (STDMETHODCALLTYPE *Read)(
        IWICStream* This,
        void *pv,
        ULONG cb,
        ULONG *pcbRead);

    HRESULT (STDMETHODCALLTYPE *Write)(
        IWICStream* This,
        const void *pv,
        ULONG cb,
        ULONG *pcbWritten);

    /*** IStream methods ***/
    HRESULT (STDMETHODCALLTYPE *Seek)(
        IWICStream* This,
        LARGE_INTEGER dlibMove,
        DWORD dwOrigin,
        ULARGE_INTEGER *plibNewPosition);

    HRESULT (STDMETHODCALLTYPE *SetSize)(
        IWICStream* This,
        ULARGE_INTEGER libNewSize);

    HRESULT (STDMETHODCALLTYPE *CopyTo)(
        IWICStream* This,
        IStream *pstm,
        ULARGE_INTEGER cb,
        ULARGE_INTEGER *pcbRead,
        ULARGE_INTEGER *pcbWritten);

    HRESULT (STDMETHODCALLTYPE *Commit)(
        IWICStream* This,
        DWORD grfCommitFlags);

    HRESULT (STDMETHODCALLTYPE *Revert)(
        IWICStream* This);

    HRESULT (STDMETHODCALLTYPE *LockRegion)(
        IWICStream* This,
        ULARGE_INTEGER libOffset,
        ULARGE_INTEGER cb,
        DWORD dwLockType);

    HRESULT (STDMETHODCALLTYPE *UnlockRegion)(
        IWICStream* This,
        ULARGE_INTEGER libOffset,
        ULARGE_INTEGER cb,
        DWORD dwLockType);

    HRESULT (STDMETHODCALLTYPE *Stat)(
        IWICStream* This,
        STATSTG *pstatstg,
        DWORD grfStatFlag);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        IWICStream* This,
        IStream **ppstm);

    /*** IWICStream methods ***/
    HRESULT (STDMETHODCALLTYPE *InitializeFromIStream)(
        IWICStream* This,
        IStream *pIStream);

    HRESULT (STDMETHODCALLTYPE *InitializeFromFilename)(
        IWICStream* This,
        LPCWSTR wzFileName,
        DWORD dwAccessMode);

    HRESULT (STDMETHODCALLTYPE *InitializeFromMemory)(
        IWICStream* This,
        BYTE *pbBuffer,
        DWORD cbBufferSize);

    HRESULT (STDMETHODCALLTYPE *InitializeFromIStreamRegion)(
        IWICStream* This,
        IStream *pIStream,
        ULARGE_INTEGER ulOffset,
        ULARGE_INTEGER ulMaxSize);

    END_INTERFACE
} IWICStreamVtbl;
interface IWICStream {
    CONST_VTBL IWICStreamVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICStream_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICStream_Release(This) (This)->lpVtbl->Release(This)
/*** ISequentialStream methods ***/
#define IWICStream_Read(This,pv,cb,pcbRead) (This)->lpVtbl->Read(This,pv,cb,pcbRead)
#define IWICStream_Write(This,pv,cb,pcbWritten) (This)->lpVtbl->Write(This,pv,cb,pcbWritten)
/*** IStream methods ***/
#define IWICStream_Seek(This,dlibMove,dwOrigin,plibNewPosition) (This)->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition)
#define IWICStream_SetSize(This,libNewSize) (This)->lpVtbl->SetSize(This,libNewSize)
#define IWICStream_CopyTo(This,pstm,cb,pcbRead,pcbWritten) (This)->lpVtbl->CopyTo(This,pstm,cb,pcbRead,pcbWritten)
#define IWICStream_Commit(This,grfCommitFlags) (This)->lpVtbl->Commit(This,grfCommitFlags)
#define IWICStream_Revert(This) (This)->lpVtbl->Revert(This)
#define IWICStream_LockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->LockRegion(This,libOffset,cb,dwLockType)
#define IWICStream_UnlockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->UnlockRegion(This,libOffset,cb,dwLockType)
#define IWICStream_Stat(This,pstatstg,grfStatFlag) (This)->lpVtbl->Stat(This,pstatstg,grfStatFlag)
#define IWICStream_Clone(This,ppstm) (This)->lpVtbl->Clone(This,ppstm)
/*** IWICStream methods ***/
#define IWICStream_InitializeFromIStream(This,pIStream) (This)->lpVtbl->InitializeFromIStream(This,pIStream)
#define IWICStream_InitializeFromFilename(This,wzFileName,dwAccessMode) (This)->lpVtbl->InitializeFromFilename(This,wzFileName,dwAccessMode)
#define IWICStream_InitializeFromMemory(This,pbBuffer,cbBufferSize) (This)->lpVtbl->InitializeFromMemory(This,pbBuffer,cbBufferSize)
#define IWICStream_InitializeFromIStreamRegion(This,pIStream,ulOffset,ulMaxSize) (This)->lpVtbl->InitializeFromIStreamRegion(This,pIStream,ulOffset,ulMaxSize)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICStream_InitializeFromIStream_Proxy(
    IWICStream* This,
    IStream *pIStream);
void __RPC_STUB IWICStream_InitializeFromIStream_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICStream_InitializeFromFilename_Proxy(
    IWICStream* This,
    LPCWSTR wzFileName,
    DWORD dwAccessMode);
void __RPC_STUB IWICStream_InitializeFromFilename_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICStream_InitializeFromMemory_Proxy(
    IWICStream* This,
    BYTE *pbBuffer,
    DWORD cbBufferSize);
void __RPC_STUB IWICStream_InitializeFromMemory_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICStream_InitializeFromIStreamRegion_Proxy(
    IWICStream* This,
    IStream *pIStream,
    ULARGE_INTEGER ulOffset,
    ULARGE_INTEGER ulMaxSize);
void __RPC_STUB IWICStream_InitializeFromIStreamRegion_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICStream_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICBitmapScaler interface
 */
#ifndef __IWICBitmapScaler_INTERFACE_DEFINED__
#define __IWICBitmapScaler_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICBitmapScaler, 0x00000302, 0xa8f2, 0x4877, 0xba,0x0a, 0xfd,0x2b,0x66,0x45,0xfb,0x94);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWICBitmapScaler : public IWICBitmapSource
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        IWICBitmapSource *pISource,
        UINT uiWidth,
        UINT uiHeight,
        WICBitmapInterpolationMode mode) = 0;

};
#else
typedef struct IWICBitmapScalerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICBitmapScaler* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICBitmapScaler* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICBitmapScaler* This);

    /*** IWICBitmapSource methods ***/
    HRESULT (STDMETHODCALLTYPE *GetSize)(
        IWICBitmapScaler* This,
        UINT *puiWidth,
        UINT *puiHeight);

    HRESULT (STDMETHODCALLTYPE *GetPixelFormat)(
        IWICBitmapScaler* This,
        WICPixelFormatGUID *pPixelFormat);

    HRESULT (STDMETHODCALLTYPE *GetResolution)(
        IWICBitmapScaler* This,
        double *pDpiX,
        double *pDpiY);

    HRESULT (STDMETHODCALLTYPE *CopyPalette)(
        IWICBitmapScaler* This,
        IWICPalette *pIPalette);

    HRESULT (STDMETHODCALLTYPE *CopyPixels)(
        IWICBitmapScaler* This,
        const WICRect *prc,
        UINT cbStride,
        UINT cbBufferSize,
        BYTE *pbBuffer);

    /*** IWICBitmapScaler methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IWICBitmapScaler* This,
        IWICBitmapSource *pISource,
        UINT uiWidth,
        UINT uiHeight,
        WICBitmapInterpolationMode mode);

    END_INTERFACE
} IWICBitmapScalerVtbl;
interface IWICBitmapScaler {
    CONST_VTBL IWICBitmapScalerVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICBitmapScaler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICBitmapScaler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICBitmapScaler_Release(This) (This)->lpVtbl->Release(This)
/*** IWICBitmapSource methods ***/
#define IWICBitmapScaler_GetSize(This,puiWidth,puiHeight) (This)->lpVtbl->GetSize(This,puiWidth,puiHeight)
#define IWICBitmapScaler_GetPixelFormat(This,pPixelFormat) (This)->lpVtbl->GetPixelFormat(This,pPixelFormat)
#define IWICBitmapScaler_GetResolution(This,pDpiX,pDpiY) (This)->lpVtbl->GetResolution(This,pDpiX,pDpiY)
#define IWICBitmapScaler_CopyPalette(This,pIPalette) (This)->lpVtbl->CopyPalette(This,pIPalette)
#define IWICBitmapScaler_CopyPixels(This,prc,cbStride,cbBufferSize,pbBuffer) (This)->lpVtbl->CopyPixels(This,prc,cbStride,cbBufferSize,pbBuffer)
/*** IWICBitmapScaler methods ***/
#define IWICBitmapScaler_Initialize(This,pISource,uiWidth,uiHeight,mode) (This)->lpVtbl->Initialize(This,pISource,uiWidth,uiHeight,mode)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICBitmapScaler_Initialize_Proxy(
    IWICBitmapScaler* This,
    IWICBitmapSource *pISource,
    UINT uiWidth,
    UINT uiHeight,
    WICBitmapInterpolationMode mode);
void __RPC_STUB IWICBitmapScaler_Initialize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICBitmapScaler_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICBitmapClipper interface
 */
#ifndef __IWICBitmapClipper_INTERFACE_DEFINED__
#define __IWICBitmapClipper_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICBitmapClipper, 0xe4fbcf03, 0x223d, 0x4e81, 0x93,0x33, 0xd6,0x35,0x55,0x6d,0xd1,0xb5);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWICBitmapClipper : public IWICBitmapSource
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        IWICBitmapSource *pISource,
        const WICRect *prc) = 0;

};
#else
typedef struct IWICBitmapClipperVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICBitmapClipper* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICBitmapClipper* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICBitmapClipper* This);

    /*** IWICBitmapSource methods ***/
    HRESULT (STDMETHODCALLTYPE *GetSize)(
        IWICBitmapClipper* This,
        UINT *puiWidth,
        UINT *puiHeight);

    HRESULT (STDMETHODCALLTYPE *GetPixelFormat)(
        IWICBitmapClipper* This,
        WICPixelFormatGUID *pPixelFormat);

    HRESULT (STDMETHODCALLTYPE *GetResolution)(
        IWICBitmapClipper* This,
        double *pDpiX,
        double *pDpiY);

    HRESULT (STDMETHODCALLTYPE *CopyPalette)(
        IWICBitmapClipper* This,
        IWICPalette *pIPalette);

    HRESULT (STDMETHODCALLTYPE *CopyPixels)(
        IWICBitmapClipper* This,
        const WICRect *prc,
        UINT cbStride,
        UINT cbBufferSize,
        BYTE *pbBuffer);

    /*** IWICBitmapClipper methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IWICBitmapClipper* This,
        IWICBitmapSource *pISource,
        const WICRect *prc);

    END_INTERFACE
} IWICBitmapClipperVtbl;
interface IWICBitmapClipper {
    CONST_VTBL IWICBitmapClipperVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICBitmapClipper_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICBitmapClipper_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICBitmapClipper_Release(This) (This)->lpVtbl->Release(This)
/*** IWICBitmapSource methods ***/
#define IWICBitmapClipper_GetSize(This,puiWidth,puiHeight) (This)->lpVtbl->GetSize(This,puiWidth,puiHeight)
#define IWICBitmapClipper_GetPixelFormat(This,pPixelFormat) (This)->lpVtbl->GetPixelFormat(This,pPixelFormat)
#define IWICBitmapClipper_GetResolution(This,pDpiX,pDpiY) (This)->lpVtbl->GetResolution(This,pDpiX,pDpiY)
#define IWICBitmapClipper_CopyPalette(This,pIPalette) (This)->lpVtbl->CopyPalette(This,pIPalette)
#define IWICBitmapClipper_CopyPixels(This,prc,cbStride,cbBufferSize,pbBuffer) (This)->lpVtbl->CopyPixels(This,prc,cbStride,cbBufferSize,pbBuffer)
/*** IWICBitmapClipper methods ***/
#define IWICBitmapClipper_Initialize(This,pISource,prc) (This)->lpVtbl->Initialize(This,pISource,prc)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICBitmapClipper_Initialize_Proxy(
    IWICBitmapClipper* This,
    IWICBitmapSource *pISource,
    const WICRect *prc);
void __RPC_STUB IWICBitmapClipper_Initialize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICBitmapClipper_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICColorTransform interface
 */
#ifndef __IWICColorTransform_INTERFACE_DEFINED__
#define __IWICColorTransform_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICColorTransform, 0xb66f034f, 0xd0e2, 0x40ab, 0xb4,0x36, 0x6d,0xe3,0x9e,0x32,0x1a,0x94);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWICColorTransform : public IWICBitmapSource
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        IWICBitmapSource *pIBitmapSource,
        IWICColorContext *pIContextSource,
        IWICColorContext *pIContextDest,
        REFWICPixelFormatGUID pixelFmtDest) = 0;

};
#else
typedef struct IWICColorTransformVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICColorTransform* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICColorTransform* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICColorTransform* This);

    /*** IWICBitmapSource methods ***/
    HRESULT (STDMETHODCALLTYPE *GetSize)(
        IWICColorTransform* This,
        UINT *puiWidth,
        UINT *puiHeight);

    HRESULT (STDMETHODCALLTYPE *GetPixelFormat)(
        IWICColorTransform* This,
        WICPixelFormatGUID *pPixelFormat);

    HRESULT (STDMETHODCALLTYPE *GetResolution)(
        IWICColorTransform* This,
        double *pDpiX,
        double *pDpiY);

    HRESULT (STDMETHODCALLTYPE *CopyPalette)(
        IWICColorTransform* This,
        IWICPalette *pIPalette);

    HRESULT (STDMETHODCALLTYPE *CopyPixels)(
        IWICColorTransform* This,
        const WICRect *prc,
        UINT cbStride,
        UINT cbBufferSize,
        BYTE *pbBuffer);

    /*** IWICColorTransform methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IWICColorTransform* This,
        IWICBitmapSource *pIBitmapSource,
        IWICColorContext *pIContextSource,
        IWICColorContext *pIContextDest,
        REFWICPixelFormatGUID pixelFmtDest);

    END_INTERFACE
} IWICColorTransformVtbl;
interface IWICColorTransform {
    CONST_VTBL IWICColorTransformVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICColorTransform_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICColorTransform_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICColorTransform_Release(This) (This)->lpVtbl->Release(This)
/*** IWICBitmapSource methods ***/
#define IWICColorTransform_GetSize(This,puiWidth,puiHeight) (This)->lpVtbl->GetSize(This,puiWidth,puiHeight)
#define IWICColorTransform_GetPixelFormat(This,pPixelFormat) (This)->lpVtbl->GetPixelFormat(This,pPixelFormat)
#define IWICColorTransform_GetResolution(This,pDpiX,pDpiY) (This)->lpVtbl->GetResolution(This,pDpiX,pDpiY)
#define IWICColorTransform_CopyPalette(This,pIPalette) (This)->lpVtbl->CopyPalette(This,pIPalette)
#define IWICColorTransform_CopyPixels(This,prc,cbStride,cbBufferSize,pbBuffer) (This)->lpVtbl->CopyPixels(This,prc,cbStride,cbBufferSize,pbBuffer)
/*** IWICColorTransform methods ***/
#define IWICColorTransform_Initialize(This,pIBitmapSource,pIContextSource,pIContextDest,pixelFmtDest) (This)->lpVtbl->Initialize(This,pIBitmapSource,pIContextSource,pIContextDest,pixelFmtDest)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICColorTransform_Initialize_Proxy(
    IWICColorTransform* This,
    IWICBitmapSource *pIBitmapSource,
    IWICColorContext *pIContextSource,
    IWICColorContext *pIContextDest,
    REFWICPixelFormatGUID pixelFmtDest);
void __RPC_STUB IWICColorTransform_Initialize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICColorTransform_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICFastMetadataEncoder interface
 */
#ifndef __IWICFastMetadataEncoder_INTERFACE_DEFINED__
#define __IWICFastMetadataEncoder_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICFastMetadataEncoder, 0xb84e2c09, 0x78c9, 0x4ac4, 0x8b,0xd3, 0x52,0x4a,0xe1,0x66,0x3a,0x2f);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWICFastMetadataEncoder : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Commit(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMetadataQueryWriter(
        IWICMetadataQueryWriter **ppIMetadataQueryWriter) = 0;

};
#else
typedef struct IWICFastMetadataEncoderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICFastMetadataEncoder* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICFastMetadataEncoder* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICFastMetadataEncoder* This);

    /*** IWICFastMetadataEncoder methods ***/
    HRESULT (STDMETHODCALLTYPE *Commit)(
        IWICFastMetadataEncoder* This);

    HRESULT (STDMETHODCALLTYPE *GetMetadataQueryWriter)(
        IWICFastMetadataEncoder* This,
        IWICMetadataQueryWriter **ppIMetadataQueryWriter);

    END_INTERFACE
} IWICFastMetadataEncoderVtbl;
interface IWICFastMetadataEncoder {
    CONST_VTBL IWICFastMetadataEncoderVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICFastMetadataEncoder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICFastMetadataEncoder_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICFastMetadataEncoder_Release(This) (This)->lpVtbl->Release(This)
/*** IWICFastMetadataEncoder methods ***/
#define IWICFastMetadataEncoder_Commit(This) (This)->lpVtbl->Commit(This)
#define IWICFastMetadataEncoder_GetMetadataQueryWriter(This,ppIMetadataQueryWriter) (This)->lpVtbl->GetMetadataQueryWriter(This,ppIMetadataQueryWriter)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICFastMetadataEncoder_Commit_Proxy(
    IWICFastMetadataEncoder* This);
void __RPC_STUB IWICFastMetadataEncoder_Commit_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICFastMetadataEncoder_GetMetadataQueryWriter_Proxy(
    IWICFastMetadataEncoder* This,
    IWICMetadataQueryWriter **ppIMetadataQueryWriter);
void __RPC_STUB IWICFastMetadataEncoder_GetMetadataQueryWriter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICFastMetadataEncoder_INTERFACE_DEFINED__ */

DEFINE_GUID(CLSID_WICImagingFactory, 0xcacaf262,0x9370,0x4615,0xa1,0x3b,0x9f,0x55,0x39,0xda,0x4c,0x0a);
/*****************************************************************************
 * IWICImagingFactory interface
 */
#ifndef __IWICImagingFactory_INTERFACE_DEFINED__
#define __IWICImagingFactory_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICImagingFactory, 0xec5ec8a9, 0xc395, 0x4314, 0x9c,0x77, 0x54,0xd7,0xa9,0x35,0xff,0x70);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWICImagingFactory : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CreateDecoderFromFilename(
        LPCWSTR wzFilename,
        const GUID *pguidVendor,
        DWORD dwDesiredAccess,
        WICDecodeOptions metadataOptions,
        IWICBitmapDecoder **ppIDecoder) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateDecoderFromStream(
        IStream *pIStream,
        const GUID *pguidVendor,
        WICDecodeOptions metadataOptions,
        IWICBitmapDecoder **ppIDecoder) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateDecoderFromFileHandle(
        ULONG_PTR hFile,
        const GUID *pguidVendor,
        WICDecodeOptions metadataOptions,
        IWICBitmapDecoder **ppIDecoder) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateComponentInfo(
        REFCLSID clsidComponent,
        IWICComponentInfo **ppIInfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateDecoder(
        REFGUID guidContainerFormat,
        const GUID *pguidVendor,
        IWICBitmapDecoder **ppIDecoder) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateEncoder(
        REFGUID guidContainerFormat,
        const GUID *pguidVendor,
        IWICBitmapEncoder **ppIEncoder) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreatePalette(
        IWICPalette **ppIPalette) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateFormatConverter(
        IWICFormatConverter **ppIFormatConverter) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateBitmapScaler(
        IWICBitmapScaler **ppIBitmapScaler) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateBitmapClipper(
        IWICBitmapClipper **ppIBitmapClipper) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateBitmapFlipRotator(
        IWICBitmapFlipRotator **ppIBitmapFlipRotator) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateStream(
        IWICStream **ppIWICStream) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateColorContext(
        IWICColorContext **ppIWICColorContext) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateColorTransformer(
        IWICColorTransform **ppIWICColorTransform) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateBitmap(
        UINT uiWidth,
        UINT uiHeight,
        REFWICPixelFormatGUID pixelFormat,
        WICBitmapCreateCacheOption option,
        IWICBitmap **ppIBitmap) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateBitmapFromSource(
        IWICBitmapSource *piBitmapSource,
        WICBitmapCreateCacheOption option,
        IWICBitmap **ppIBitmap) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateBitmapFromSourceRect(
        IWICBitmapSource *piBitmapSource,
        UINT x,
        UINT y,
        UINT width,
        UINT height,
        IWICBitmap **ppIBitmap) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateBitmapFromMemory(
        UINT uiWidth,
        UINT uiHeight,
        REFWICPixelFormatGUID pixelFormat,
        UINT cbStride,
        UINT cbBufferSize,
        BYTE *pbBuffer,
        IWICBitmap **ppIBitmap) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateBitmapFromHBITMAP(
        HBITMAP hBitmap,
        HPALETTE hPalette,
        WICBitmapAlphaChannelOption options,
        IWICBitmap **ppIBitmap) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateBitmapFromHICON(
        HICON hIcon,
        IWICBitmap **ppIBitmap) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateComponentEnumerator(
        DWORD componentTypes,
        DWORD options,
        IEnumUnknown **ppIEnumUnknown) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateFastMetadataEncoderFromDecoder(
        IWICBitmapDecoder *pIDecoder,
        IWICFastMetadataEncoder **ppIFastEncoder) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateFastMetadataEncoderFromFrameDecode(
        IWICBitmapFrameDecode *pIFrameDecoder,
        IWICFastMetadataEncoder **ppIFastEncoder) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateQueryWriter(
        REFGUID guidMetadataFormat,
        const GUID *pguidVendor,
        IWICMetadataQueryWriter **ppIQueryWriter) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateQueryWriterFromReader(
        IWICMetadataQueryReader *pIQueryReader,
        const GUID *pguidVendor,
        IWICMetadataQueryWriter **ppIQueryWriter) = 0;

};
#else
typedef struct IWICImagingFactoryVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICImagingFactory* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICImagingFactory* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICImagingFactory* This);

    /*** IWICImagingFactory methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateDecoderFromFilename)(
        IWICImagingFactory* This,
        LPCWSTR wzFilename,
        const GUID *pguidVendor,
        DWORD dwDesiredAccess,
        WICDecodeOptions metadataOptions,
        IWICBitmapDecoder **ppIDecoder);

    HRESULT (STDMETHODCALLTYPE *CreateDecoderFromStream)(
        IWICImagingFactory* This,
        IStream *pIStream,
        const GUID *pguidVendor,
        WICDecodeOptions metadataOptions,
        IWICBitmapDecoder **ppIDecoder);

    HRESULT (STDMETHODCALLTYPE *CreateDecoderFromFileHandle)(
        IWICImagingFactory* This,
        ULONG_PTR hFile,
        const GUID *pguidVendor,
        WICDecodeOptions metadataOptions,
        IWICBitmapDecoder **ppIDecoder);

    HRESULT (STDMETHODCALLTYPE *CreateComponentInfo)(
        IWICImagingFactory* This,
        REFCLSID clsidComponent,
        IWICComponentInfo **ppIInfo);

    HRESULT (STDMETHODCALLTYPE *CreateDecoder)(
        IWICImagingFactory* This,
        REFGUID guidContainerFormat,
        const GUID *pguidVendor,
        IWICBitmapDecoder **ppIDecoder);

    HRESULT (STDMETHODCALLTYPE *CreateEncoder)(
        IWICImagingFactory* This,
        REFGUID guidContainerFormat,
        const GUID *pguidVendor,
        IWICBitmapEncoder **ppIEncoder);

    HRESULT (STDMETHODCALLTYPE *CreatePalette)(
        IWICImagingFactory* This,
        IWICPalette **ppIPalette);

    HRESULT (STDMETHODCALLTYPE *CreateFormatConverter)(
        IWICImagingFactory* This,
        IWICFormatConverter **ppIFormatConverter);

    HRESULT (STDMETHODCALLTYPE *CreateBitmapScaler)(
        IWICImagingFactory* This,
        IWICBitmapScaler **ppIBitmapScaler);

    HRESULT (STDMETHODCALLTYPE *CreateBitmapClipper)(
        IWICImagingFactory* This,
        IWICBitmapClipper **ppIBitmapClipper);

    HRESULT (STDMETHODCALLTYPE *CreateBitmapFlipRotator)(
        IWICImagingFactory* This,
        IWICBitmapFlipRotator **ppIBitmapFlipRotator);

    HRESULT (STDMETHODCALLTYPE *CreateStream)(
        IWICImagingFactory* This,
        IWICStream **ppIWICStream);

    HRESULT (STDMETHODCALLTYPE *CreateColorContext)(
        IWICImagingFactory* This,
        IWICColorContext **ppIWICColorContext);

    HRESULT (STDMETHODCALLTYPE *CreateColorTransformer)(
        IWICImagingFactory* This,
        IWICColorTransform **ppIWICColorTransform);

    HRESULT (STDMETHODCALLTYPE *CreateBitmap)(
        IWICImagingFactory* This,
        UINT uiWidth,
        UINT uiHeight,
        REFWICPixelFormatGUID pixelFormat,
        WICBitmapCreateCacheOption option,
        IWICBitmap **ppIBitmap);

    HRESULT (STDMETHODCALLTYPE *CreateBitmapFromSource)(
        IWICImagingFactory* This,
        IWICBitmapSource *piBitmapSource,
        WICBitmapCreateCacheOption option,
        IWICBitmap **ppIBitmap);

    HRESULT (STDMETHODCALLTYPE *CreateBitmapFromSourceRect)(
        IWICImagingFactory* This,
        IWICBitmapSource *piBitmapSource,
        UINT x,
        UINT y,
        UINT width,
        UINT height,
        IWICBitmap **ppIBitmap);

    HRESULT (STDMETHODCALLTYPE *CreateBitmapFromMemory)(
        IWICImagingFactory* This,
        UINT uiWidth,
        UINT uiHeight,
        REFWICPixelFormatGUID pixelFormat,
        UINT cbStride,
        UINT cbBufferSize,
        BYTE *pbBuffer,
        IWICBitmap **ppIBitmap);

    HRESULT (STDMETHODCALLTYPE *CreateBitmapFromHBITMAP)(
        IWICImagingFactory* This,
        HBITMAP hBitmap,
        HPALETTE hPalette,
        WICBitmapAlphaChannelOption options,
        IWICBitmap **ppIBitmap);

    HRESULT (STDMETHODCALLTYPE *CreateBitmapFromHICON)(
        IWICImagingFactory* This,
        HICON hIcon,
        IWICBitmap **ppIBitmap);

    HRESULT (STDMETHODCALLTYPE *CreateComponentEnumerator)(
        IWICImagingFactory* This,
        DWORD componentTypes,
        DWORD options,
        IEnumUnknown **ppIEnumUnknown);

    HRESULT (STDMETHODCALLTYPE *CreateFastMetadataEncoderFromDecoder)(
        IWICImagingFactory* This,
        IWICBitmapDecoder *pIDecoder,
        IWICFastMetadataEncoder **ppIFastEncoder);

    HRESULT (STDMETHODCALLTYPE *CreateFastMetadataEncoderFromFrameDecode)(
        IWICImagingFactory* This,
        IWICBitmapFrameDecode *pIFrameDecoder,
        IWICFastMetadataEncoder **ppIFastEncoder);

    HRESULT (STDMETHODCALLTYPE *CreateQueryWriter)(
        IWICImagingFactory* This,
        REFGUID guidMetadataFormat,
        const GUID *pguidVendor,
        IWICMetadataQueryWriter **ppIQueryWriter);

    HRESULT (STDMETHODCALLTYPE *CreateQueryWriterFromReader)(
        IWICImagingFactory* This,
        IWICMetadataQueryReader *pIQueryReader,
        const GUID *pguidVendor,
        IWICMetadataQueryWriter **ppIQueryWriter);

    END_INTERFACE
} IWICImagingFactoryVtbl;
interface IWICImagingFactory {
    CONST_VTBL IWICImagingFactoryVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICImagingFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICImagingFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICImagingFactory_Release(This) (This)->lpVtbl->Release(This)
/*** IWICImagingFactory methods ***/
#define IWICImagingFactory_CreateDecoderFromFilename(This,wzFilename,pguidVendor,dwDesiredAccess,metadataOptions,ppIDecoder) (This)->lpVtbl->CreateDecoderFromFilename(This,wzFilename,pguidVendor,dwDesiredAccess,metadataOptions,ppIDecoder)
#define IWICImagingFactory_CreateDecoderFromStream(This,pIStream,pguidVendor,metadataOptions,ppIDecoder) (This)->lpVtbl->CreateDecoderFromStream(This,pIStream,pguidVendor,metadataOptions,ppIDecoder)
#define IWICImagingFactory_CreateDecoderFromFileHandle(This,hFile,pguidVendor,metadataOptions,ppIDecoder) (This)->lpVtbl->CreateDecoderFromFileHandle(This,hFile,pguidVendor,metadataOptions,ppIDecoder)
#define IWICImagingFactory_CreateComponentInfo(This,clsidComponent,ppIInfo) (This)->lpVtbl->CreateComponentInfo(This,clsidComponent,ppIInfo)
#define IWICImagingFactory_CreateDecoder(This,guidContainerFormat,pguidVendor,ppIDecoder) (This)->lpVtbl->CreateDecoder(This,guidContainerFormat,pguidVendor,ppIDecoder)
#define IWICImagingFactory_CreateEncoder(This,guidContainerFormat,pguidVendor,ppIEncoder) (This)->lpVtbl->CreateEncoder(This,guidContainerFormat,pguidVendor,ppIEncoder)
#define IWICImagingFactory_CreatePalette(This,ppIPalette) (This)->lpVtbl->CreatePalette(This,ppIPalette)
#define IWICImagingFactory_CreateFormatConverter(This,ppIFormatConverter) (This)->lpVtbl->CreateFormatConverter(This,ppIFormatConverter)
#define IWICImagingFactory_CreateBitmapScaler(This,ppIBitmapScaler) (This)->lpVtbl->CreateBitmapScaler(This,ppIBitmapScaler)
#define IWICImagingFactory_CreateBitmapClipper(This,ppIBitmapClipper) (This)->lpVtbl->CreateBitmapClipper(This,ppIBitmapClipper)
#define IWICImagingFactory_CreateBitmapFlipRotator(This,ppIBitmapFlipRotator) (This)->lpVtbl->CreateBitmapFlipRotator(This,ppIBitmapFlipRotator)
#define IWICImagingFactory_CreateStream(This,ppIWICStream) (This)->lpVtbl->CreateStream(This,ppIWICStream)
#define IWICImagingFactory_CreateColorContext(This,ppIWICColorContext) (This)->lpVtbl->CreateColorContext(This,ppIWICColorContext)
#define IWICImagingFactory_CreateColorTransformer(This,ppIWICColorTransform) (This)->lpVtbl->CreateColorTransformer(This,ppIWICColorTransform)
#define IWICImagingFactory_CreateBitmap(This,uiWidth,uiHeight,pixelFormat,option,ppIBitmap) (This)->lpVtbl->CreateBitmap(This,uiWidth,uiHeight,pixelFormat,option,ppIBitmap)
#define IWICImagingFactory_CreateBitmapFromSource(This,piBitmapSource,option,ppIBitmap) (This)->lpVtbl->CreateBitmapFromSource(This,piBitmapSource,option,ppIBitmap)
#define IWICImagingFactory_CreateBitmapFromSourceRect(This,piBitmapSource,x,y,width,height,ppIBitmap) (This)->lpVtbl->CreateBitmapFromSourceRect(This,piBitmapSource,x,y,width,height,ppIBitmap)
#define IWICImagingFactory_CreateBitmapFromMemory(This,uiWidth,uiHeight,pixelFormat,cbStride,cbBufferSize,pbBuffer,ppIBitmap) (This)->lpVtbl->CreateBitmapFromMemory(This,uiWidth,uiHeight,pixelFormat,cbStride,cbBufferSize,pbBuffer,ppIBitmap)
#define IWICImagingFactory_CreateBitmapFromHBITMAP(This,hBitmap,hPalette,options,ppIBitmap) (This)->lpVtbl->CreateBitmapFromHBITMAP(This,hBitmap,hPalette,options,ppIBitmap)
#define IWICImagingFactory_CreateBitmapFromHICON(This,hIcon,ppIBitmap) (This)->lpVtbl->CreateBitmapFromHICON(This,hIcon,ppIBitmap)
#define IWICImagingFactory_CreateComponentEnumerator(This,componentTypes,options,ppIEnumUnknown) (This)->lpVtbl->CreateComponentEnumerator(This,componentTypes,options,ppIEnumUnknown)
#define IWICImagingFactory_CreateFastMetadataEncoderFromDecoder(This,pIDecoder,ppIFastEncoder) (This)->lpVtbl->CreateFastMetadataEncoderFromDecoder(This,pIDecoder,ppIFastEncoder)
#define IWICImagingFactory_CreateFastMetadataEncoderFromFrameDecode(This,pIFrameDecoder,ppIFastEncoder) (This)->lpVtbl->CreateFastMetadataEncoderFromFrameDecode(This,pIFrameDecoder,ppIFastEncoder)
#define IWICImagingFactory_CreateQueryWriter(This,guidMetadataFormat,pguidVendor,ppIQueryWriter) (This)->lpVtbl->CreateQueryWriter(This,guidMetadataFormat,pguidVendor,ppIQueryWriter)
#define IWICImagingFactory_CreateQueryWriterFromReader(This,pIQueryReader,pguidVendor,ppIQueryWriter) (This)->lpVtbl->CreateQueryWriterFromReader(This,pIQueryReader,pguidVendor,ppIQueryWriter)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICImagingFactory_CreateDecoderFromFilename_Proxy(
    IWICImagingFactory* This,
    LPCWSTR wzFilename,
    const GUID *pguidVendor,
    DWORD dwDesiredAccess,
    WICDecodeOptions metadataOptions,
    IWICBitmapDecoder **ppIDecoder);
void __RPC_STUB IWICImagingFactory_CreateDecoderFromFilename_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICImagingFactory_CreateDecoderFromStream_Proxy(
    IWICImagingFactory* This,
    IStream *pIStream,
    const GUID *pguidVendor,
    WICDecodeOptions metadataOptions,
    IWICBitmapDecoder **ppIDecoder);
void __RPC_STUB IWICImagingFactory_CreateDecoderFromStream_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICImagingFactory_CreateDecoderFromFileHandle_Proxy(
    IWICImagingFactory* This,
    ULONG_PTR hFile,
    const GUID *pguidVendor,
    WICDecodeOptions metadataOptions,
    IWICBitmapDecoder **ppIDecoder);
void __RPC_STUB IWICImagingFactory_CreateDecoderFromFileHandle_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICImagingFactory_CreateComponentInfo_Proxy(
    IWICImagingFactory* This,
    REFCLSID clsidComponent,
    IWICComponentInfo **ppIInfo);
void __RPC_STUB IWICImagingFactory_CreateComponentInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICImagingFactory_CreateDecoder_Proxy(
    IWICImagingFactory* This,
    REFGUID guidContainerFormat,
    const GUID *pguidVendor,
    IWICBitmapDecoder **ppIDecoder);
void __RPC_STUB IWICImagingFactory_CreateDecoder_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICImagingFactory_CreateEncoder_Proxy(
    IWICImagingFactory* This,
    REFGUID guidContainerFormat,
    const GUID *pguidVendor,
    IWICBitmapEncoder **ppIEncoder);
void __RPC_STUB IWICImagingFactory_CreateEncoder_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICImagingFactory_CreatePalette_Proxy(
    IWICImagingFactory* This,
    IWICPalette **ppIPalette);
void __RPC_STUB IWICImagingFactory_CreatePalette_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICImagingFactory_CreateFormatConverter_Proxy(
    IWICImagingFactory* This,
    IWICFormatConverter **ppIFormatConverter);
void __RPC_STUB IWICImagingFactory_CreateFormatConverter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICImagingFactory_CreateBitmapScaler_Proxy(
    IWICImagingFactory* This,
    IWICBitmapScaler **ppIBitmapScaler);
void __RPC_STUB IWICImagingFactory_CreateBitmapScaler_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICImagingFactory_CreateBitmapClipper_Proxy(
    IWICImagingFactory* This,
    IWICBitmapClipper **ppIBitmapClipper);
void __RPC_STUB IWICImagingFactory_CreateBitmapClipper_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICImagingFactory_CreateBitmapFlipRotator_Proxy(
    IWICImagingFactory* This,
    IWICBitmapFlipRotator **ppIBitmapFlipRotator);
void __RPC_STUB IWICImagingFactory_CreateBitmapFlipRotator_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICImagingFactory_CreateStream_Proxy(
    IWICImagingFactory* This,
    IWICStream **ppIWICStream);
void __RPC_STUB IWICImagingFactory_CreateStream_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICImagingFactory_CreateColorContext_Proxy(
    IWICImagingFactory* This,
    IWICColorContext **ppIWICColorContext);
void __RPC_STUB IWICImagingFactory_CreateColorContext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICImagingFactory_CreateColorTransformer_Proxy(
    IWICImagingFactory* This,
    IWICColorTransform **ppIWICColorTransform);
void __RPC_STUB IWICImagingFactory_CreateColorTransformer_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICImagingFactory_CreateBitmap_Proxy(
    IWICImagingFactory* This,
    UINT uiWidth,
    UINT uiHeight,
    REFWICPixelFormatGUID pixelFormat,
    WICBitmapCreateCacheOption option,
    IWICBitmap **ppIBitmap);
void __RPC_STUB IWICImagingFactory_CreateBitmap_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICImagingFactory_CreateBitmapFromSource_Proxy(
    IWICImagingFactory* This,
    IWICBitmapSource *piBitmapSource,
    WICBitmapCreateCacheOption option,
    IWICBitmap **ppIBitmap);
void __RPC_STUB IWICImagingFactory_CreateBitmapFromSource_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICImagingFactory_CreateBitmapFromSourceRect_Proxy(
    IWICImagingFactory* This,
    IWICBitmapSource *piBitmapSource,
    UINT x,
    UINT y,
    UINT width,
    UINT height,
    IWICBitmap **ppIBitmap);
void __RPC_STUB IWICImagingFactory_CreateBitmapFromSourceRect_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICImagingFactory_CreateBitmapFromMemory_Proxy(
    IWICImagingFactory* This,
    UINT uiWidth,
    UINT uiHeight,
    REFWICPixelFormatGUID pixelFormat,
    UINT cbStride,
    UINT cbBufferSize,
    BYTE *pbBuffer,
    IWICBitmap **ppIBitmap);
void __RPC_STUB IWICImagingFactory_CreateBitmapFromMemory_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICImagingFactory_CreateBitmapFromHBITMAP_Proxy(
    IWICImagingFactory* This,
    HBITMAP hBitmap,
    HPALETTE hPalette,
    WICBitmapAlphaChannelOption options,
    IWICBitmap **ppIBitmap);
void __RPC_STUB IWICImagingFactory_CreateBitmapFromHBITMAP_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICImagingFactory_CreateBitmapFromHICON_Proxy(
    IWICImagingFactory* This,
    HICON hIcon,
    IWICBitmap **ppIBitmap);
void __RPC_STUB IWICImagingFactory_CreateBitmapFromHICON_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICImagingFactory_CreateComponentEnumerator_Proxy(
    IWICImagingFactory* This,
    DWORD componentTypes,
    DWORD options,
    IEnumUnknown **ppIEnumUnknown);
void __RPC_STUB IWICImagingFactory_CreateComponentEnumerator_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICImagingFactory_CreateFastMetadataEncoderFromDecoder_Proxy(
    IWICImagingFactory* This,
    IWICBitmapDecoder *pIDecoder,
    IWICFastMetadataEncoder **ppIFastEncoder);
void __RPC_STUB IWICImagingFactory_CreateFastMetadataEncoderFromDecoder_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICImagingFactory_CreateFastMetadataEncoderFromFrameDecode_Proxy(
    IWICImagingFactory* This,
    IWICBitmapFrameDecode *pIFrameDecoder,
    IWICFastMetadataEncoder **ppIFastEncoder);
void __RPC_STUB IWICImagingFactory_CreateFastMetadataEncoderFromFrameDecode_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICImagingFactory_CreateQueryWriter_Proxy(
    IWICImagingFactory* This,
    REFGUID guidMetadataFormat,
    const GUID *pguidVendor,
    IWICMetadataQueryWriter **ppIQueryWriter);
void __RPC_STUB IWICImagingFactory_CreateQueryWriter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICImagingFactory_CreateQueryWriterFromReader_Proxy(
    IWICImagingFactory* This,
    IWICMetadataQueryReader *pIQueryReader,
    const GUID *pguidVendor,
    IWICMetadataQueryWriter **ppIQueryWriter);
void __RPC_STUB IWICImagingFactory_CreateQueryWriterFromReader_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICImagingFactory_INTERFACE_DEFINED__ */

HRESULT WINAPI WICConvertBitmapSource(REFWICPixelFormatGUID dstFormat, IWICBitmapSource *pISrc, IWICBitmapSource **ppIDst);
DEFINE_GUID(CLSID_WICBmpDecoder, 0x6b462062,0x7cbf,0x400d,0x9f,0xdb,0x81,0x3d,0xd1,0x0f,0x27,0x78);
DEFINE_GUID(CLSID_WICPngDecoder, 0x389ea17b,0x5078,0x4cde,0xb6,0xef,0x25,0xc1,0x51,0x75,0xc7,0x51);
DEFINE_GUID(CLSID_WICIcoDecoder, 0xc61bfcdf,0x2e0f,0x4aad,0xa8,0xd7,0xe0,0x6b,0xaf,0xeb,0xcd,0xfe);
DEFINE_GUID(CLSID_WICJpegDecoder, 0x9456a480,0xe88b,0x43ea,0x9e,0x73,0x0b,0x2d,0x9b,0x71,0xb1,0xca);
DEFINE_GUID(CLSID_WICGifDecoder, 0x381dda3c,0x9ce9,0x4834,0xa2,0x3e,0x1f,0x98,0xf8,0xfc,0x52,0xbe);
DEFINE_GUID(CLSID_WICTiffDecoder, 0xb54e85d9,0xfe23,0x499f,0x8b,0x88,0x6a,0xce,0xa7,0x13,0x75,0x2b);
DEFINE_GUID(CLSID_WICWmpDecoder, 0xa26cec36,0x234c,0x4950,0xae,0x16,0xe3,0x4a,0xac,0xe7,0x1d,0x0d);
DEFINE_GUID(CLSID_WICBmpEncoder, 0x69be8bb4,0xd66d,0x47c8,0x86,0x5a,0xed,0x15,0x89,0x43,0x37,0x82);
DEFINE_GUID(CLSID_WICPngEncoder, 0x27949969,0x876a,0x41d7,0x94,0x47,0x56,0x8f,0x6a,0x35,0xa4,0xdc);
DEFINE_GUID(CLSID_WICJpegEncoder, 0x1a34f5c1,0x4a5a,0x46dc,0xb6,0x44,0x1f,0x45,0x67,0xe7,0xa6,0x76);
DEFINE_GUID(CLSID_WICGifEncoder, 0x114f5598,0x0b22,0x40a0,0x86,0xa1,0xc8,0x3e,0xa4,0x95,0xad,0xbd);
DEFINE_GUID(CLSID_WICTiffEncoder, 0x0131be10,0x2001,0x4c5f,0xa9,0xb0,0xcc,0x88,0xfa,0xb6,0x4c,0xe8);
DEFINE_GUID(CLSID_WICWmpEncoder, 0xac4ce3cb,0xe1c1,0x44cd,0x82,0x15,0x5a,0x16,0x65,0x50,0x9e,0xc2);
DEFINE_GUID(CLSID_WICDefaultFormatConverter, 0x1a3f11dc,0xb514,0x4b17,0x8c,0x5f,0x21,0x54,0x51,0x38,0x52,0xf1);
DEFINE_GUID(GUID_ContainerFormatBmp, 0x0af1d87e,0xfcfe,0x4188,0xbd,0xeb,0xa7,0x90,0x64,0x71,0xcb,0xe3);
DEFINE_GUID(GUID_ContainerFormatPng, 0x1b7cfaf4,0x713f,0x473c,0xbb,0xcd,0x61,0x37,0x42,0x5f,0xae,0xaf);
DEFINE_GUID(GUID_ContainerFormatIco, 0xa3a860c4,0x338f,0x4c17,0x91,0x9a,0xfb,0xa4,0xb5,0x62,0x8f,0x21);
DEFINE_GUID(GUID_ContainerFormatJpeg, 0x19e4a5aa,0x5662,0x4fc5,0xa0,0xc0,0x17,0x58,0x02,0x8e,0x10,0x57);
DEFINE_GUID(GUID_ContainerFormatTiff, 0x163bcc30,0xe2e9,0x4f0b,0x96,0x1d,0xa3,0xe9,0xfd,0xb7,0x88,0xa3);
DEFINE_GUID(GUID_ContainerFormatGif, 0x1f8a5601,0x7d4d,0x4cbd,0x9c,0x82,0x1b,0xc8,0xd4,0xee,0xb9,0xa5);
DEFINE_GUID(GUID_ContainerFormatWmp, 0x57a37caa,0x367a,0x4540,0x91,0x6b,0xf1,0x83,0xc5,0x09,0x3a,0x4b);
DEFINE_GUID(GUID_VendorMicrosoft, 0xf0e749ca,0xedef,0x4589,0xa7,0x3a,0xee,0x0e,0x62,0x6a,0x2a,0x2b);
DEFINE_GUID(CATID_WICBitmapDecoders, 0x7ed96837,0x96f0,0x4812,0xb2,0x11,0xf1,0x3c,0x24,0x11,0x7e,0xd3);
DEFINE_GUID(CATID_WICBitmapEncoders, 0xac757296,0x3522,0x4e11,0x98,0x62,0xc1,0x7b,0xe5,0xa1,0x76,0x7e);
DEFINE_GUID(CATID_WICFormatConverters, 0x7835eae8,0xbf14,0x49d1,0x93,0xce,0x53,0x3a,0x40,0x7b,0x22,0x48);
/* Begin additional prototypes for all interfaces */

ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
ULONG           __RPC_USER LPSAFEARRAY_UserSize     (ULONG *, ULONG, LPSAFEARRAY *);
unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal  (ULONG *, unsigned char *, LPSAFEARRAY *);
unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal(ULONG *, unsigned char *, LPSAFEARRAY *);
void            __RPC_USER LPSAFEARRAY_UserFree     (ULONG *, LPSAFEARRAY *);
ULONG           __RPC_USER HBITMAP_UserSize     (ULONG *, ULONG, HBITMAP *);
unsigned char * __RPC_USER HBITMAP_UserMarshal  (ULONG *, unsigned char *, HBITMAP *);
unsigned char * __RPC_USER HBITMAP_UserUnmarshal(ULONG *, unsigned char *, HBITMAP *);
void            __RPC_USER HBITMAP_UserFree     (ULONG *, HBITMAP *);
ULONG           __RPC_USER HPALETTE_UserSize     (ULONG *, ULONG, HPALETTE *);
unsigned char * __RPC_USER HPALETTE_UserMarshal  (ULONG *, unsigned char *, HPALETTE *);
unsigned char * __RPC_USER HPALETTE_UserUnmarshal(ULONG *, unsigned char *, HPALETTE *);
void            __RPC_USER HPALETTE_UserFree     (ULONG *, HPALETTE *);
ULONG           __RPC_USER HICON_UserSize     (ULONG *, ULONG, HICON *);
unsigned char * __RPC_USER HICON_UserMarshal  (ULONG *, unsigned char *, HICON *);
unsigned char * __RPC_USER HICON_UserUnmarshal(ULONG *, unsigned char *, HICON *);
void            __RPC_USER HICON_UserFree     (ULONG *, HICON *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __WIDL_WINCODEC_H */
