xpmgr/BuildTools/Include/wincodec.idl

2603 lines
92 KiB
Plaintext

/*++ BUILD Version: 0002 // Increment this if a change has global effects
Copyright (c) 2000 Microsoft Corporation
Module Name:
wincodec.idl
Abstract:
This module contains the public data structures and API definitions
needed for the Windows still image codecs.
Revision History:
--*/
import "wtypes.idl";
import "propidl.idl";
import "objidl.idl";
import "ocidl.idl";
/*=========================================================================*\
Includes
\*=========================================================================*/
cpp_quote("#include <intsafe.h>")
/*=========================================================================*\
SDK Version
\*=========================================================================*/
cpp_quote("#define WINCODEC_SDK_VERSION 0x0236")
cpp_quote("DEFINE_GUID(CLSID_WICImagingFactory, 0xcacaf262, 0x9370, 0x4615, 0xa1, 0x3b, 0x9f, 0x55, 0x39, 0xda, 0x4c, 0xa);")
/*=========================================================================*\
GUID Identifiers for the vendors
\*=========================================================================*/
cpp_quote("DEFINE_GUID(GUID_VendorMicrosoft, 0xf0e749ca, 0xedef, 0x4589, 0xa7, 0x3a, 0xee, 0xe, 0x62, 0x6a, 0x2a, 0x2b);")
cpp_quote("DEFINE_GUID(GUID_VendorMicrosoftBuiltIn, 0x257a30fd, 0x6b6, 0x462b, 0xae, 0xa4, 0x63, 0xf7, 0xb, 0x86, 0xe5, 0x33);")
/*=========================================================================*\
GUID Identifiers for the codecs
\*=========================================================================*/
cpp_quote("DEFINE_GUID(CLSID_WICBmpDecoder, 0x6b462062, 0x7cbf, 0x400d, 0x9f, 0xdb, 0x81, 0x3d, 0xd1, 0x0f, 0x27, 0x78);")
cpp_quote("DEFINE_GUID(CLSID_WICPngDecoder, 0x389ea17b, 0x5078, 0x4cde, 0xb6, 0xef, 0x25, 0xc1, 0x51, 0x75, 0xc7, 0x51);")
cpp_quote("DEFINE_GUID(CLSID_WICIcoDecoder, 0xc61bfcdf, 0x2e0f, 0x4aad, 0xa8, 0xd7, 0xe0, 0x6b, 0xaf, 0xeb, 0xcd, 0xfe);")
cpp_quote("DEFINE_GUID(CLSID_WICJpegDecoder, 0x9456a480, 0xe88b, 0x43ea, 0x9e, 0x73, 0x0b, 0x2d, 0x9b, 0x71, 0xb1, 0xca);")
cpp_quote("DEFINE_GUID(CLSID_WICGifDecoder, 0x381dda3c, 0x9ce9, 0x4834, 0xa2, 0x3e, 0x1f, 0x98, 0xf8, 0xfc, 0x52, 0xbe);")
cpp_quote("DEFINE_GUID(CLSID_WICTiffDecoder, 0xb54e85d9, 0xfe23, 0x499f, 0x8b, 0x88, 0x6a, 0xce, 0xa7, 0x13, 0x75, 0x2b);")
cpp_quote("DEFINE_GUID(CLSID_WICWmpDecoder, 0xa26cec36, 0x234c, 0x4950, 0xae, 0x16, 0xe3, 0x4a, 0xac, 0xe7, 0x1d, 0x0d);")
cpp_quote("DEFINE_GUID(CLSID_WICBmpEncoder, 0x69be8bb4, 0xd66d, 0x47c8, 0x86, 0x5a, 0xed, 0x15, 0x89, 0x43, 0x37, 0x82);")
cpp_quote("DEFINE_GUID(CLSID_WICPngEncoder, 0x27949969, 0x876a, 0x41d7, 0x94, 0x47, 0x56, 0x8f, 0x6a, 0x35, 0xa4, 0xdc);")
cpp_quote("DEFINE_GUID(CLSID_WICJpegEncoder, 0x1a34f5c1, 0x4a5a, 0x46dc, 0xb6, 0x44, 0x1f, 0x45, 0x67, 0xe7, 0xa6, 0x76);")
cpp_quote("DEFINE_GUID(CLSID_WICGifEncoder, 0x114f5598, 0x0b22, 0x40a0, 0x86, 0xa1, 0xc8, 0x3e, 0xa4, 0x95, 0xad, 0xbd);")
cpp_quote("DEFINE_GUID(CLSID_WICTiffEncoder, 0x0131be10, 0x2001, 0x4c5f, 0xa9, 0xb0, 0xcc, 0x88, 0xfa, 0xb6, 0x4c, 0xe8);")
cpp_quote("DEFINE_GUID(CLSID_WICWmpEncoder, 0xac4ce3cb, 0xe1c1, 0x44cd, 0x82, 0x15, 0x5a, 0x16, 0x65, 0x50, 0x9e, 0xc2);")
/*=========================================================================*\
GUID Identifiers for the image container formats
\*=========================================================================*/
cpp_quote("DEFINE_GUID(GUID_ContainerFormatBmp, 0x0af1d87e, 0xfcfe, 0x4188, 0xbd, 0xeb, 0xa7, 0x90, 0x64, 0x71, 0xcb, 0xe3);")
cpp_quote("DEFINE_GUID(GUID_ContainerFormatPng, 0x1b7cfaf4, 0x713f, 0x473c, 0xbb, 0xcd, 0x61, 0x37, 0x42, 0x5f, 0xae, 0xaf);")
cpp_quote("DEFINE_GUID(GUID_ContainerFormatIco, 0xa3a860c4, 0x338f, 0x4c17, 0x91, 0x9a, 0xfb, 0xa4, 0xb5, 0x62, 0x8f, 0x21);")
cpp_quote("DEFINE_GUID(GUID_ContainerFormatJpeg, 0x19e4a5aa, 0x5662, 0x4fc5, 0xa0, 0xc0, 0x17, 0x58, 0x02, 0x8e, 0x10, 0x57);")
cpp_quote("DEFINE_GUID(GUID_ContainerFormatTiff, 0x163bcc30, 0xe2e9, 0x4f0b, 0x96, 0x1d, 0xa3, 0xe9, 0xfd, 0xb7, 0x88, 0xa3);")
cpp_quote("DEFINE_GUID(GUID_ContainerFormatGif, 0x1f8a5601, 0x7d4d, 0x4cbd, 0x9c, 0x82, 0x1b, 0xc8, 0xd4, 0xee, 0xb9, 0xa5);")
cpp_quote("DEFINE_GUID(GUID_ContainerFormatWmp, 0x57a37caa, 0x367a, 0x4540, 0x91, 0x6b, 0xf1, 0x83, 0xc5, 0x09, 0x3a, 0x4b);")
/*=========================================================================*\
Category Identifiers
\*=========================================================================*/
cpp_quote("DEFINE_GUID(CLSID_WICImagingCategories, 0xfae3d380, 0xfea4, 0x4623, 0x8c, 0x75, 0xc6, 0xb6, 0x11, 0x10, 0xb6, 0x81);")
cpp_quote("DEFINE_GUID(CATID_WICBitmapDecoders, 0x7ed96837, 0x96f0, 0x4812, 0xb2, 0x11, 0xf1, 0x3c, 0x24, 0x11, 0x7e, 0xd3);")
cpp_quote("DEFINE_GUID(CATID_WICBitmapEncoders, 0xac757296, 0x3522, 0x4e11, 0x98, 0x62, 0xc1, 0x7b, 0xe5, 0xa1, 0x76, 0x7e);")
cpp_quote("DEFINE_GUID(CATID_WICPixelFormats, 0x2b46e70f, 0xcda7, 0x473e, 0x89, 0xf6, 0xdc, 0x96, 0x30, 0xa2, 0x39, 0x0b);")
cpp_quote("DEFINE_GUID(CATID_WICFormatConverters, 0x7835eae8, 0xbf14, 0x49d1, 0x93, 0xce, 0x53, 0x3a, 0x40, 0x7b, 0x22, 0x48);")
cpp_quote("DEFINE_GUID(CATID_WICMetadataReader, 0x05af94d8, 0x7174, 0x4cd2, 0xbe, 0x4a, 0x41, 0x24, 0xb8, 0x0e, 0xe4, 0xb8);")
cpp_quote("DEFINE_GUID(CATID_WICMetadataWriter, 0xabe3b9a4, 0x257d, 0x4b97, 0xbd, 0x1a, 0x29, 0x4a, 0xf4, 0x96, 0x22, 0x2e);")
/*=========================================================================*\
Format converters
\*=========================================================================*/
cpp_quote("DEFINE_GUID(CLSID_WICDefaultFormatConverter, 0x1a3f11dc, 0xb514, 0x4b17, 0x8c, 0x5f, 0x21, 0x54, 0x51, 0x38, 0x52, 0xf1);")
cpp_quote("DEFINE_GUID(CLSID_WICFormatConverterHighColor, 0xac75d454, 0x9f37, 0x48f8, 0xb9, 0x72, 0x4e, 0x19, 0xbc, 0x85, 0x60, 0x11);")
cpp_quote("DEFINE_GUID(CLSID_WICFormatConverterNChannel, 0xc17cabb2, 0xd4a3, 0x47d7, 0xa5, 0x57, 0x33, 0x9b, 0x2e, 0xfb, 0xd4, 0xf1);")
cpp_quote("DEFINE_GUID(CLSID_WICFormatConverterWMPhoto, 0x9cb5172b, 0xd600, 0x46ba, 0xab, 0x77, 0x77, 0xbb, 0x7e, 0x3a, 0x00, 0xd9);")
/*=========================================================================*\
Interface forward declarations :
\*=========================================================================*/
interface IWICImagingFactory;
interface IWICPalette;
interface IWICBitmap;
interface IWICBitmapLock;
interface IWICBitmapSource;
interface IWICFastMetadataEncoder;
interface IWICBitmapCodecInfo;
interface IWICBitmapDecoderInfo;
interface IWICBitmapEncoderInfo;
interface IWICBitmapDecoder;
interface IWICBitmapEncoder;
interface IWICBitmapFrameDecode;
interface IWICBitmapFrameEncode;
interface IWICBitmapSourceTransform;
interface IWICBitmapScaler;
interface IWICBitmapClipper;
interface IWICBitmapFlipRotator;
interface IWICFormatConverter;
interface IWICComponentInfo;
interface IWICStream;
interface IWICEnumMetadataItem;
interface IWICMetadataQueryReader;
interface IWICMetadataQueryWriter;
/*=========================================================================*\
Color
\*=========================================================================*/
typedef UINT32 WICColor;
/*=========================================================================*\
Rect
\*=========================================================================*/
typedef [public] struct WICRect
{
INT X;
INT Y;
INT Width;
INT Height;
} WICRect;
/*=========================================================================*\
Definition of a wire pointer.
\*=========================================================================*/
cpp_quote("typedef BYTE* WICInProcPointer;")
cpp_quote("#if 0")
typedef [wire_marshal(UINT_PTR)] void* WICInProcPointer;
cpp_quote("#endif")
/*=========================================================================*\
WICColorContextType
\*=========================================================================*/
typedef [public] enum WICColorContextType
{
WICColorContextUninitialized = 0x00000000,
WICColorContextProfile = 0x00000001,
WICColorContextExifColorSpace = 0x00000002,
} WICColorContextType;
#define CODEC_FORCE_DWORD 0x7FFFFFFF
/*=========================================================================*\
Pixel Format GUIDs
\*=========================================================================*/
typedef [public] REFGUID REFWICPixelFormatGUID;
typedef [public] GUID WICPixelFormatGUID;
/* Undefined formats */
cpp_quote("#define GUID_WICPixelFormatUndefined GUID_WICPixelFormatDontCare" )
cpp_quote("DEFINE_GUID(GUID_WICPixelFormatDontCare, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x00);")
/* Indexed formats */
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat1bppIndexed, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x01);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat2bppIndexed, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x02);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat4bppIndexed, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x03);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat8bppIndexed, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x04);")
/* Grayscale formats */
cpp_quote("DEFINE_GUID(GUID_WICPixelFormatBlackWhite, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x05);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat2bppGray, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x06);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat4bppGray, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x07);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat8bppGray, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x08);")
/* Alpha only format */
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat8bppAlpha, 0xe6cd0116, 0xeeba, 0x4161, 0xaa, 0x85, 0x27, 0xdd, 0x9f, 0xb3, 0xa8, 0x95);")
/* sRGB formats (gamma is approx. 2.2) */
/* For a full definition, see the sRGB spec */
/* 16bpp formats */
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat16bppBGR555, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x09);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat16bppBGR565, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x0a);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat16bppBGRA5551, 0x05ec7c2b, 0xf1e6, 0x4961, 0xad, 0x46, 0xe1, 0xcc, 0x81, 0x0a, 0x87, 0xd2);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat16bppGray, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x0b);")
/* 24bpp formats */
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat24bppBGR, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x0c);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat24bppRGB, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x0d);")
/* 32bpp format */
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat32bppBGR, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x0e);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat32bppBGRA, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x0f);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat32bppPBGRA, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x10);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat32bppGrayFloat, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x11);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat32bppRGBA, 0xf5c7ad2d, 0x6a8d, 0x43dd, 0xa7, 0xa8, 0xa2, 0x99, 0x35, 0x26, 0x1a, 0xe9);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat32bppPRGBA, 0x3cc4a650, 0xa527, 0x4d37, 0xa9, 0x16, 0x31, 0x42, 0xc7, 0xeb, 0xed, 0xba);")
/* 48bpp formats */
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat48bppRGB, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x15);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat48bppBGR, 0xe605a384, 0xb468, 0x46ce, 0xbb, 0x2e, 0x36, 0xf1, 0x80, 0xe6, 0x43, 0x13);")
/* 64bpp format */
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat64bppRGBA, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x16);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat64bppBGRA, 0x1562ff7c, 0xd352, 0x46f9, 0x97, 0x9e, 0x42, 0x97, 0x6b, 0x79, 0x22, 0x46);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat64bppPRGBA, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x17);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat64bppPBGRA, 0x8c518e8e, 0xa4ec, 0x468b, 0xae, 0x70, 0xc9, 0xa3, 0x5a, 0x9c, 0x55, 0x30);")
/* scRGB formats. Gamma is 1.0 */
/* For a full definition, see the scRGB spec */
/* 16bpp format */
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat16bppGrayFixedPoint, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x13);")
/* 32bpp format */
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat32bppBGR101010, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x14);")
/* 48bpp format */
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat48bppRGBFixedPoint, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x12);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat48bppBGRFixedPoint, 0x49ca140e, 0xcab6, 0x493b, 0x9d, 0xdf, 0x60, 0x18, 0x7c, 0x37, 0x53, 0x2a);")
/* 96bpp format */
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat96bppRGBFixedPoint, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x18);")
/* Floating point scRGB formats */
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat128bppRGBAFloat, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x19);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat128bppPRGBAFloat, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x1a);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat128bppRGBFloat, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x1b);")
/* CMYK formats */
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat32bppCMYK, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x1c);")
/* Extended formats */
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat64bppRGBAFixedPoint, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x1d);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat64bppBGRAFixedPoint, 0x356de33c, 0x54d2, 0x4a23, 0xbb, 0x4, 0x9b, 0x7b, 0xf9, 0xb1, 0xd4, 0x2d);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat64bppRGBFixedPoint, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x40);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat128bppRGBAFixedPoint, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x1e);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat128bppRGBFixedPoint, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x41);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat64bppRGBAHalf, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x3a);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat64bppRGBHalf, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x42);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat48bppRGBHalf, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x3b);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat32bppRGBE, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x3d);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat16bppGrayHalf, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x3e);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat32bppGrayFixedPoint, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x3f);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat32bppRGBA1010102, 0x25238D72, 0xFCF9, 0x4522, 0xb5, 0x14, 0x55, 0x78, 0xe5, 0xad, 0x55, 0xe0);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat32bppRGBA1010102XR, 0x00DE6B9A, 0xC101, 0x434b, 0xb5, 0x02, 0xd0, 0x16, 0x5e, 0xe1, 0x12, 0x2c);")
/* More CMYK formats and n-Channel formats */
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat64bppCMYK, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x1f);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat24bpp3Channels, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x20);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat32bpp4Channels, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x21);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat40bpp5Channels, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x22);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat48bpp6Channels, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x23);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat56bpp7Channels, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x24);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat64bpp8Channels, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x25);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat48bpp3Channels, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x26);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat64bpp4Channels, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x27);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat80bpp5Channels, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x28);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat96bpp6Channels, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x29);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat112bpp7Channels, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x2a);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat128bpp8Channels, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x2b);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat40bppCMYKAlpha, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x2c);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat80bppCMYKAlpha, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x2d);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat32bpp3ChannelsAlpha, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x2e);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat40bpp4ChannelsAlpha, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x2f);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat48bpp5ChannelsAlpha, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x30);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat56bpp6ChannelsAlpha, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x31);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat64bpp7ChannelsAlpha, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x32);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat72bpp8ChannelsAlpha, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x33);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat64bpp3ChannelsAlpha, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x34);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat80bpp4ChannelsAlpha, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x35);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat96bpp5ChannelsAlpha, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x36);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat112bpp6ChannelsAlpha, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x37);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat128bpp7ChannelsAlpha, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x38);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat144bpp8ChannelsAlpha, 0x6fddc324, 0x4e03, 0x4bfe, 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x39);")
/*=========================================================================*\
WICBitmapCreateCacheOptions
\*=========================================================================*/
typedef [public] enum WICBitmapCreateCacheOption
{
WICBitmapNoCache = 0x00000000,
WICBitmapCacheOnDemand = 0x00000001,
WICBitmapCacheOnLoad = 0x00000002,
WICBITMAPCREATECACHEOPTION_FORCE_DWORD = CODEC_FORCE_DWORD
} WICBitmapCreateCacheOption;
/*=========================================================================*\
WICDecodeOptions
\*=========================================================================*/
typedef [public] enum WICDecodeOptions
{
WICDecodeMetadataCacheOnDemand = 0x00000000,
WICDecodeMetadataCacheOnLoad = 0x00000001,
WICMETADATACACHEOPTION_FORCE_DWORD = CODEC_FORCE_DWORD
} WICDecodeOptions;
/*=========================================================================*\
WICBitmapEncoderCacheOption
\*=========================================================================*/
typedef [public] enum WICBitmapEncoderCacheOption
{
WICBitmapEncoderCacheInMemory = 0x00000000,
WICBitmapEncoderCacheTempFile = 0x00000001,
WICBitmapEncoderNoCache = 0x00000002,
WICBITMAPENCODERCACHEOPTION_FORCE_DWORD = CODEC_FORCE_DWORD
} WICBitmapEncoderCacheOption;
/*=========================================================================*\
WICComponentType
\*=========================================================================*/
typedef [public] enum WICComponentType
{
WICDecoder = 0x00000001,
WICEncoder = 0x00000002,
WICPixelFormatConverter = 0x00000004,
WICMetadataReader = 0x00000008,
WICMetadataWriter = 0x00000010,
WICPixelFormat = 0x00000020,
WICAllComponents = 0x0000003F,
WICCOMPONENTTYPE_FORCE_DWORD = CODEC_FORCE_DWORD
} WICComponentType;
/*=========================================================================*\
WICComponentEnumerateOptions
\*=========================================================================*/
typedef [public] enum WICComponentEnumerateOptions
{
WICComponentEnumerateDefault = 0x00000000,
WICComponentEnumerateRefresh = 0x00000001,
WICComponentEnumerateDisabled = 0x80000000,
WICComponentEnumerateUnsigned = 0x40000000,
WICComponentEnumerateBuiltInOnly = 0x20000000,
WICCOMPONENTENUMERATEOPTIONS_FORCE_DWORD = CODEC_FORCE_DWORD
} WICComponentEnumerateOptions;
/*=========================================================================*\
WICBitmapPattern
\*=========================================================================*/
typedef [public] struct WICBitmapPattern
{
ULARGE_INTEGER Position;
ULONG Length;
[size_is(Length)] BYTE *Pattern;
[size_is(Length)] BYTE *Mask;
BOOL EndOfStream;
} WICBitmapPattern;
/*=========================================================================*\
WICBitmapInterpolationMode
\*=========================================================================*/
typedef [public] enum WICBitmapInterpolationMode
{
// Nearest Neighbor filtering. Also known as nearest pixel or nearest point
// sampling.
WICBitmapInterpolationModeNearestNeighbor = 0x00000000,
// Linear filtering.
WICBitmapInterpolationModeLinear = 0x00000001,
// Cubic filtering. May include linear pre-filtering or decimation.
WICBitmapInterpolationModeCubic = 0x00000002,
// Fant filtering.
WICBitmapInterpolationModeFant = 0x00000003,
WICBITMAPINTERPOLATIONMODE_FORCE_DWORD = CODEC_FORCE_DWORD
} WICBitmapInterpolationMode;
/*=========================================================================*\
WICBitmapPaletteType
\*=========================================================================*/
typedef [public] enum WICBitmapPaletteType
{
// Arbitrary custom palette provided by caller.
WICBitmapPaletteTypeCustom = 0x00000000,
// Optimal palette generated using a median-cut algorithm.
WICBitmapPaletteTypeMedianCut = 0x00000001,
// Black and white palette.
WICBitmapPaletteTypeFixedBW = 0x00000002,
// Symmetric halftone palettes.
// Each of these halftone palettes will be a superset of the system palette.
// E.g. Halftone8 will have it's 8-color on-off primaries and the 16 system
// colors added. With duplicates removed, that leaves 16 colors.
WICBitmapPaletteTypeFixedHalftone8 = 0x00000003, // 8-color, on-off primaries
WICBitmapPaletteTypeFixedHalftone27 = 0x00000004, // 3 intensity levels of each color
WICBitmapPaletteTypeFixedHalftone64 = 0x00000005, // 4 intensity levels of each color
WICBitmapPaletteTypeFixedHalftone125 = 0x00000006, // 5 intensity levels of each color
WICBitmapPaletteTypeFixedHalftone216 = 0x00000007, // 6 intensity levels of each color
// Convenient web palette, same as WICBitmapPaletteTypeFixedHalftone216
WICBitmapPaletteTypeFixedWebPalette = WICBitmapPaletteTypeFixedHalftone216,
// Assymetric halftone palettes.
// These are somewhat less useful than the symmetric ones, but are
// included for completeness. These do not include all of the system
// colors.
WICBitmapPaletteTypeFixedHalftone252 = 0x00000008, // 6-red, 7-green, 6-blue intensities
WICBitmapPaletteTypeFixedHalftone256 = 0x00000009, // 8-red, 8-green, 4-blue intensities
WICBitmapPaletteTypeFixedGray4 = 0x0000000A, // 4 shades of gray
WICBitmapPaletteTypeFixedGray16 = 0x0000000B, // 16 shades of gray
WICBitmapPaletteTypeFixedGray256 = 0x0000000C, // 256 shades of gray
WICBITMAPPALETTETYPE_FORCE_DWORD = CODEC_FORCE_DWORD
} WICBitmapPaletteType;
/*=========================================================================*\
WICBitmapDitherType
\*=========================================================================*/
typedef [public] enum WICBitmapDitherType
{
// Solid color - picks the nearest matching color with no attempt to
// halftone or dither. May be used on an arbitrary palette.
WICBitmapDitherTypeNone = 0x00000000,
WICBitmapDitherTypeSolid = 0x00000000,
// Ordered dithers and spiral dithers must be used with a fixed palette or
// a fixed palette translation.
// NOTE: DitherOrdered4x4 is unique in that it may apply to 16bpp
// conversions also.
WICBitmapDitherTypeOrdered4x4 = 0x00000001,
WICBitmapDitherTypeOrdered8x8 = 0x00000002,
WICBitmapDitherTypeOrdered16x16 = 0x00000003,
WICBitmapDitherTypeSpiral4x4 = 0x00000004,
WICBitmapDitherTypeSpiral8x8 = 0x00000005,
WICBitmapDitherTypeDualSpiral4x4 = 0x00000006,
WICBitmapDitherTypeDualSpiral8x8 = 0x00000007,
// Error diffusion. May be used with any palette.
WICBitmapDitherTypeErrorDiffusion = 0x00000008,
WICBITMAPDITHERTYPE_FORCE_DWORD = CODEC_FORCE_DWORD
} WICBitmapDitherType;
/*=========================================================================*\
WICBitmapAlphaChannelOption
\*=========================================================================*/
typedef [public] enum WICBitmapAlphaChannelOption
{
WICBitmapUseAlpha = 0x00000000,
WICBitmapUsePremultipliedAlpha = 0x00000001,
WICBitmapIgnoreAlpha = 0x00000002,
WICBITMAPALPHACHANNELOPTIONS_FORCE_DWORD = CODEC_FORCE_DWORD
} WICBitmapAlphaChannelOption;
/*=========================================================================*\
WICBitmapTransformOptions
\*=========================================================================*/
typedef [public] enum WICBitmapTransformOptions
{
WICBitmapTransformRotate0 = 0x00000000,
WICBitmapTransformRotate90 = 0x00000001,
WICBitmapTransformRotate180 = 0x00000002,
WICBitmapTransformRotate270 = 0x00000003,
WICBitmapTransformFlipHorizontal = 0x00000008,
WICBitmapTransformFlipVertical = 0x00000010,
WICBITMAPTRANSFORMOPTIONS_FORCE_DWORD = CODEC_FORCE_DWORD
} WICBitmapTransformOptions;
/*=========================================================================*\
WICBitmapLockFlags
\*=========================================================================*/
typedef [public] enum WICBitmapLockFlags
{
WICBitmapLockRead = 0x00000001,
WICBitmapLockWrite = 0x00000002,
WICBITMAPLOCKFLAGS_FORCE_DWORD = CODEC_FORCE_DWORD
} WICBitmapLockFlags;
/*=========================================================================*\
WICBitmapDecoderCapabilities
\*=========================================================================*/
typedef [public] enum WICBitmapDecoderCapabilities
{
WICBitmapDecoderCapabilitySameEncoder = 0x00000001,
WICBitmapDecoderCapabilityCanDecodeAllImages = 0x00000002,
WICBitmapDecoderCapabilityCanDecodeSomeImages = 0x00000004,
WICBitmapDecoderCapabilityCanEnumerateMetadata = 0x00000008,
WICBitmapDecoderCapabilityCanDecodeThumbnail = 0x00000010,
WICBITMAPDECODERCAPABILITIES_FORCE_DWORD = CODEC_FORCE_DWORD
} WICBitmapDecoderCapabilities;
/*=========================================================================*\
WICProgressOperation
\*=========================================================================*/
typedef [public] enum WICProgressOperation
{
WICProgressOperationCopyPixels = 0x00000001,
WICProgressOperationWritePixels = 0x00000002,
WICProgressOperationAll = 0x0000FFFF,
WICPROGRESSOPERATION_FORCE_DWORD = CODEC_FORCE_DWORD
} WICProgressOperation;
/*=========================================================================*\
WICProgressNotification
\*=========================================================================*/
typedef [public] enum WICProgressNotification
{
WICProgressNotificationBegin = 0x00010000,
WICProgressNotificationEnd = 0x00020000,
WICProgressNotificationFrequent = 0x00040000,
WICProgressNotificationAll = 0xFFFF0000,
WICPROGRESSNOTIFICATION_FORCE_DWORD = CODEC_FORCE_DWORD
} WICProgressNotification;
/*=========================================================================*\
WICComponentSigning
\*=========================================================================*/
typedef [public] enum WICComponentSigning
{
WICComponentSigned = 0x00000001,
WICComponentUnsigned = 0x00000002,
WICComponentSafe = 0x00000004,
WICComponentDisabled = 0x80000000,
WICCOMPONENTSIGNING_FORCE_DWORD = CODEC_FORCE_DWORD
} WICComponentSigning;
/*=========================================================================*\
WICGifLogicalScreenDescriptorProperties
\*=========================================================================*/
typedef [public] enum WICGifLogicalScreenDescriptorProperties
{
// This part is for Logical Screen Descriptor
WICGifLogicalScreenSignature = 0x00000001,
WICGifLogicalScreenDescriptorWidth = 0x00000002,
WICGifLogicalScreenDescriptorHeight = 0x00000003,
WICGifLogicalScreenDescriptorGlobalColorTableFlag = 0x00000004,
WICGifLogicalScreenDescriptorColorResolution = 0x00000005,
WICGifLogicalScreenDescriptorSortFlag = 0x00000006,
WICGifLogicalScreenDescriptorGlobalColorTableSize = 0x00000007,
WICGifLogicalScreenDescriptorBackgroundColorIndex = 0x00000008,
WICGifLogicalScreenDescriptorPixelAspectRatio = 0x00000009,
WICGifLogicalScreenDescriptorProperties_FORCE_DWORD = CODEC_FORCE_DWORD
} WICGifLogicalScreenDescriptorProperties;
/*=========================================================================*\
WICGifImageDescriptorProperties
\*=========================================================================*/
typedef [public] enum WICGifImageDescriptorProperties
{
// This part is for Image Descriptor
WICGifImageDescriptorLeft = 0x00000001,
WICGifImageDescriptorTop = 0x00000002,
WICGifImageDescriptorWidth = 0x00000003,
WICGifImageDescriptorHeight = 0x00000004,
WICGifImageDescriptorLocalColorTableFlag = 0x00000005,
WICGifImageDescriptorInterlaceFlag = 0x00000006,
WICGifImageDescriptorSortFlag = 0x00000007,
WICGifImageDescriptorLocalColorTableSize = 0x00000008,
WICGifImageDescriptorProperties_FORCE_DWORD = CODEC_FORCE_DWORD
} WICGifImageDescriptorProperties;
/*=========================================================================*\
WICGifGraphicControlExtensionProperties
\*=========================================================================*/
typedef [public] enum WICGifGraphicControlExtensionProperties
{
// This part is for Graphic Control Extension
WICGifGraphicControlExtensionDisposal = 0x00000001,
WICGifGraphicControlExtensionUserInputFlag = 0x00000002,
WICGifGraphicControlExtensionTransparencyFlag = 0x00000003,
WICGifGraphicControlExtensionDelay = 0x00000004,
WICGifGraphicControlExtensionTransparentColorIndex = 0x00000005,
WICGifGraphicControlExtensionProperties_FORCE_DWORD = CODEC_FORCE_DWORD
} WICGifGraphicControlExtensionProperties;
/*=========================================================================*\
WICGifApplicationExtensionProperties
\*=========================================================================*/
typedef [public] enum WICGifApplicationExtensionProperties
{
// This part is for Application Extension
WICGifApplicationExtensionApplication = 0x00000001,
WICGifApplicationExtensionData = 0x00000002,
WICGifApplicationExtensionProperties_FORCE_DWORD = CODEC_FORCE_DWORD
} WICGifApplicationExtensionProperties;
/*=========================================================================*\
WICGifCommentExtensionProperties
\*=========================================================================*/
typedef [public] enum WICGifCommentExtensionProperties
{
WICGifCommentExtensionText = 0x00000001,
WICGifCommentExtensionProperties_FORCE_DWORD = CODEC_FORCE_DWORD
} WICGifCommentExtensionProperties;
/*=========================================================================*\
WICJpegCommentProperties
\*=========================================================================*/
typedef [public] enum WICJpegCommentProperties
{
WICJpegCommentText = 0x00000001,
WICJpegCommentProperties_FORCE_DWORD = CODEC_FORCE_DWORD
} WICJpegCommentProperties;
/*=========================================================================*\
WICJpegLuminanceProperties
\*=========================================================================*/
typedef [public] enum WICJpegLuminanceProperties
{
WICJpegLuminanceTable = 0x00000001,
WICJpegLuminanceProperties_FORCE_DWORD = CODEC_FORCE_DWORD
} WICJpegLuminanceProperties;
/*=========================================================================*\
WICJpegChrominanceProperties
\*=========================================================================*/
typedef [public] enum WICJpegChrominanceProperties
{
WICJpegChrominanceTable = 0x00000001,
WICJpegChrominanceProperties_FORCE_DWORD = CODEC_FORCE_DWORD
} WICJpegChrominanceProperties;
/*=========================================================================*\
WIC8BIMIptcProperties
\*=========================================================================*/
typedef [public] enum WIC8BIMIptcProperties
{
WIC8BIMIptcPString = 0x00000000,
WIC8BIMIptcEmbeddedIPTC = 0x00000001,
WIC8BIMIptcProperties_FORCE_DWORD = CODEC_FORCE_DWORD
} WIC8BIMIptcProperties;
/*=========================================================================*\
WIC8BIMResolutionInfoProperties
\*=========================================================================*/
typedef [public] enum WIC8BIMResolutionInfoProperties
{
WIC8BIMResolutionInfoPString = 0x00000001,
WIC8BIMResolutionInfoHResolution = 0x00000002,
WIC8BIMResolutionInfoHResolutionUnit = 0x00000003,
WIC8BIMResolutionInfoWidthUnit = 0x00000004,
WIC8BIMResolutionInfoVResolution = 0x00000005,
WIC8BIMResolutionInfoVResolutionUnit = 0x00000006,
WIC8BIMResolutionInfoHeightUnit = 0x00000007,
WIC8BIMResolutionInfoProperties_FORCE_DWORD = CODEC_FORCE_DWORD
} WIC8BIMResolutionInfoProperties;
/*=========================================================================*\
WIC8BIMIptcDigestProperties
\*=========================================================================*/
typedef [public] enum WIC8BIMIptcDigestProperties
{
WIC8BIMIptcDigestPString = 0x00000001,
WIC8BIMIptcDigestIptcDigest = 0x00000002,
WIC8BIMIptcDigestProperties_FORCE_DWORD = CODEC_FORCE_DWORD
} WIC8BIMIptcDigestProperties;
/*=========================================================================*\
WICPngGamaProperties
\*=========================================================================*/
typedef [public] enum WICPngGamaProperties
{
WICPngGamaGamma = 0x00000001,
WICPngGamaProperties_FORCE_DWORD = CODEC_FORCE_DWORD
} WICPngGamaProperties;
/*=========================================================================*\
WICPngBkgdProperties
\*=========================================================================*/
typedef [public] enum WICPngBkgdProperties
{
WICPngBkgdBackgroundColor = 0x00000001,
WICPngBkgdProperties_FORCE_DWORD = CODEC_FORCE_DWORD
} WICPngBkgdProperties;
/*=========================================================================*\
WICPngItxtProperties
\*=========================================================================*/
typedef [public] enum WICPngItxtProperties
{
WICPngItxtKeyword = 0x00000001,
WICPngItxtCompressionFlag = 0x00000002,
WICPngItxtLanguageTag = 0x00000003,
WICPngItxtTranslatedKeyword = 0x00000004,
WICPngItxtText = 0x00000005,
WICPngItxtProperties_FORCE_DWORD = CODEC_FORCE_DWORD
} WICPngItxtProperties;
/*=========================================================================*\
WICPngChrmProperties
\*=========================================================================*/
typedef [public] enum WICPngChrmProperties
{
WICPngChrmWhitePointX = 0x00000001,
WICPngChrmWhitePointY = 0x00000002,
WICPngChrmRedX = 0x00000003,
WICPngChrmRedY = 0x00000004,
WICPngChrmGreenX = 0x00000005,
WICPngChrmGreenY = 0x00000006,
WICPngChrmBlueX = 0x00000007,
WICPngChrmBlueY = 0x0000008,
WICPngChrmProperties_FORCE_DWORD = CODEC_FORCE_DWORD
} WICPngChrmProperties;
/*=========================================================================*\
WICPngHistProperties
\*=========================================================================*/
typedef [public] enum WICPngHistProperties
{
WICPngHistFrequencies = 0x00000001,
WICPngHistProperties_FORCE_DWORD = CODEC_FORCE_DWORD
} WICPngHistProperties;
/*=========================================================================*\
WICPngIccpProperties
\*=========================================================================*/
typedef [public] enum WICPngIccpProperties
{
WICPngIccpProfileName = 0x00000001,
WICPngIccpProfileData = 0x00000002,
WICPngIccpProperties_FORCE_DWORD = CODEC_FORCE_DWORD
} WICPngIccpProperties;
/*=========================================================================*\
WICPngSrgbProperties
\*=========================================================================*/
typedef [public] enum WICPngSrgbProperties
{
WICPngSrgbRenderingIntent = 0x00000001,
WICPngSrgbProperties_FORCE_DWORD = CODEC_FORCE_DWORD
} WICPngSrgbProperties;
/*=========================================================================*\
WICPngTimeProperties
\*=========================================================================*/
typedef [public] enum WICPngTimeProperties
{
WICPngTimeYear = 0x00000001,
WICPngTimeMonth = 0x00000002,
WICPngTimeDay = 0x00000003,
WICPngTimeHour = 0x00000004,
WICPngTimeMinute = 0x00000005,
WICPngTimeSecond = 0x00000006,
WICPngTimeProperties_FORCE_DWORD = CODEC_FORCE_DWORD
} WICPngTimeProperties;
/*=========================================================================*\
WICSectionAccessLevel
\*=========================================================================*/
typedef [public] enum WICSectionAccessLevel
{
WICSectionAccessLevelRead = 0x00000001,
WICSectionAccessLevelReadWrite = 0x00000003,
WICSectionAccessLevel_FORCE_DWORD = CODEC_FORCE_DWORD
} WICSectionAccessLevel;
/*=========================================================================*\
WICPixelFormatNumericRepresentation
\*=========================================================================*/
typedef [public] enum WICPixelFormatNumericRepresentation
{
WICPixelFormatNumericRepresentationUnspecified = 0x00000000,
WICPixelFormatNumericRepresentationIndexed = 0x00000001,
WICPixelFormatNumericRepresentationUnsignedInteger = 0x00000002,
WICPixelFormatNumericRepresentationSignedInteger = 0x00000003,
WICPixelFormatNumericRepresentationFixed = 0x00000004,
WICPixelFormatNumericRepresentationFloat = 0x00000005,
WICPixelFormatNumericRepresentation_FORCE_DWORD = CODEC_FORCE_DWORD
} WICPixelFormatNumericRepresentation;
/*=========================================================================*\
IWICPalette - Palette
\*=========================================================================*/
[
object,
uuid(00000040-a8f2-4877-ba0a-fd2b6645fb94)
]
interface IWICPalette : IUnknown
{
// Initialize the palette to one of the pre-defined palette types in
// the PaletteType enumeration. A transparent color can be included
// if desired. If the pre-defined palette has fewer than 256 entries,
// one entry is appended for the transparent color - otherwise index
// 255 is replaced with the transparent color.
HRESULT InitializePredefined(
[in] WICBitmapPaletteType ePaletteType,
[in] BOOL fAddTransparentColor
);
// Build a custom palette. If a transparent color is required it should be
// included in the array of input colors.
HRESULT InitializeCustom(
[in, size_is(cCount)] WICColor *pColors,
[in] UINT cCount
);
// Compute an optimal palette from a given surface. The number of colors to
// generate is controlled by cColors. If a transparent color is desired,
// one of the cColors entries will be a transparent color - i.e. the count
// will not be increased beyond cColors.
HRESULT InitializeFromBitmap(
[in] IWICBitmapSource *pISurface,
[in] UINT cCount,
[in] BOOL fAddTransparentColor
);
// Initialize the palette to be a copy of an existing palette.
HRESULT InitializeFromPalette(
[in] IWICPalette *pIPalette
);
HRESULT GetType(
[out] WICBitmapPaletteType *pePaletteType
);
HRESULT GetColorCount(
[out] UINT *pcCount
);
HRESULT GetColors(
[in] UINT cCount,
[out, size_is(cCount)] WICColor *pColors,
[out] UINT *pcActualColors
);
HRESULT IsBlackWhite(
[out] BOOL *pfIsBlackWhite
);
HRESULT IsGrayscale(
[out] BOOL *pfIsGrayscale
);
HRESULT HasAlpha(
[out] BOOL *pfHasAlpha
);
};
/*=========================================================================*\
IWICBitmapSource - Source bitmap/imaging functionality
\*=========================================================================*/
[
object,
uuid(00000120-a8f2-4877-ba0a-fd2b6645fb94)
]
interface IWICBitmapSource : IUnknown
{
HRESULT GetSize(
[out] UINT *puiWidth,
[out] UINT *puiHeight
);
HRESULT GetPixelFormat(
[out] WICPixelFormatGUID *pPixelFormat
);
HRESULT GetResolution(
[out] double *pDpiX,
[out] double *pDpiY
);
HRESULT CopyPalette(
[in] IWICPalette *pIPalette
);
HRESULT CopyPixels(
[in, unique] const WICRect *prc,
[in] UINT cbStride,
[in] UINT cbBufferSize,
[out, size_is(cbBufferSize)] BYTE *pbBuffer
);
};
/*=========================================================================*\
IWICFormatConverter
\*=========================================================================*/
[
object,
uuid(00000301-a8f2-4877-ba0a-fd2b6645fb94)
]
interface IWICFormatConverter : IWICBitmapSource
{
HRESULT Initialize(
[in] IWICBitmapSource *pISource,
[in] REFWICPixelFormatGUID dstFormat,
[in] WICBitmapDitherType dither,
[in, unique] IWICPalette *pIPalette,
[in] double alphaThresholdPercent,
[in] WICBitmapPaletteType paletteTranslate
);
HRESULT CanConvert(
[in] REFWICPixelFormatGUID srcPixelFormat,
[in] REFWICPixelFormatGUID dstPixelFormat,
[out] BOOL *pfCanConvert);
};
/*=========================================================================*\
IWICBitmapScaler
\*=========================================================================*/
[
object,
uuid(00000302-a8f2-4877-ba0a-fd2b6645fb94)
]
interface IWICBitmapScaler : IWICBitmapSource
{
HRESULT Initialize(
[in] IWICBitmapSource *pISource,
[in] UINT uiWidth,
[in] UINT uiHeight,
[in] WICBitmapInterpolationMode mode
);
};
/*=========================================================================*\
IWICBitmapClipper
\*=========================================================================*/
[
object,
uuid(E4FBCF03-223D-4e81-9333-D635556DD1B5)
]
interface IWICBitmapClipper : IWICBitmapSource
{
HRESULT Initialize(
[in] IWICBitmapSource *pISource,
[in] const WICRect *prc
);
};
/*=========================================================================*\
IWICBitmapFlipRotator
\*=========================================================================*/
[
object,
uuid(5009834F-2D6A-41ce-9E1B-17C5AFF7A782)
]
interface IWICBitmapFlipRotator : IWICBitmapSource
{
HRESULT Initialize(
[in] IWICBitmapSource *pISource,
[in] WICBitmapTransformOptions options
);
};
/*=========================================================================*\
IWICBitmapLock - WIC Lock object for bitmaps.
\*=========================================================================*/
[
object,
uuid(00000123-a8f2-4877-ba0a-fd2b6645fb94)
]
interface IWICBitmapLock : IUnknown
{
HRESULT GetSize(
[out] UINT *puiWidth,
[out] UINT *puiHeight
);
HRESULT GetStride(
[out] UINT *pcbStride
);
HRESULT GetDataPointer(
[out] UINT *pcbBufferSize,
[out, size_is( , *pcbBufferSize)] WICInProcPointer *ppbData
);
HRESULT GetPixelFormat(
[out] WICPixelFormatGUID *pPixelFormat
);
};
/*=========================================================================*\
IWICBitmap - WIC Bitmap cache interface
\*=========================================================================*/
[
object,
uuid(00000121-a8f2-4877-ba0a-fd2b6645fb94)
]
interface IWICBitmap : IWICBitmapSource
{
HRESULT Lock(
[in, unique] const WICRect *prcLock,
[in] DWORD flags,
[out] IWICBitmapLock **ppILock
);
HRESULT SetPalette(
[in] IWICPalette *pIPalette
);
HRESULT SetResolution(
[in] double dpiX,
[in] double dpiY
);
};
/*=========================================================================*\
IWICColorContext - WIC color context
\*=========================================================================*/
[
object,
uuid(3C613A02-34B2-44ea-9A7C-45AEA9C6FD6D)
]
interface IWICColorContext : IUnknown
{
HRESULT InitializeFromFilename(
[in] LPCWSTR wzFilename
);
HRESULT InitializeFromMemory(
[in, size_is(cbBufferSize)] const BYTE *pbBuffer,
[in] UINT cbBufferSize
);
HRESULT InitializeFromExifColorSpace(
[in] UINT value
);
HRESULT GetType(
[out] WICColorContextType *pType
);
HRESULT GetProfileBytes(
[in] UINT cbBuffer,
[in, out, unique, size_is(cbBuffer)] BYTE *pbBuffer,
[out] UINT *pcbActual
);
HRESULT GetExifColorSpace(
[out] UINT *pValue
);
};
/*=========================================================================*\
IWICColorTransform - WIC color transform
\*=========================================================================*/
[
object,
uuid(B66F034F-D0E2-40ab-B436-6DE39E321A94)
]
interface IWICColorTransform : IWICBitmapSource
{
HRESULT Initialize(
[in] IWICBitmapSource *pIBitmapSource,
[in] IWICColorContext *pIContextSource,
[in] IWICColorContext *pIContextDest,
[in] REFWICPixelFormatGUID pixelFmtDest
);
};
/*=========================================================================*\
IWICFastMetadataEncoder
\*=========================================================================*/
[
object,
uuid(B84E2C09-78C9-4AC4-8BD3-524AE1663A2F)
]
interface IWICFastMetadataEncoder : IUnknown
{
HRESULT Commit(
);
HRESULT GetMetadataQueryWriter(
[out] IWICMetadataQueryWriter **ppIMetadataQueryWriter
);
};
/*=========================================================================*\
IWICStream - WIC Bitmap Stream
\*=========================================================================*/
[
object,
uuid(135FF860-22B7-4ddf-B0F6-218F4F299A43)
]
interface IWICStream : IStream
{
HRESULT InitializeFromIStream(
[in] IStream *pIStream
);
HRESULT InitializeFromFilename(
[in] LPCWSTR wzFileName,
[in] DWORD dwDesiredAccess
);
HRESULT InitializeFromMemory(
[in, size_is(cbBufferSize)] WICInProcPointer pbBuffer,
[in] DWORD cbBufferSize
);
HRESULT InitializeFromIStreamRegion(
[in] IStream *pIStream,
[in] ULARGE_INTEGER ulOffset,
[in] ULARGE_INTEGER ulMaxSize
);
};
/*=========================================================================*\
IWICEnumMetadataItem
\*=========================================================================*/
[
object,
uuid(DC2BB46D-3F07-481E-8625-220C4AEDBB33)
]
interface IWICEnumMetadataItem : IUnknown
{
HRESULT Next(
[in] ULONG celt,
[in, out, unique, size_is(celt)] PROPVARIANT *rgeltSchema,
[in, out, size_is(celt)] PROPVARIANT *rgeltId,
[in, out, optional, size_is(celt)] PROPVARIANT *rgeltValue,
[out, optional] ULONG *pceltFetched
);
HRESULT Skip(
[in] ULONG celt
) ;
HRESULT Reset();
HRESULT Clone(
[out] IWICEnumMetadataItem **ppIEnumMetadataItem
);
}
/*=========================================================================*\
IWICMetadataQueryReader - Metadata Query Reader
\*=========================================================================*/
[
object,
uuid(30989668-E1C9-4597-B395-458EEDB808DF)
]
interface IWICMetadataQueryReader : IUnknown
{
HRESULT GetContainerFormat(
[out] GUID *pguidContainerFormat
);
HRESULT GetLocation(
[in] UINT cchMaxLength,
[in, out, unique, size_is(cchMaxLength)] WCHAR *wzNamespace,
[out] UINT *pcchActualLength
);
HRESULT GetMetadataByName(
[in] LPCWSTR wzName,
[in, out, unique] PROPVARIANT *pvarValue
);
HRESULT GetEnumerator(
[out] IEnumString **ppIEnumString
);
}
/*=========================================================================*\
IWICMetadataQueryWriter - Metadata Query Writer
\*=========================================================================*/
[
object,
uuid(A721791A-0DEF-4d06-BD91-2118BF1DB10B)
]
interface IWICMetadataQueryWriter : IWICMetadataQueryReader
{
HRESULT SetMetadataByName(
[in] LPCWSTR wzName,
[in] const PROPVARIANT *pvarValue
);
HRESULT RemoveMetadataByName(
[in] LPCWSTR wzName
);
}
/*=========================================================================*\
IWICBitmapEncoder - Bitmap Encoder
\*=========================================================================*/
[
object,
uuid(00000103-a8f2-4877-ba0a-fd2b6645fb94)
]
interface IWICBitmapEncoder : IUnknown
{
HRESULT Initialize(
[in] IStream *pIStream,
[in] WICBitmapEncoderCacheOption cacheOption
);
HRESULT GetContainerFormat(
[out] GUID *pguidContainerFormat
);
HRESULT GetEncoderInfo(
[out] IWICBitmapEncoderInfo **ppIEncoderInfo
);
HRESULT SetColorContexts(
[in] UINT cCount,
[in, size_is(cCount)] IWICColorContext **ppIColorContext
);
HRESULT SetPalette(
[in] IWICPalette *pIPalette
);
HRESULT SetThumbnail(
[in] IWICBitmapSource *pIThumbnail
);
HRESULT SetPreview(
[in] IWICBitmapSource *pIPreview
);
HRESULT CreateNewFrame(
[out] IWICBitmapFrameEncode **ppIFrameEncode,
[in, out, unique] IPropertyBag2 **ppIEncoderOptions
);
HRESULT Commit(
);
HRESULT GetMetadataQueryWriter(
[out] IWICMetadataQueryWriter **ppIMetadataQueryWriter
);
};
/*=========================================================================*\
IWICBitmapFrameEncode - Bitmap Frame Encoder
\*=========================================================================*/
[
object,
uuid(00000105-a8f2-4877-ba0a-fd2b6645fb94)
]
interface IWICBitmapFrameEncode : IUnknown
{
HRESULT Initialize(
[in, unique] IPropertyBag2 *pIEncoderOptions
);
HRESULT SetSize(
[in] UINT uiWidth,
[in] UINT uiHeight
);
HRESULT SetResolution(
[in] double dpiX,
[in] double dpiY
);
HRESULT SetPixelFormat(
[in, out] WICPixelFormatGUID *pPixelFormat
);
HRESULT SetColorContexts(
[in] UINT cCount,
[in, size_is(cCount)] IWICColorContext **ppIColorContext
);
HRESULT SetPalette(
[in] IWICPalette *pIPalette
);
HRESULT SetThumbnail(
[in] IWICBitmapSource *pIThumbnail
);
HRESULT WritePixels(
[in] UINT lineCount,
[in] UINT cbStride,
[in] UINT cbBufferSize,
[in, size_is(cbBufferSize)] BYTE *pbPixels
);
HRESULT WriteSource(
[in] IWICBitmapSource *pIBitmapSource,
[in, unique] WICRect *prc
);
HRESULT Commit(
);
HRESULT GetMetadataQueryWriter(
[out] IWICMetadataQueryWriter **ppIMetadataQueryWriter
);
};
/*=========================================================================*\
IWICBitmapDecoder - Bitmap Decoder
\*=========================================================================*/
[
object,
uuid(9EDDE9E7-8DEE-47ea-99DF-E6FAF2ED44BF)
]
interface IWICBitmapDecoder : IUnknown
{
HRESULT QueryCapability(
[in] IStream *pIStream,
[out] DWORD *pdwCapability
);
HRESULT Initialize(
[in] IStream *pIStream,
[in] WICDecodeOptions cacheOptions
);
HRESULT GetContainerFormat(
[out] GUID *pguidContainerFormat
);
HRESULT GetDecoderInfo(
[out] IWICBitmapDecoderInfo **ppIDecoderInfo
);
HRESULT CopyPalette(
[in] IWICPalette *pIPalette
);
HRESULT GetMetadataQueryReader(
[out] IWICMetadataQueryReader **ppIMetadataQueryReader
);
HRESULT GetPreview(
[out] IWICBitmapSource **ppIBitmapSource
);
HRESULT GetColorContexts(
[in] UINT cCount,
[in, out, unique, size_is(cCount)] IWICColorContext **ppIColorContexts,
[out] UINT *pcActualCount);
HRESULT GetThumbnail(
[out] IWICBitmapSource **ppIThumbnail
);
HRESULT GetFrameCount(
[out] UINT *pCount
);
HRESULT GetFrame(
[in] UINT index,
[out] IWICBitmapFrameDecode **ppIBitmapFrame
);
};
/*=========================================================================*\
IWICBitmapSourceTransform
\*=========================================================================*/
[
object,
uuid(3B16811B-6A43-4ec9-B713-3D5A0C13B940)
]
interface IWICBitmapSourceTransform : IUnknown
{
HRESULT CopyPixels(
[in, unique] const WICRect *prc,
[in] UINT uiWidth,
[in] UINT uiHeight,
[in, unique] WICPixelFormatGUID *pguidDstFormat,
[in] WICBitmapTransformOptions dstTransform,
[in] UINT nStride,
[in] UINT cbBufferSize,
[out, size_is(cbBufferSize)] BYTE *pbBuffer
);
HRESULT GetClosestSize(
[in, out] UINT *puiWidth,
[in, out] UINT *puiHeight
);
HRESULT GetClosestPixelFormat(
[in, out] WICPixelFormatGUID *pguidDstFormat
);
HRESULT DoesSupportTransform(
[in] WICBitmapTransformOptions dstTransform,
[out] BOOL *pfIsSupported
);
};
/*=========================================================================*\
IWICBitmapFrameDecode - Bitmap Decoder
\*=========================================================================*/
[
object,
uuid(3B16811B-6A43-4ec9-A813-3D930C13B940)
]
interface IWICBitmapFrameDecode : IWICBitmapSource
{
HRESULT GetMetadataQueryReader(
[out] IWICMetadataQueryReader **ppIMetadataQueryReader
);
HRESULT GetColorContexts(
[in] UINT cCount,
[in, out, unique, size_is(cCount)] IWICColorContext **ppIColorContexts,
[out] UINT *pcActualCount);
HRESULT GetThumbnail(
[out] IWICBitmapSource **ppIThumbnail
);
};
/*=========================================================================*\
IWICProgressiveLevelControl - Progressive Decoding
\*=========================================================================*/
[
object,
uuid(DAAC296F-7AA5-4dbf-8D15-225C5976F891)
]
interface IWICProgressiveLevelControl : IUnknown
{
HRESULT GetLevelCount(
[out, retval] UINT * pcLevels
);
HRESULT GetCurrentLevel(
[out, retval] UINT * pnLevel
);
HRESULT SetCurrentLevel(
[in] UINT nLevel
);
}
/*=========================================================================*\
IWICProgressCallback - Cross apartment callback interface
\*=========================================================================*/
[
object,
uuid(4776F9CD-9517-45FA-BF24-E89C5EC5C60C)
]
interface IWICProgressCallback : IUnknown
{
HRESULT Notify(
[in] ULONG uFrameNum,
[in] WICProgressOperation operation,
[in] double dblProgress
);
}
/*=========================================================================*\
IWICBitmapCodecProgressNotification - Register Progress Notifications
\*=========================================================================*/
[
object,
uuid(64C1024E-C3CF-4462-8078-88C2B11C46D9)
]
interface IWICBitmapCodecProgressNotification : IUnknown
{
typedef [unique] HRESULT __stdcall (*PFNProgressNotification)(
LPVOID pvData,
ULONG uFrameNum,
WICProgressOperation operation,
double dblProgress
);
[local]
HRESULT RegisterProgressNotification(
[in, unique, annotation("__in_opt")] PFNProgressNotification pfnProgressNotification,
[in, unique, annotation("__in_opt")] LPVOID pvData,
[in] DWORD dwProgressFlags /* WICProgressOperation | WICProgressNotification */
);
[call_as(RegisterProgressNotification)]
HRESULT Remote_RegisterProgressNotification(
[in, unique] IWICProgressCallback *pICallback,
[in] DWORD dwProgressFlags
);
};
/*=========================================================================*\
IWICComponentInfo
\*=========================================================================*/
[
object,
uuid(23BC3F0A-698B-4357-886B-F24D50671334)
]
interface IWICComponentInfo : IUnknown
{
HRESULT GetComponentType(
[out] WICComponentType *pType
);
HRESULT GetCLSID(
[out] CLSID *pclsid
);
HRESULT GetSigningStatus(
[out] DWORD * pStatus // WICComponentSigning flags
);
HRESULT GetAuthor(
[in] UINT cchAuthor,
[in, out, unique, size_is(cchAuthor)] WCHAR *wzAuthor,
[out] UINT *pcchActual
);
HRESULT GetVendorGUID(
[out] GUID *pguidVendor
);
HRESULT GetVersion(
[in] UINT cchVersion,
[in, out, unique, size_is(cchVersion)] WCHAR *wzVersion,
[out] UINT *pcchActual
);
HRESULT GetSpecVersion(
[in] UINT cchSpecVersion,
[in, out, unique, size_is(cchSpecVersion)] WCHAR *wzSpecVersion,
[out] UINT *pcchActual
);
HRESULT GetFriendlyName(
[in] UINT cchFriendlyName,
[in, out, unique, size_is(cchFriendlyName)] WCHAR *wzFriendlyName,
[out] UINT *pcchActual
);
};
/*=========================================================================*\
IWICFormatConverterInfo
\*=========================================================================*/
[
object,
uuid(9F34FB65-13F4-4f15-BC57-3726B5E53D9F)
]
interface IWICFormatConverterInfo : IWICComponentInfo
{
HRESULT GetPixelFormats(
[in] UINT cFormats,
[in, out, unique, size_is(cFormats)] WICPixelFormatGUID * pPixelFormatGUIDs,
[out] UINT *pcActual);
HRESULT CreateInstance(
[out] IWICFormatConverter **ppIConverter);
}
/*=========================================================================*\
IWICBitmapCodecInfo
\*=========================================================================*/
[
object,
uuid(E87A44C4-B76E-4c47-8B09-298EB12A2714)
]
interface IWICBitmapCodecInfo : IWICComponentInfo
{
HRESULT GetContainerFormat(
[out] GUID *pguidContainerFormat
);
HRESULT GetPixelFormats(
[in] UINT cFormats,
[in, out, unique, size_is(cFormats)] GUID *pguidPixelFormats,
[out] UINT *pcActual);
HRESULT GetColorManagementVersion(
[in] UINT cchColorManagementVersion,
[in, out, unique, size_is(cchColorManagementVersion)] WCHAR *wzColorManagementVersion,
[out] UINT *pcchActual
);
HRESULT GetDeviceManufacturer(
[in] UINT cchDeviceManufacturer,
[in, out, unique, size_is(cchDeviceManufacturer)] WCHAR *wzDeviceManufacturer,
[out] UINT *pcchActual
);
HRESULT GetDeviceModels(
[in] UINT cchDeviceModels,
[in, out, unique, size_is(cchDeviceModels)] WCHAR *wzDeviceModels,
[out] UINT *pcchActual
);
HRESULT GetMimeTypes(
[in] UINT cchMimeTypes,
[in, out, unique, size_is(cchMimeTypes)] WCHAR *wzMimeTypes,
[out] UINT *pcchActual
);
HRESULT GetFileExtensions(
[in] UINT cchFileExtensions,
[in, out, unique, size_is(cchFileExtensions)] WCHAR *wzFileExtensions,
[out] UINT *pcchActual
);
HRESULT DoesSupportAnimation(
[out] BOOL *pfSupportAnimation
);
HRESULT DoesSupportChromakey(
[out] BOOL *pfSupportChromakey
);
HRESULT DoesSupportLossless(
[out] BOOL *pfSupportLossless
);
HRESULT DoesSupportMultiframe(
[out] BOOL *pfSupportMultiframe
);
HRESULT MatchesMimeType(
[in] LPCWSTR wzMimeType,
[out] BOOL *pfMatches
);
};
/*=========================================================================*\
IWICBitmapEncoderInfo
\*=========================================================================*/
[
object,
uuid(94C9B4EE-A09F-4f92-8A1E-4A9BCE7E76FB)
]
interface IWICBitmapEncoderInfo : IWICBitmapCodecInfo
{
HRESULT CreateInstance(
[out] IWICBitmapEncoder **ppIBitmapEncoder
);
};
/*=========================================================================*\
IWICBitmapDecoderInfo
\*=========================================================================*/
[
object,
uuid(D8CD007F-D08F-4191-9BFC-236EA7F0E4B5)
]
interface IWICBitmapDecoderInfo : IWICBitmapCodecInfo
{
[local]
HRESULT GetPatterns(
[in] UINT cbSizePatterns,
[out, size_is(*pcPatterns), unique, annotation("__out_bcount_part_opt(cbSizePatterns, *pcbPatternsActual)")] WICBitmapPattern *pPatterns,
[out, unique, annotation("__inout_opt")] UINT *pcPatterns,
[out, annotation("__inout_opt")] UINT *pcbPatternsActual
);
[call_as(GetPatterns)]
HRESULT Remote_GetPatterns(
[out, size_is(, *pcPatterns)] WICBitmapPattern **ppPatterns,
[out] UINT *pcPatterns
);
HRESULT MatchesPattern(
[in] IStream *pIStream,
[out] BOOL *pfMatches
);
HRESULT CreateInstance(
[out] IWICBitmapDecoder **ppIBitmapDecoder
);
};
/*=========================================================================*\
IWICPixelFormatInfo
\*=========================================================================*/
[
object,
uuid(E8EDA601-3D48-431a-AB44-69059BE88BBE)
]
interface IWICPixelFormatInfo : IWICComponentInfo
{
HRESULT GetFormatGUID(
[out] GUID* pFormat
);
HRESULT GetColorContext(
[out] IWICColorContext **ppIColorContext
);
HRESULT GetBitsPerPixel(
[out] UINT *puiBitsPerPixel
);
HRESULT GetChannelCount(
[out] UINT *puiChannelCount
);
HRESULT GetChannelMask(
[in] UINT uiChannelIndex,
[in] UINT cbMaskBuffer,
[in, out, unique, size_is(cbMaskBuffer)] BYTE *pbMaskBuffer,
[out] UINT *pcbActual
);
}
/*=========================================================================*\
IWICPixelFormatInfo2
\*=========================================================================*/
[
object,
uuid(A9DB33A2-AF5F-43C7-B679-74F5984B5AA4)
]
interface IWICPixelFormatInfo2 : IWICPixelFormatInfo
{
HRESULT SupportsTransparency(
[out] BOOL *pfSupportsTransparency
);
HRESULT GetNumericRepresentation(
[out] WICPixelFormatNumericRepresentation *pNumericRepresentation
);
}
/*=========================================================================*\
IWICImagingFactory
\*=========================================================================*/
[
object,
uuid(ec5ec8a9-c395-4314-9c77-54d7a935ff70)
]
interface IWICImagingFactory : IUnknown
{
HRESULT CreateDecoderFromFilename(
[in] LPCWSTR wzFilename,
[in, unique] const GUID *pguidVendor,
[in] DWORD dwDesiredAccess,
[in] WICDecodeOptions metadataOptions,
[out, retval] IWICBitmapDecoder **ppIDecoder
);
HRESULT CreateDecoderFromStream(
[in] IStream *pIStream,
[in, unique] const GUID *pguidVendor,
[in] WICDecodeOptions metadataOptions,
[out, retval] IWICBitmapDecoder **ppIDecoder
);
HRESULT CreateDecoderFromFileHandle(
[in] ULONG_PTR hFile,
[in, unique] const GUID *pguidVendor,
[in] WICDecodeOptions metadataOptions,
[out, retval] IWICBitmapDecoder **ppIDecoder
);
HRESULT CreateComponentInfo(
[in] REFCLSID clsidComponent,
[out] IWICComponentInfo **ppIInfo
);
HRESULT CreateDecoder(
[in] REFGUID guidContainerFormat,
[in, unique] const GUID *pguidVendor,
[out, retval] IWICBitmapDecoder **ppIDecoder
);
HRESULT CreateEncoder(
[in] REFGUID guidContainerFormat,
[in, unique] const GUID *pguidVendor,
[out, retval] IWICBitmapEncoder **ppIEncoder
);
HRESULT CreatePalette(
[out] IWICPalette **ppIPalette
);
HRESULT CreateFormatConverter(
[out] IWICFormatConverter **ppIFormatConverter
);
HRESULT CreateBitmapScaler(
[out] IWICBitmapScaler **ppIBitmapScaler
);
HRESULT CreateBitmapClipper(
[out] IWICBitmapClipper **ppIBitmapClipper
);
HRESULT CreateBitmapFlipRotator(
[out] IWICBitmapFlipRotator **ppIBitmapFlipRotator
);
HRESULT CreateStream(
[out] IWICStream **ppIWICStream
);
HRESULT CreateColorContext(
[out] IWICColorContext **ppIWICColorContext
);
HRESULT CreateColorTransformer(
[out] IWICColorTransform **ppIWICColorTransform
);
/* Bitmap creation */
HRESULT CreateBitmap(
[in] UINT uiWidth,
[in] UINT uiHeight,
[in] REFWICPixelFormatGUID pixelFormat,
[in] WICBitmapCreateCacheOption option,
[out] IWICBitmap **ppIBitmap
);
HRESULT CreateBitmapFromSource(
[in] IWICBitmapSource *pIBitmapSource,
[in] WICBitmapCreateCacheOption option,
[out] IWICBitmap **ppIBitmap
);
HRESULT CreateBitmapFromSourceRect(
[in] IWICBitmapSource *pIBitmapSource,
[in] UINT x,
[in] UINT y,
[in] UINT width,
[in] UINT height,
[out] IWICBitmap **ppIBitmap
);
HRESULT CreateBitmapFromMemory(
[in] UINT uiWidth,
[in] UINT uiHeight,
[in] REFWICPixelFormatGUID pixelFormat,
[in] UINT cbStride,
[in] UINT cbBufferSize,
[in, size_is(cbBufferSize)] BYTE *pbBuffer,
[out] IWICBitmap **ppIBitmap
);
HRESULT CreateBitmapFromHBITMAP(
[in] HBITMAP hBitmap,
[in, unique] HPALETTE hPalette,
[in] WICBitmapAlphaChannelOption options,
[out] IWICBitmap **ppIBitmap
);
HRESULT CreateBitmapFromHICON(
[in] HICON hIcon,
[out] IWICBitmap **ppIBitmap
);
HRESULT CreateComponentEnumerator(
[in] DWORD componentTypes, /* WICComponentType */
[in] DWORD options, /* WICComponentEnumerateOptions */
[out] IEnumUnknown **ppIEnumUnknown
);
HRESULT CreateFastMetadataEncoderFromDecoder(
[in] IWICBitmapDecoder *pIDecoder,
[out] IWICFastMetadataEncoder **ppIFastEncoder
);
HRESULT CreateFastMetadataEncoderFromFrameDecode(
[in] IWICBitmapFrameDecode *pIFrameDecoder,
[out] IWICFastMetadataEncoder **ppIFastEncoder
);
HRESULT CreateQueryWriter(
[in] REFGUID guidMetadataFormat,
[in, unique] const GUID *pguidVendor,
[out] IWICMetadataQueryWriter **ppIQueryWriter
);
HRESULT CreateQueryWriterFromReader(
[in] IWICMetadataQueryReader *pIQueryReader,
[in, unique] const GUID *pguidVendor,
[out] IWICMetadataQueryWriter **ppIQueryWriter
);
};
/*=========================================================================*\
APIs
\*=========================================================================*/
cpp_quote("HRESULT WINAPI WICConvertBitmapSource(" )
cpp_quote(" __in REFWICPixelFormatGUID dstFormat, // Destination pixel format" )
cpp_quote(" __in_ecount(1) IWICBitmapSource *pISrc, // Source bitmap" )
cpp_quote(" __deref_out_ecount(1) IWICBitmapSource **ppIDst // Destination bitmap, a copy or addrefed source" )
cpp_quote(" );" )
cpp_quote("HRESULT WINAPI WICCreateBitmapFromSection(" )
cpp_quote(" __in UINT width," )
cpp_quote(" __in UINT height," )
cpp_quote(" __in REFWICPixelFormatGUID pixelFormat," )
cpp_quote(" __in HANDLE hSection," )
cpp_quote(" __in UINT stride," )
cpp_quote(" __in UINT offset," )
cpp_quote(" __deref_out_ecount(1) IWICBitmap **ppIBitmap" )
cpp_quote(" );" )
cpp_quote("HRESULT WINAPI WICCreateBitmapFromSectionEx(" )
cpp_quote(" __in UINT width," )
cpp_quote(" __in UINT height," )
cpp_quote(" __in REFWICPixelFormatGUID pixelFormat," )
cpp_quote(" __in HANDLE hSection," )
cpp_quote(" __in UINT stride," )
cpp_quote(" __in UINT offset," )
cpp_quote(" __in WICSectionAccessLevel desiredAccessLevel," )
cpp_quote(" __deref_out_ecount(1) IWICBitmap **ppIBitmap" )
cpp_quote(" );" )
cpp_quote("HRESULT WINAPI WICMapGuidToShortName(")
cpp_quote(" __in_ecount(1) REFGUID guid,")
cpp_quote(" __in UINT cchName,")
cpp_quote(" __inout_ecount_opt(cchName) WCHAR *wzName,")
cpp_quote(" __out_ecount(1) UINT *pcchActual")
cpp_quote(" );")
cpp_quote("HRESULT WINAPI WICMapShortNameToGuid(")
cpp_quote(" __in_ecount(1) const WCHAR *wzName,")
cpp_quote(" __out_ecount(1) GUID *pguid")
cpp_quote(" );")
cpp_quote("HRESULT WINAPI WICMapSchemaToName(")
cpp_quote(" __in_ecount(1) REFGUID guidMetadataFormat,")
cpp_quote(" __in_ecount(1) LPWSTR pwzSchema,")
cpp_quote(" __in UINT cchName,")
cpp_quote(" __inout_ecount_opt(cchName) WCHAR *wzName,")
cpp_quote(" __out_ecount(1) UINT *pcchActual")
cpp_quote(" );")
/*=========================================================================*\
Errors
\*=========================================================================*/
cpp_quote("#define FACILITY_WINCODEC_ERR 0x898")
cpp_quote("#define WINCODEC_ERR_BASE 0x2000")
cpp_quote("#define MAKE_WINCODECHR(sev, code) MAKE_HRESULT(sev, FACILITY_WINCODEC_ERR, (WINCODEC_ERR_BASE + code))")
cpp_quote("#define MAKE_WINCODECHR_ERR(code) MAKE_WINCODECHR(1, code)")
cpp_quote("#define WINCODEC_ERR_GENERIC_ERROR E_FAIL")
cpp_quote("#define WINCODEC_ERR_INVALIDPARAMETER E_INVALIDARG")
cpp_quote("#define WINCODEC_ERR_OUTOFMEMORY E_OUTOFMEMORY")
cpp_quote("#define WINCODEC_ERR_NOTIMPLEMENTED E_NOTIMPL")
cpp_quote("#define WINCODEC_ERR_ABORTED E_ABORT")
cpp_quote("#define WINCODEC_ERR_ACCESSDENIED E_ACCESSDENIED")
cpp_quote("#define WINCODEC_ERR_VALUEOVERFLOW INTSAFE_E_ARITHMETIC_OVERFLOW")
cpp_quote("#define WINCODEC_ERR_WRONGSTATE MAKE_WINCODECHR_ERR(0xf04)")
cpp_quote("#define WINCODEC_ERR_VALUEOUTOFRANGE MAKE_WINCODECHR_ERR(0xf05)")
cpp_quote("#define WINCODEC_ERR_UNKNOWNIMAGEFORMAT MAKE_WINCODECHR_ERR(0xf07)")
cpp_quote("#define WINCODEC_ERR_UNSUPPORTEDVERSION MAKE_WINCODECHR_ERR(0xf0B)")
cpp_quote("#define WINCODEC_ERR_NOTINITIALIZED MAKE_WINCODECHR_ERR(0xf0C)")
cpp_quote("#define WINCODEC_ERR_ALREADYLOCKED MAKE_WINCODECHR_ERR(0xf0D)")
cpp_quote("#define WINCODEC_ERR_PROPERTYNOTFOUND MAKE_WINCODECHR_ERR(0xf40)")
cpp_quote("#define WINCODEC_ERR_PROPERTYNOTSUPPORTED MAKE_WINCODECHR_ERR(0xf41)")
cpp_quote("#define WINCODEC_ERR_PROPERTYSIZE MAKE_WINCODECHR_ERR(0xf42)")
cpp_quote("#define WINCODEC_ERR_CODECPRESENT MAKE_WINCODECHR_ERR(0xf43)")
cpp_quote("#define WINCODEC_ERR_CODECNOTHUMBNAIL MAKE_WINCODECHR_ERR(0xf44)")
cpp_quote("#define WINCODEC_ERR_PALETTEUNAVAILABLE MAKE_WINCODECHR_ERR(0xf45)")
cpp_quote("#define WINCODEC_ERR_CODECTOOMANYSCANLINES MAKE_WINCODECHR_ERR(0xf46)")
cpp_quote("#define WINCODEC_ERR_INTERNALERROR MAKE_WINCODECHR_ERR(0xf48)")
cpp_quote("#define WINCODEC_ERR_SOURCERECTDOESNOTMATCHDIMENSIONS MAKE_WINCODECHR_ERR(0xf49)")
cpp_quote("#define WINCODEC_ERR_COMPONENTNOTFOUND MAKE_WINCODECHR_ERR(0xf50)")
cpp_quote("#define WINCODEC_ERR_IMAGESIZEOUTOFRANGE MAKE_WINCODECHR_ERR(0xf51)")
cpp_quote("#define WINCODEC_ERR_TOOMUCHMETADATA MAKE_WINCODECHR_ERR(0xf52)")
cpp_quote("#define WINCODEC_ERR_BADIMAGE MAKE_WINCODECHR_ERR(0xf60)")
cpp_quote("#define WINCODEC_ERR_BADHEADER MAKE_WINCODECHR_ERR(0xf61)")
cpp_quote("#define WINCODEC_ERR_FRAMEMISSING MAKE_WINCODECHR_ERR(0xf62)")
cpp_quote("#define WINCODEC_ERR_BADMETADATAHEADER MAKE_WINCODECHR_ERR(0xf63)")
cpp_quote("#define WINCODEC_ERR_BADSTREAMDATA MAKE_WINCODECHR_ERR(0xf70)")
cpp_quote("#define WINCODEC_ERR_STREAMWRITE MAKE_WINCODECHR_ERR(0xf71)")
cpp_quote("#define WINCODEC_ERR_STREAMREAD MAKE_WINCODECHR_ERR(0xf72)")
cpp_quote("#define WINCODEC_ERR_STREAMNOTAVAILABLE MAKE_WINCODECHR_ERR(0xf73)")
cpp_quote("#define WINCODEC_ERR_UNSUPPORTEDPIXELFORMAT MAKE_WINCODECHR_ERR(0xf80)")
cpp_quote("#define WINCODEC_ERR_UNSUPPORTEDOPERATION MAKE_WINCODECHR_ERR(0xf81)")
cpp_quote("#define WINCODEC_ERR_INVALIDREGISTRATION MAKE_WINCODECHR_ERR(0xf8A)")
cpp_quote("#define WINCODEC_ERR_COMPONENTINITIALIZEFAILURE MAKE_WINCODECHR_ERR(0xf8B)")
cpp_quote("#define WINCODEC_ERR_INSUFFICIENTBUFFER MAKE_WINCODECHR_ERR(0xf8C)")
cpp_quote("#define WINCODEC_ERR_DUPLICATEMETADATAPRESENT MAKE_WINCODECHR_ERR(0xf8D)")
cpp_quote("#define WINCODEC_ERR_PROPERTYUNEXPECTEDTYPE MAKE_WINCODECHR_ERR(0xf8E)")
cpp_quote("#define WINCODEC_ERR_UNEXPECTEDSIZE MAKE_WINCODECHR_ERR(0xf8F)")
cpp_quote("#define WINCODEC_ERR_INVALIDQUERYREQUEST MAKE_WINCODECHR_ERR(0xf90)")
cpp_quote("#define WINCODEC_ERR_UNEXPECTEDMETADATATYPE MAKE_WINCODECHR_ERR(0xf91)")
cpp_quote("#define WINCODEC_ERR_REQUESTONLYVALIDATMETADATAROOT MAKE_WINCODECHR_ERR(0xf92)")
cpp_quote("#define WINCODEC_ERR_INVALIDQUERYCHARACTER MAKE_WINCODECHR_ERR(0xf93)")
cpp_quote("#define WINCODEC_ERR_WIN32ERROR MAKE_WINCODECHR_ERR(0xf94)")
cpp_quote("#define WINCODEC_ERR_INVALIDPROGRESSIVELEVEL MAKE_WINCODECHR_ERR(0xf95)")
/*=========================================================================*\
Parameter Structures
\*=========================================================================*/
/*=========================================================================*\
WICTiffCompressionOption
\*=========================================================================*/
typedef [public] enum WICTiffCompressionOption
{
WICTiffCompressionDontCare = 0x00000000,
WICTiffCompressionNone = 0x00000001,
WICTiffCompressionCCITT3 = 0x00000002,
WICTiffCompressionCCITT4 = 0x00000003,
WICTiffCompressionLZW = 0x00000004,
WICTiffCompressionRLE = 0x00000005,
WICTiffCompressionZIP = 0x00000006,
WICTiffCompressionLZWHDifferencing = 0x00000007,
WICTIFFCOMPRESSIONOPTION_FORCE_DWORD = CODEC_FORCE_DWORD
} WICTiffCompressionOption;
/*=========================================================================*\
WICJpegYCrCbSubsamplingOption
\*=========================================================================*/
typedef [public] enum WICJpegYCrCbSubsamplingOption
{
WICJpegYCrCbSubsamplingDefault = 0x00000000,
WICJpegYCrCbSubsampling420 = 0x00000001,
WICJpegYCrCbSubsampling422 = 0x00000002,
WICJpegYCrCbSubsampling444 = 0x00000003,
WICJPEGYCRCBSUBSAMPLING_FORCE_DWORD = CODEC_FORCE_DWORD
} WICJpegYCrCbSubsamplingOption;
/*=========================================================================*\
WICPngFilterOption
\*=========================================================================*/
typedef [public] enum WICPngFilterOption
{
WICPngFilterUnspecified = 0x00000000,
WICPngFilterNone = 0x00000001,
WICPngFilterSub = 0x00000002,
WICPngFilterUp = 0x00000003,
WICPngFilterAverage = 0x00000004,
WICPngFilterPaeth = 0x00000005,
WICPngFilterAdaptive = 0x00000006,
WICPNGFILTEROPTION_FORCE_DWORD = CODEC_FORCE_DWORD
} WICPngFilterOption;
/*=========================================================================*\
Raw Structures and Interfaces
\*=========================================================================*/
/*=========================================================================*\
WICNamedWhitePoint
\*=========================================================================*/
typedef [public] enum WICNamedWhitePoint
{
WICWhitePointDefault = 0x00000001,
WICWhitePointDaylight = 0x00000002,
WICWhitePointCloudy = 0x00000004,
WICWhitePointShade = 0x00000008,
WICWhitePointTungsten = 0x00000010,
WICWhitePointFluorescent = 0x00000020,
WICWhitePointFlash = 0x00000040,
WICWhitePointUnderwater = 0x00000080,
WICWhitePointCustom = 0x00000100, // when using a picture (grey-card) as white-balance
WICWhitePointAutoWhiteBalance = 0x00000200,
WICWhitePointAsShot = WICWhitePointDefault,
WICNAMEDWHITEPOINT_FORCE_DWORD = CODEC_FORCE_DWORD
} WICNamedWhitePoint;
/*=========================================================================*\
WICRawCapabilities
\*=========================================================================*/
typedef [public] enum WICRawCapabilities
{
WICRawCapabilityNotSupported = 0x00000000,
WICRawCapabilityGetSupported = 0x00000001,
WICRawCapabilityFullySupported = 0x00000002, // Get & Set supported
WICRAWCAPABILITIES_FORCE_DWORD = CODEC_FORCE_DWORD
} WICRawCapabilities;
/*=========================================================================*\
WICRawRotationCapabilities
\*=========================================================================*/
typedef [public] enum WICRawRotationCapabilities
{
WICRawRotationCapabilityNotSupported = 0x00000000,
WICRawRotationCapabilityGetSupported = 0x00000001,
WICRawRotationCapabilityNinetyDegreesSupported = 0x00000002, // Get & Set supported. Only multiple of 90 degree angles supported.
WICRawRotationCapabilityFullySupported = 0x00000003, // Get & Set supported. Any rotation angle supported.
WICRAWROTATIONCAPABILITIES_FORCE_DWORD = CODEC_FORCE_DWORD
} WICRawRotationCapabilities;
/*=========================================================================*\
WICRawCapabilitesInfo
\*=========================================================================*/
typedef [public] struct WICRawCapabilitiesInfo
{
UINT cbSize;
UINT CodecMajorVersion;
UINT CodecMinorVersion;
WICRawCapabilities ExposureCompensationSupport;
WICRawCapabilities ContrastSupport;
WICRawCapabilities RGBWhitePointSupport;
WICRawCapabilities NamedWhitePointSupport;
UINT NamedWhitePointSupportMask;
WICRawCapabilities KelvinWhitePointSupport;
WICRawCapabilities GammaSupport;
WICRawCapabilities TintSupport;
WICRawCapabilities SaturationSupport;
WICRawCapabilities SharpnessSupport;
WICRawCapabilities NoiseReductionSupport;
WICRawCapabilities DestinationColorProfileSupport;
WICRawCapabilities ToneCurveSupport;
WICRawRotationCapabilities RotationSupport;
WICRawCapabilities RenderModeSupport;
} WICRawCapabilitiesInfo;
/*=========================================================================*\
WICRawParameterSet
\*=========================================================================*/
typedef [public] enum WICRawParameterSet
{
WICAsShotParameterSet = 0x00000001,
WICUserAdjustedParameterSet = 0x00000002,
WICAutoAdjustedParameterSet = 0x00000003,
WICRAWPARAMETERSET_FORCE_DWORD = CODEC_FORCE_DWORD
} WICRawParameterSet;
/*=========================================================================*\
WICRawRenderMode
\*=========================================================================*/
typedef [public] enum WICRawRenderMode
{
WICRawRenderModeDraft = 0x00000001, // Favor speed over quality
WICRawRenderModeNormal = 0x00000002, // Balance speed with quality
WICRawRenderModeBestQuality = 0x00000003, // Favor quality over speed
WICRAWRENDERMODE_FORCE_DWORD = CODEC_FORCE_DWORD
} WICRawRenderMode;
/*=========================================================================*\
WICRawToneCurvePoint
\*=========================================================================*/
typedef [public] struct WICRawToneCurvePoint
{
double Input;
double Output;
} WICRawToneCurvePoint;
/*=========================================================================*\
WICRawToneCurve
\*=========================================================================*/
typedef [public] struct WICRawToneCurve
{
UINT cPoints;
WICRawToneCurvePoint aPoints[1];
} WICRawToneCurve;
/*=========================================================================*\
IWICDevelopRawNotificationCallback
\*=========================================================================*/
cpp_quote("#define WICRawChangeNotification_ExposureCompensation 0x00000001")
cpp_quote("#define WICRawChangeNotification_NamedWhitePoint 0x00000002")
cpp_quote("#define WICRawChangeNotification_KelvinWhitePoint 0x00000004")
cpp_quote("#define WICRawChangeNotification_RGBWhitePoint 0x00000008")
cpp_quote("#define WICRawChangeNotification_Contrast 0x00000010")
cpp_quote("#define WICRawChangeNotification_Gamma 0x00000020")
cpp_quote("#define WICRawChangeNotification_Sharpness 0x00000040")
cpp_quote("#define WICRawChangeNotification_Saturation 0x00000080")
cpp_quote("#define WICRawChangeNotification_Tint 0x00000100")
cpp_quote("#define WICRawChangeNotification_NoiseReduction 0x00000200")
cpp_quote("#define WICRawChangeNotification_DestinationColorContext 0x00000400")
cpp_quote("#define WICRawChangeNotification_ToneCurve 0x00000800")
cpp_quote("#define WICRawChangeNotification_Rotation 0x00001000")
cpp_quote("#define WICRawChangeNotification_RenderMode 0x00002000")
[
object,
uuid(95c75a6e-3e8c-4ec2-85a8-aebcc551e59b)
]
interface IWICDevelopRawNotificationCallback : IUnknown
{
// Called when one of the parameters in IWICDevelopRaw gets changed or updated.
// Notification mask is a bitmask constructed from the WICRawChangeNotification_*
// values to specify which parameter(s) changed. Return S_OK if the notification
// is handled, or a descriptive error if not.
HRESULT Notify([in] UINT NotificationMask);
}
/*=========================================================================*\
IWICDevelopRaw - Raw Develop
\*=========================================================================*/
[
object,
uuid(fbec5e44-f7be-4b65-b7f8-c0c81fef026d)
]
interface IWICDevelopRaw : IWICBitmapFrameDecode
{
// Return the set of supported capabilities for this raw file
[local]
HRESULT QueryRawCapabilitiesInfo(
[in, out] WICRawCapabilitiesInfo *pInfo
);
[call_as(QueryRawCapabilitiesInfo)]
HRESULT Remote_QueryRawCapabilitiesInfo(
[in, out] WICRawCapabilitiesInfo *pInfo
);
// Load the desired parameter set as the current
// working parameter set
HRESULT LoadParameterSet(
[in] WICRawParameterSet ParameterSet
);
// Get an IPropertyBag2 that contains the current
// parameters to hand off to the encoder for saving
HRESULT GetCurrentParameterSet(
[out] IPropertyBag2 **ppCurrentParameterSet
);
// Set/Get the exposure compensation desired for final output
// Valid range for ev is -5.0 to +5.0 (stops)
HRESULT SetExposureCompensation(
[in] double ev
);
HRESULT GetExposureCompensation(
[out] double *pEV
);
// Get/Set the white point as an RGB value.
HRESULT SetWhitePointRGB(
[in] UINT Red,
[in] UINT Green,
[in] UINT Blue
);
HRESULT GetWhitePointRGB(
[out] UINT *pRed,
[out] UINT *pGreen,
[out] UINT *pBlue
);
// Set/Get white point as a preset named value
HRESULT SetNamedWhitePoint(
[in] WICNamedWhitePoint WhitePoint
);
HRESULT GetNamedWhitePoint(
[out] WICNamedWhitePoint *pWhitePoint
);
// Set the white point in kelvin
// Defined max range is 1,500 - 30,000
HRESULT SetWhitePointKelvin(
[in] UINT WhitePointKelvin
);
HRESULT GetWhitePointKelvin(
[out] UINT *pWhitePointKelvin
);
HRESULT GetKelvinRangeInfo(
[out] UINT *pMinKelvinTemp,
[out] UINT *pMaxKelvinTemp,
[out] UINT *pKelvinTempStepValue
);
// Set/Get the amount of contrast to apply to the final output
// Valid range for Contrast is -1.0 to 1.0.
HRESULT SetContrast(
[in] double Contrast
);
HRESULT GetContrast(
[out] double *pContrast
);
// Set/Get the gamma to use for output pixels
// Valid range for Gamma is 0.0 to 5.0, with 1.0 being
// the default.
HRESULT SetGamma(
[in] double Gamma
);
HRESULT GetGamma(
[out] double *pGamma
);
// Set/Get the sharpness of the final output.
// Valid range is 0.0 to 1.0. 0.0 is no sharpening
// applied to the image at all, 1.0 is full/most allowed sharpening
HRESULT SetSharpness(
[in] double Sharpness
);
HRESULT GetSharpness(
[out] double *pSharpness
);
// Set/Get saturation of the final output
// Valid range is -1.0 to 1.0. -1.0 is full
// de-saturation, 1.0 is full saturation.
HRESULT SetSaturation(
[in] double Saturation
);
HRESULT GetSaturation(
[out] double *pSaturation
);
// Set/Get the tint of the final output
// Valid range is -1.0 to +1.0. Scale is defined as orthogonal to color
// temperature. (Green/Magenta bias)
HRESULT SetTint(
[in] double Tint
);
HRESULT GetTint(
[out] double *pTint
);
// Set/Get noise reduction of the final output
// Valid range is 0.0 to 1.0. 0.0 is no noise
// reduction applied. 1.0 is full/most allowed noise
// reduction applied.
HRESULT SetNoiseReduction(
[in] double NoiseReduction
);
HRESULT GetNoiseReduction(
[out] double *pNoiseReduction
);
// Set desired color profile of final output. You can
// get the color context via IWICBitmapFrameDecode::GetColorContext()
HRESULT SetDestinationColorContext(
[in, unique] IWICColorContext *pColorContext
);
// Set/Get the tone curve to use for final output.
// Assume linear interpolation between points.
[local]
HRESULT SetToneCurve(
[in] UINT cbToneCurveSize,
[in, annotation("__in_bcount(cbToneCurveSize)")] const WICRawToneCurve *pToneCurve
);
[call_as(SetToneCurve)]
HRESULT Remote_SetToneCurve(
[in] UINT cPoints,
[in, size_is(cPoints)] const WICRawToneCurvePoint *aPoints
);
// Get the tone curve currently in use. To get the required
// size of the buffer, pass in NULL for the pToneCurve parameter
// and *pcbActualToneCurveBufferSize will contain the required size upon
// exit.
[local]
HRESULT GetToneCurve(
[in] UINT cbToneCurveBufferSize,
[out, unique, annotation("__out_bcount_part_opt(cbToneCurveBufferSize, *pcbActualToneCurveBufferSize)")] WICRawToneCurve *pToneCurve,
[out, unique, annotation("__inout_opt")] UINT *pcbActualToneCurveBufferSize
);
[call_as(GetToneCurve)]
HRESULT Remote_GetToneCurve(
[out] UINT * pcPoints,
[out, size_is(, *pcPoints)] WICRawToneCurvePoint **paPoints
);
// Set the desired rotation angle of the output of CopyPixels.
// The parameter pRotation is in units of degrees and the sign is positive
// clockwise. So a rotation of 90.0 would be a rotation of 90 degrees
// clockwise (data along the left side of the sensor would be rendered on
// the top rows of the output image.
HRESULT SetRotation([in] double Rotation);
// Gets the current rotation angle used for CopyPixels.
HRESULT GetRotation([out] double *pRotation);
// Set the desired render mode for CopyPixels
HRESULT SetRenderMode([in] WICRawRenderMode RenderMode);
// Get the current render mode used for CopyPixels
HRESULT GetRenderMode([out] WICRawRenderMode *pRenderMode);
// Set the callback function to call when parameters change
HRESULT SetNotificationCallback([in, unique] IWICDevelopRawNotificationCallback *pCallback);
};