/*++ 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"; import "dxgiformat.idl"; import "dxgitype.idl"; /*=========================================================================*\ Includes \*=========================================================================*/ cpp_quote("#include ") cpp_quote("#include ") /*=========================================================================*\ SDK Version \*=========================================================================*/ cpp_quote("#define WINCODEC_SDK_VERSION1 0x0236") cpp_quote("#define WINCODEC_SDK_VERSION2 0x0237") cpp_quote("DEFINE_GUID(CLSID_WICImagingFactory, 0xcacaf262, 0x9370, 0x4615, 0xa1, 0x3b, 0x9f, 0x55, 0x39, 0xda, 0x4c, 0xa);") cpp_quote("DEFINE_GUID(CLSID_WICImagingFactory1, 0xcacaf262, 0x9370, 0x4615, 0xa1, 0x3b, 0x9f, 0x55, 0x39, 0xda, 0x4c, 0xa);") cpp_quote("DEFINE_GUID(CLSID_WICImagingFactory2, 0x317d06e8, 0x5f24, 0x433d, 0xbd, 0xf7, 0x79, 0xce, 0x68, 0xd8, 0xab, 0xc2);") cpp_quote("#if(_WIN32_WINNT >= _WIN32_WINNT_WIN8) || defined(_WIN7_PLATFORM_UPDATE)") cpp_quote("#define WINCODEC_SDK_VERSION WINCODEC_SDK_VERSION2") cpp_quote("#define CLSID_WICImagingFactory CLSID_WICImagingFactory2") cpp_quote("#else") cpp_quote("#define WINCODEC_SDK_VERSION WINCODEC_SDK_VERSION1") cpp_quote("#endif") /*=========================================================================*\ 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_WICPngDecoder, 0x389ea17b, 0x5078, 0x4cde, 0xb6, 0xef, 0x25, 0xc1, 0x51, 0x75, 0xc7, 0x51);") cpp_quote("DEFINE_GUID(CLSID_WICPngDecoder1, 0x389ea17b, 0x5078, 0x4cde, 0xb6, 0xef, 0x25, 0xc1, 0x51, 0x75, 0xc7, 0x51);") cpp_quote("DEFINE_GUID(CLSID_WICPngDecoder2, 0xe018945b, 0xaa86, 0x4008, 0x9b, 0xd4, 0x67, 0x77, 0xa1, 0xe4, 0x0c, 0x11);") cpp_quote("#if(_WIN32_WINNT >= _WIN32_WINNT_WIN8) || defined(_WIN7_PLATFORM_UPDATE)") cpp_quote("#define CLSID_WICPngDecoder CLSID_WICPngDecoder2") cpp_quote("#endif") cpp_quote("DEFINE_GUID(CLSID_WICBmpDecoder, 0x6b462062, 0x7cbf, 0x400d, 0x9f, 0xdb, 0x81, 0x3d, 0xd1, 0x0f, 0x27, 0x78);") 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_WICDdsDecoder, 0x9053699f, 0xa341, 0x429d, 0x9e, 0x90, 0xee, 0x43, 0x7c, 0xf8, 0x0c, 0x73);") 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);") cpp_quote("DEFINE_GUID(CLSID_WICDdsEncoder, 0xa61dde94, 0x66ce, 0x4ac1, 0x88, 0x1b, 0x71, 0x68, 0x05, 0x88, 0x89, 0x5e);") cpp_quote("DEFINE_GUID(CLSID_WICAdngDecoder, 0x981d9411, 0x909e, 0x42a7, 0x8f, 0x5d, 0xa7, 0x47, 0xff, 0x05, 0x2e, 0xdb);") cpp_quote("DEFINE_GUID(CLSID_WICJpegQualcommPhoneEncoder, 0x68ed5c62, 0xf534, 0x4979, 0xb2, 0xb3, 0x68, 0x6a, 0x12, 0xb2, 0xb3, 0x4c);") cpp_quote("DEFINE_GUID(CLSID_WICHeifDecoder, 0xe9A4A80a, 0x44fe, 0x4DE4, 0x89, 0x71, 0x71, 0x50, 0XB1, 0X0a, 0X51, 0X99);") cpp_quote("DEFINE_GUID(CLSID_WICHeifEncoder, 0x0dbecec1, 0x9eb3, 0x4860, 0x9c, 0x6f, 0xdd, 0xbe, 0x86, 0x63, 0x45, 0x75);") cpp_quote("DEFINE_GUID(CLSID_WICWebpDecoder, 0x7693E886, 0x51C9, 0x4070, 0x84, 0x19, 0x9F, 0x70, 0X73, 0X8E, 0XC8, 0XFA);") cpp_quote("DEFINE_GUID(CLSID_WICRAWDecoder, 0x41945702, 0x8302, 0x44A6, 0x94, 0x45, 0xAC, 0x98, 0xE8, 0xAF, 0xA0, 0x86);") cpp_quote("DEFINE_GUID(CLSID_WICJpegXLDecoder, 0xfc6ceece, 0xaef5, 0x4a23, 0x96, 0xec, 0x59, 0x84, 0xff, 0xb4, 0x86, 0xd9);") cpp_quote("DEFINE_GUID(CLSID_WICJpegXLEncoder, 0x0e4ecd3b, 0x1ba6, 0x4636, 0x81, 0x98, 0x56, 0xc7, 0x30, 0x40, 0x96, 0x4a);") /*=========================================================================*\ 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);") cpp_quote("DEFINE_GUID(GUID_ContainerFormatDds, 0x9967cb95, 0x2e85, 0x4ac8, 0x8c, 0xa2, 0x83, 0xd7, 0xcc, 0xd4, 0x25, 0xc9);") cpp_quote("DEFINE_GUID(GUID_ContainerFormatAdng, 0xf3ff6d0d, 0x38c0, 0x41c4, 0xb1, 0xfe, 0x1f, 0x38, 0x24, 0xf1, 0x7b, 0x84);") cpp_quote("DEFINE_GUID(GUID_ContainerFormatHeif, 0xe1e62521, 0x6787, 0x405b, 0xa3, 0x39, 0x50, 0x07, 0x15, 0xb5, 0x76, 0x3f);") cpp_quote("DEFINE_GUID(GUID_ContainerFormatWebp, 0xe094b0e2, 0x67f2, 0x45b3, 0xb0, 0xea, 0x11, 0x53, 0x37, 0xca, 0x7c, 0xf3);") cpp_quote("DEFINE_GUID(GUID_ContainerFormatRaw, 0xfe99ce60, 0xf19c, 0x433c, 0xa3, 0xae, 0x00, 0xac, 0xef, 0xa9, 0xca, 0x21);") cpp_quote("DEFINE_GUID(GUID_ContainerFormatJpegXL, 0xfec14e3f, 0x427a, 0x4736, 0xaa, 0xe6, 0x27, 0xed, 0x84, 0xf6, 0x93, 0x22);") /*=========================================================================*\ 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);") cpp_quote("DEFINE_GUID(CLSID_WICPlanarFormatConverter, 0x184132b8, 0x32f8, 0x4784, 0x91, 0x31, 0xdd, 0x72, 0x24, 0xb2, 0x34, 0x38);") /*=========================================================================*\ Interface forward declarations : \*=========================================================================*/ interface IWICImagingFactory; interface IWICImagingFactory2; interface IWICPalette; interface IWICBitmap; interface IWICBitmapLock; interface IWICBitmapSource; interface IWICFastMetadataEncoder; interface IWICBitmapCodecInfo; interface IWICBitmapDecoderInfo; interface IWICBitmapEncoderInfo; interface IWICBitmapDecoder; interface IWICBitmapEncoder; cpp_quote("#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) || defined(_WIN7_PLATFORM_UPDATE)") interface IWICImageEncoder; cpp_quote("#endif") interface IWICBitmapFrameDecode; interface IWICBitmapFrameEncode; interface IWICPlanarBitmapFrameEncode; interface IWICBitmapSourceTransform; interface IWICPlanarBitmapSourceTransform; interface IWICBitmapScaler; interface IWICBitmapClipper; interface IWICBitmapFlipRotator; interface IWICFormatConverter; interface IWICPlanarFormatConverter; interface IWICComponentInfo; interface IWICStream; interface IWICEnumMetadataItem; interface IWICMetadataQueryReader; interface IWICMetadataQueryWriter; cpp_quote("#if 0") // IDImageContxt and ID2D1Image are interfaces that don't have proxies and aren't // described in an idl. For the idl compiler, typedefing as DWORD * suppresses // midl compiler errors. The generated header file will use the forward // declarations below. typedef DWORD *ID2D1Device; typedef DWORD *ID2D1Image; typedef DWORD *D2D1_PIXEL_FORMAT; cpp_quote ("#endif") cpp_quote ("typedef interface ID2D1Device ID2D1Device;") cpp_quote ("typedef interface ID2D1Image ID2D1Image;") /*=========================================================================*\ 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; /*=========================================================================*\ Constants \*=========================================================================*/ #define CODEC_FORCE_DWORD 0x7FFFFFFF const UINT WIC_JPEG_MAX_COMPONENT_COUNT = 4; const UINT WIC_JPEG_MAX_TABLE_INDEX = 3; const DWORD WIC_JPEG_SAMPLE_FACTORS_ONE = 0x00000011; const DWORD WIC_JPEG_SAMPLE_FACTORS_THREE_420 = 0x00111122; const DWORD WIC_JPEG_SAMPLE_FACTORS_THREE_422 = 0x00111121; const DWORD WIC_JPEG_SAMPLE_FACTORS_THREE_440 = 0x00111112; const DWORD WIC_JPEG_SAMPLE_FACTORS_THREE_444 = 0x00111111; const DWORD WIC_JPEG_QUANTIZATION_BASELINE_ONE = 0x00000000; const DWORD WIC_JPEG_QUANTIZATION_BASELINE_THREE = 0x00010100; const DWORD WIC_JPEG_HUFFMAN_BASELINE_ONE = 0x00000000; const DWORD WIC_JPEG_HUFFMAN_BASELINE_THREE = 0x00111100; /*=========================================================================*\ 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);") /* Depth only format */ /* 4c9c9f45-1d89-4e31-9bc7-69343a0dca69 */ cpp_quote("DEFINE_GUID(GUID_WICPixelFormat8bppDepth, 0x4c9c9f45, 0x1d89, 0x4e31, 0x9b, 0xc7, 0x69, 0x34, 0x3a, 0x0d, 0xca, 0x69);") /* Gain only format */ /* a884022a-af13-4c16-b746-619bf618b878 */ cpp_quote("DEFINE_GUID(GUID_WICPixelFormat8bppGain, 0xa884022a, 0xaf13, 0x4c16, 0xb7, 0x46, 0x61, 0x9b, 0xf6, 0x18, 0xb8, 0x78);") /* a5022b24-7109-443b-9948-25b6ed8f39fd */ cpp_quote("DEFINE_GUID(GUID_WICPixelFormat24bppRGBGain, 0xa5022b24, 0x7109, 0x443b, 0x99, 0x48, 0x25, 0xb6, 0xed, 0x8f, 0x39, 0xfd);") /* 837d6738-208a-43e0-8995-79ab74407402 */ cpp_quote("DEFINE_GUID(GUID_WICPixelFormat32bppBGRGain, 0x837d6738, 0x208a, 0x43e0, 0x89, 0x95, 0x79, 0xab, 0x74, 0x40, 0x74, 0x02);") /* 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("#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) || defined(_WIN7_PLATFORM_UPDATE)") cpp_quote("DEFINE_GUID(GUID_WICPixelFormat32bppRGB, 0xd98c6b95, 0x3efe, 0x47d6, 0xbb, 0x25, 0xeb, 0x17, 0x48, 0xab, 0x0c, 0xf1);") cpp_quote("#endif") 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("#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) || defined(_WIN7_PLATFORM_UPDATE)") cpp_quote("DEFINE_GUID(GUID_WICPixelFormat64bppRGB, 0xa1182111, 0x186d, 0x4d42, 0xbc, 0x6a, 0x9c, 0x83, 0x03, 0xa8, 0xdf, 0xf9);") cpp_quote("#endif") 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);") cpp_quote("#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) || defined(_WIN7_PLATFORM_UPDATE)") cpp_quote("DEFINE_GUID(GUID_WICPixelFormat96bppRGBFloat, 0xe3fed78f, 0xe8db, 0x4acf, 0x84, 0xc1, 0xe9, 0x7f, 0x61, 0x36, 0xb3, 0x27);") cpp_quote("#endif") /* 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("#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) || defined(_WIN7_PLATFORM_UPDATE)") cpp_quote("DEFINE_GUID(GUID_WICPixelFormat64bppPRGBAHalf, 0x58ad26c2, 0xc623, 0x4d9d, 0xb3, 0x20, 0x38, 0x7e, 0x49, 0xf8, 0xc4, 0x42);") cpp_quote("#endif") 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);") /* Note that for both BGR101010 and RGBA1010102, the red channel is stored in the least significant bits. This format is different, with the red channel in the most significant bits. The memory layout of R10G10B10A2 is RRRRRRRR RRGGGGGG GGGGBBBB BBBBBBAA when interpreted as a unit, and BBBBBBAA GGGGBBBB RRGGGGG RRRRRRRR when stored in memory on a little-endian device. */ cpp_quote("DEFINE_GUID(GUID_WICPixelFormat32bppR10G10B10A2, 0x604e1bb5, 0x8a3c, 0x4b65, 0xb1, 0x1c, 0xbc, 0x0b, 0x8d, 0xd7, 0x5b, 0x7f);") /* This is a 10 bit pixel format for HDR10(i.e., BT.2020 color space and SMPTE ST.2084 EOTF.) The pixel format uses the same channel layout as GUID_WICPixelFormat32bppR10G10B10A2. This layout is the same as DXGI_FORMAT_R10G10B10A2_UNORM. */ cpp_quote("DEFINE_GUID(GUID_WICPixelFormat32bppR10G10B10A2HDR10, 0x9c215c5d, 0x1acc, 0x4f0e, 0xa4, 0xbc, 0x70, 0xfb, 0x3a, 0xe8, 0xfd, 0x28);") /* 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);") /* Planar formats */ cpp_quote("DEFINE_GUID(GUID_WICPixelFormat8bppY, 0x91B4DB54, 0x2DF9, 0x42F0, 0xB4, 0x49, 0x29, 0x09, 0xBB, 0x3D, 0xF8, 0x8E);") cpp_quote("DEFINE_GUID(GUID_WICPixelFormat8bppCb, 0x1339F224, 0x6BFE, 0x4C3E, 0x93, 0x02, 0xE4, 0xF3, 0xA6, 0xD0, 0xCA, 0x2A);") cpp_quote("DEFINE_GUID(GUID_WICPixelFormat8bppCr, 0xB8145053, 0x2116, 0x49F0, 0x88, 0x35, 0xED, 0x84, 0x4B, 0x20, 0x5C, 0x51);") cpp_quote("DEFINE_GUID(GUID_WICPixelFormat16bppCbCr, 0xFF95BA6E, 0x11E0, 0x4263, 0xBB, 0x45, 0x01, 0x72, 0x1F, 0x34, 0x60, 0xA4);") /* Jpeg Quantized DCT coefficients */ cpp_quote("DEFINE_GUID(GUID_WICPixelFormat16bppYQuantizedDctCoefficients, 0xA355F433, 0x48E8, 0x4A42, 0x84, 0xD8, 0xE2, 0xAA, 0x26, 0xCA, 0x80, 0xA4);") cpp_quote("DEFINE_GUID(GUID_WICPixelFormat16bppCbQuantizedDctCoefficients, 0xD2C4FF61, 0x56A5, 0x49C2, 0x8B, 0x5C, 0x4C, 0x19, 0x25, 0x96, 0x48, 0x37);") cpp_quote("DEFINE_GUID(GUID_WICPixelFormat16bppCrQuantizedDctCoefficients, 0x2FE354F0, 0x1680, 0x42D8, 0x92, 0x31, 0xE7, 0x3C, 0x05, 0x65, 0xBF, 0xC1);") /*=========================================================================*\ 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, // High Quality Cubic filtering. This uses the Polyphase scaler which has // a much higher density of sampling points than normal Cubic. WICBitmapInterpolationModeHighQualityCubic = 0x00000004, 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; /*=========================================================================*\ WICBitmapToneMappingModes \*=========================================================================*/ typedef [public] enum WICBitmapToneMappingMode { WICBitmapToneMappingMode_None = 0x00000000, WICBitmapToneMappingMode_Default = 0x00000001, WICBitmapToneMappingMode_D2D = 0x00000002, WICBitmapToneMappingMode_GainMap = 0x00000003, WICBITMAPTONEMAPPINGMODE_FORCE_DWORD = CODEC_FORCE_DWORD } WICBitmapToneMappingMode; /*=========================================================================*\ WICBitmapChainType \*=========================================================================*/ typedef [public] enum WICBitmapChainType { WICBitmapChainType_Alternate = 0x00000001, WICBitmapChainType_Layer = 0x00000002, WICBitmapChainType_Preview = 0x00000003, WICBitmapChainType_Thumbnail = 0x00000004, WICBitmapChainType_AlphaMap = 0x00000005, WICBitmapChainType_DepthMap = 0x00000006, WICBitmapChainType_GainMap = 0x00000007, WICBITMAPCHAINTYPE_FORCE_DWORD = CODEC_FORCE_DWORD } WICBitmapChainType; /*=========================================================================*\ 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; /*=========================================================================*\ WICHeifProperties \*=========================================================================*/ typedef [public] enum WICHeifProperties { WICHeifOrientation = 0x00000001, // WICColor (VT_UI4). // The image is an layered image if this property is present and not VT_EMPTY. WICHeifLayeredImageCanvasColor = 0x00000002, // Array of POINT structures, specifying the coordinates of each layer image // in the canvas (VT_VECTOR | VT_UI8) WICHeifLayeredImageLayerPositions = 0x00000003, WICHeifProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WICHeifProperties; /*=========================================================================*\ WICHeifHdrProperties \*=========================================================================*/ typedef [public] enum WICHeifHdrProperties { WICHeifHdrMaximumLuminanceLevel = 0x00000001, WICHeifHdrMaximumFrameAverageLuminanceLevel = 0x00000002, WICHeifHdrMinimumMasteringDisplayLuminanceLevel = 0x00000003, WICHeifHdrMaximumMasteringDisplayLuminanceLevel = 0x00000004, WICHeifHdrCustomVideoPrimaries = 0x00000005, WICHeifHdrProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WICHeifHdrProperties; /*=========================================================================*\ WICWebpAnimProperties \*=========================================================================*/ typedef [public] enum WICWebpAnimProperties { WICWebpAnimLoopCount = 0x00000001, WICWebpAnimProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WICWebpAnimProperties; /*=========================================================================*\ WICWebpAnmfProperties \*=========================================================================*/ typedef [public] enum WICWebpAnmfProperties { WICWebpAnmfFrameDuration = 0x00000001, WICWebpAnmfProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WICWebpAnmfProperties; /*=========================================================================*\ WICJpegXLAnimProperties \*=========================================================================*/ typedef [public] enum WICJpegXLAnimProperties { WICJpegXLAnimLoopCount = 0x00000001, WICJpegXLAnimFrameTicksPerSecondNumerator = 0x00000002, WICJpegXLAnimFrameTicksPerSecondDenominator = 0x00000003, WICJpegXLAnimProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WICJpegXLAnimProperties; /*=========================================================================*\ WICJpegXLAnimFrameProperties \*=========================================================================*/ typedef [public] enum WICJpegXLAnimFrameProperties { WICJpegXLAnimFrameDurationInTicks = 0x00000001, WICJpegXLAnimFrameName = 0x00000002, WICJpegXLAnimFrameProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WICJpegXLAnimFrameProperties; /*=========================================================================*\ WICGainMapProperties \*=========================================================================*/ typedef [public] enum WICGainMapProperties { WICGainMapMetadata = 0x00000001, // In ISO 21496-1 format WICGainMapProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WICGainMapProperties; /*=========================================================================*\ 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; /*=========================================================================*\ WICPlanarOptions \*=========================================================================*/ typedef [public] enum WICPlanarOptions { WICPlanarOptionsDefault = 0x00000000, WICPlanarOptionsPreserveSubsampling = 0x00000001, WICPLANAROPTIONS_FORCE_DWORD = CODEC_FORCE_DWORD } WICPlanarOptions; /*=========================================================================*\ WICJpegIndexingOptions \*=========================================================================*/ typedef [public] enum WICJpegIndexingOptions { WICJpegIndexingOptionsGenerateOnDemand = 0x00000000, WICJpegIndexingOptionsGenerateOnLoad = 0x00000001, WICJpegIndexingOptions_FORCE_DWORD = CODEC_FORCE_DWORD } WICJpegIndexingOptions; /*=========================================================================*\ WICJpegTransferMatrix \*=========================================================================*/ typedef [public] enum WICJpegTransferMatrix { WICJpegTransferMatrixIdentity = 0x00000000, WICJpegTransferMatrixBT601 = 0x00000001, WICJpegTransferMatrix_FORCE_DWORD = CODEC_FORCE_DWORD } WICJpegTransferMatrix; /*=========================================================================*\ WICJpegScanType \*=========================================================================*/ typedef [public] enum WICJpegScanType { WICJpegScanTypeInterleaved = 0x00000000, WICJpegScanTypePlanarComponents = 0x00000001, WICJpegScanTypeProgressive = 0x00000002, WICJpegScanType_FORCE_DWORD = CODEC_FORCE_DWORD } WICJpegScanType; /*=========================================================================*\ WICImageParameters \*=========================================================================*/ cpp_quote("#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) || defined(_WIN7_PLATFORM_UPDATE)") typedef [public] struct WICImageParameters { D2D1_PIXEL_FORMAT PixelFormat; FLOAT DpiX; FLOAT DpiY; FLOAT Top; FLOAT Left; UINT32 PixelWidth; UINT32 PixelHeight; } WICImageParameters; cpp_quote("#endif") /*=========================================================================*\ WICBitmapPlaneDescription \*=========================================================================*/ typedef [public] struct WICBitmapPlaneDescription { WICPixelFormatGUID Format; UINT Width; UINT Height; } WICBitmapPlaneDescription; /*=========================================================================*\ WICBitmapPlane \*=========================================================================*/ typedef [public] struct WICBitmapPlane { WICPixelFormatGUID Format; [size_is(cbBufferSize)] BYTE *pbBuffer; UINT cbStride; UINT cbBufferSize; } WICBitmapPlane; /*=========================================================================*\ WICJpegFrameHeader \*=========================================================================*/ typedef [public] struct WICJpegFrameHeader { UINT Width; UINT Height; WICJpegTransferMatrix TransferMatrix; WICJpegScanType ScanType; [range(1, WIC_JPEG_MAX_COMPONENT_COUNT)] UINT cComponents; DWORD ComponentIdentifiers; DWORD SampleFactors; DWORD QuantizationTableIndices; } WICJpegFrameHeader; /*=========================================================================*\ WICJpegScanHeader \*=========================================================================*/ typedef [public] struct WICJpegScanHeader { [range(1, WIC_JPEG_MAX_COMPONENT_COUNT)] UINT cComponents; UINT RestartInterval; DWORD ComponentSelectors; DWORD HuffmanTableIndices; BYTE StartSpectralSelection; BYTE EndSpectralSelection; BYTE SuccessiveApproximationHigh; BYTE SuccessiveApproximationLow; } WICJpegScanHeader; /*=========================================================================*\ 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); }; /*=========================================================================*\ IWICPlanarFormatConverter \*=========================================================================*/ [ object, uuid(BEBEE9CB-83B0-4DCC-8132-B0AAA55EAC96) ] interface IWICPlanarFormatConverter : IWICBitmapSource { HRESULT Initialize( [in, size_is(cPlanes)] IWICBitmapSource **ppPlanes, UINT cPlanes, [in] REFWICPixelFormatGUID dstFormat, [in] WICBitmapDitherType dither, [in, unique] IWICPalette *pIPalette, [in] double alphaThresholdPercent, [in] WICBitmapPaletteType paletteTranslate ); HRESULT CanConvert( [in, size_is(cSrcPlanes)] const WICPixelFormatGUID *pSrcPixelFormats, UINT cSrcPlanes, [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 ); }; /*=========================================================================*\ IWICBitmapToneMapper \*=========================================================================*/ [ object, uuid(44728ded-1edf-4fe9-b50b-c89a264c9439) ] interface IWICBitmapToneMapper : IWICBitmapSource { HRESULT InitializeForHdrTarget( [in] IWICBitmapSource *pISource, [in] REFWICPixelFormatGUID guidDstFormat, [in] FLOAT fLuminanceInNits, [in] FLOAT fWhiteLevelInNits, [in] WICBitmapToneMappingMode mode ); HRESULT InitializeForSdrTarget( [in] IWICBitmapSource *pISource, [in] REFWICPixelFormatGUID guidDstFormat, [in] WICBitmapToneMappingMode mode ); } /*=========================================================================*\ 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, // WICBitmapLockFlags [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 ); }; /*=========================================================================*\ IWICPlanarBitmapFrameEncode \*=========================================================================*/ [ object, uuid(F928B7B8-2221-40C1-B72E-7E82F1974D1A) ] interface IWICPlanarBitmapFrameEncode: IUnknown { HRESULT WritePixels( UINT lineCount, [in, size_is(cPlanes)] WICBitmapPlane *pPlanes, UINT cPlanes ); HRESULT WriteSource( [in, size_is(cPlanes)] IWICBitmapSource **ppPlanes, UINT cPlanes, [in, unique] WICRect *prcSource ); }; /*=========================================================================*\ IWICImageEncoder - ID2D1Image Encoder \*=========================================================================*/ cpp_quote("#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) || defined(_WIN7_PLATFORM_UPDATE)") [ object, uuid(04C75BF8-3CE1-473B-ACC5-3CC4F5E94999), local ] interface IWICImageEncoder : IUnknown { HRESULT WriteFrame( [in] ID2D1Image *pImage, [in] IWICBitmapFrameEncode *pFrameEncode, [in, unique] const WICImageParameters *pImageParameters ); HRESULT WriteFrameThumbnail( [in] ID2D1Image *pImage, [in] IWICBitmapFrameEncode *pFrameEncode, [in, unique] const WICImageParameters *pImageParameters ); HRESULT WriteThumbnail( [in] ID2D1Image *pImage, [in] IWICBitmapEncoder *pEncoder, [in, unique] const WICImageParameters *pImageParameters ); }; cpp_quote("#endif") /*=========================================================================*\ 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 ); }; /*=========================================================================*\ IWICBitmapSourceTransform2 \*=========================================================================*/ [ object, uuid(c3373fdf-6d39-4e5f-8e79-bf40c0b7ed77) ] interface IWICBitmapSourceTransform2 : IWICBitmapSourceTransform { HRESULT GetColorContextsForPixelFormat( [in, unique] WICPixelFormatGUID* pPixelFormat, [in] UINT cCount, [in, unique, size_is(cCount)] IWICColorContext** ppIColorContexts, [out] UINT* pcActualCount ); }; /*=========================================================================*\ IWICPlanarBitmapSourceTransform \*=========================================================================*/ [ object, uuid(3AFF9CCE-BE95-4303-B927-E7D16FF4A613) ] interface IWICPlanarBitmapSourceTransform : IUnknown { HRESULT DoesSupportTransform( [in, out] UINT *puiWidth, [in, out] UINT *puiHeight, WICBitmapTransformOptions dstTransform, WICPlanarOptions dstPlanarOptions, [in, size_is(cPlanes)] const WICPixelFormatGUID *pguidDstFormats, [out, size_is(cPlanes)] WICBitmapPlaneDescription *pPlaneDescriptions, UINT cPlanes, [out] BOOL *pfIsSupported ); HRESULT CopyPixels( [in, unique] const WICRect *prcSource, UINT uiWidth, UINT uiHeight, WICBitmapTransformOptions dstTransform, WICPlanarOptions dstPlanarOptions, [in, size_is(cPlanes)] const WICBitmapPlane *pDstPlanes, UINT cPlanes ); }; /*=========================================================================*\ 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 ); }; /*=========================================================================*\ IWICBitmapFrameChainReader - Provides access to frames that are linked to the current frame through chains of different types. \*=========================================================================*/ [ object, uuid(0c599495-a120-4222-9130-a8c29410bd0b) ] interface IWICBitmapFrameChainReader : IUnknown { HRESULT GetChainedFrameCount( [in] WICBitmapChainType chainType, [out] UINT* pCount ); HRESULT GetChainedFrame( [in] WICBitmapChainType chainType, [in] UINT index, [out] IWICBitmapFrameDecode** ppIBitmapFrame ); } /*=========================================================================*\ IWICBitmapFrameChainWriter - Link frames together in chains of different types. \*=========================================================================*/ [ object, uuid(40d9ea28-4768-47b3-8c12-558a48e98e38) ] interface IWICBitmapFrameChainWriter : IUnknown { HRESULT AppendFrameToChain( [in] WICBitmapChainType chainType, [out] IWICBitmapFrameEncode** ppIFrameEncode, [in, out, unique] IPropertyBag2** ppIEncoderOptions ); HRESULT DoesSupportChainType( [in] WICBitmapChainType chainType, [out] BOOL* pfIsSupported ); } /*=========================================================================*\ 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 ); } /*=========================================================================*\ IWICDisplayAdaptationControl - For adapting decoding to capabilities of the display \*=========================================================================*/ [ object, uuid(de9d91d2-70b4-4f41-836c-25fcd39626d3) ] interface IWICDisplayAdaptationControl : IUnknown { HRESULT DoesSupportChangingMaxLuminance( [in, unique] WICPixelFormatGUID* pguidDstFormat, [out] BOOL* pfIsSupported ); HRESULT SetDisplayMaxLuminance( [in] FLOAT fLuminanceInNits ); HRESULT GetDisplayMaxLuminance( [out, retval] FLOAT* pfLuminanceInNits ); } /*=========================================================================*\ IWICDisplayAdaptationControl2 - For adapting decoding to capabilities of the display. Extends IWICDisplayAdaptationControl with additional methods. \*=========================================================================*/ [ object, uuid(d7508d29-3ab7-447e-a676-4d80d7de726b) ] interface IWICDisplayAdaptationControl2 : IWICDisplayAdaptationControl { HRESULT SetSdrWhiteLevel( [in] FLOAT fWhiteLevelInNits ); HRESULT GetSdrWhiteLevel( [out, retval] FLOAT* pfWhiteLevelInNits ); HRESULT SetToneMappingMode( [in] WICBitmapToneMappingMode mode ); HRESULT GetToneMappingMode( [out, retval] WICBitmapToneMappingMode* mode ); HRESULT DoesSupportToneMappingMode( [in] WICBitmapToneMappingMode mode, [out] BOOL* pfIsSupported ); } /*=========================================================================*\ IWICD3DTextureSource - For decoding a bitmap using a Direct3D Device, such as ID3D11Device. Returns the decoded bitmap as ID3D11Texture2D, or similar (depending on the type of Direct3D device.) \*=========================================================================*/ [ object, uuid(caf65cc4-8ebe-4718-a21f-8dbf40bb7e25), local ] interface IWICD3DTextureSource : IUnknown { HRESULT GetTexture( [annotation("_In_")] IUnknown* pD3DDevice, [annotation("_In_opt_")] IPropertyBag2* pID3DTextureOptions, REFIID riid, [annotation("_Outptr_")] void** ppTexture ); HRESULT GetTransformedTexture( [annotation("_In_opt_")] const WICRect* prc, UINT uiWidth, UINT uiHeight, [annotation("_In_opt_")] const WICPixelFormatGUID* pguidDstFormat, WICBitmapTransformOptions dstTransform, [annotation("_In_")] IUnknown* pD3DDevice, [annotation("_In_opt_")] IPropertyBag2* pID3DTextureOptions, REFIID riid, [annotation("_Outptr_")] void** ppTexture ); HRESULT DoesSupportD3DDeviceType( REFIID riid, [annotation("_Out_")] BOOL* pfIsSupported ); HRESULT GetD3DTextureOptions( [annotation("_COM_Outptr_")] IPropertyBag2** ppID3DTextureOptions ); } /*=========================================================================*\ 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 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_writes_bytes_to_opt_(cbSizePatterns, *pcbPatternsActual)")] WICBitmapPattern *pPatterns, [out, unique, annotation("_Out_opt_")] UINT *pcPatterns, [out, annotation("_Out_")] 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 ); }; /*=========================================================================*\ IWICImagingFactory2 \*=========================================================================*/ cpp_quote("#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) || defined(_WIN7_PLATFORM_UPDATE)") [ object, uuid(7B816B45-1996-4476-B132-DE9E247C8AF0), local ] interface IWICImagingFactory2 : IWICImagingFactory { HRESULT CreateImageEncoder( [in] ID2D1Device *pD2DDevice, [out] IWICImageEncoder **ppWICImageEncoder ); }; /*=========================================================================*\ IWICImagingFactory3 \*=========================================================================*/ [ object, uuid(489b3d8b-624a-4258-b678-7eece70f299d) ] interface IWICImagingFactory3 : IWICImagingFactory2 { HRESULT CreateBitmapToneMapper( [out] IWICBitmapToneMapper **ppToneMapper ); } cpp_quote("#endif") /*=========================================================================*\ APIs \*=========================================================================*/ cpp_quote("HRESULT WINAPI WICConvertBitmapSource(" ) cpp_quote(" _In_ REFWICPixelFormatGUID dstFormat, // Destination pixel format" ) cpp_quote(" _In_ IWICBitmapSource *pISrc, // Source bitmap" ) cpp_quote(" _Outptr_ 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(" _Outptr_ 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(" _Outptr_ IWICBitmap **ppIBitmap" ) cpp_quote(" );" ) cpp_quote("HRESULT WINAPI WICMapGuidToShortName(") cpp_quote(" _In_ REFGUID guid,") cpp_quote(" _In_ UINT cchName,") cpp_quote(" _Inout_updates_opt_(cchName) WCHAR *wzName,") cpp_quote(" _Out_ UINT *pcchActual") cpp_quote(" );") cpp_quote("HRESULT WINAPI WICMapShortNameToGuid(") cpp_quote(" _In_ PCWSTR wzName,") cpp_quote(" _Out_ GUID *pguid") cpp_quote(" );") cpp_quote("HRESULT WINAPI WICMapSchemaToName(") cpp_quote(" _In_ REFGUID guidMetadataFormat,") cpp_quote(" _In_ LPWSTR pwzSchema,") cpp_quote(" _In_ UINT cchName,") cpp_quote(" _Inout_updates_opt_(cchName) WCHAR *wzName,") cpp_quote(" _Out_ 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") /* WinCodec errors have moved to winerror.h */ /*=========================================================================*\ 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, WICJpegYCrCbSubsampling440 = 0x00000004, 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; /*=========================================================================*\ WICHeifCompressionOption \*=========================================================================*/ typedef [public] enum WICHeifCompressionOption { WICHeifCompressionDontCare = 0x00000000, WICHeifCompressionNone = 0x00000001, WICHeifCompressionHEVC = 0x00000002, WICHeifCompressionAV1 = 0x00000003, WICHeifCompressionJpegXL = 0x00000004, WICHeifCompressionBrotli = 0x00000005, WICHeifCompressionDeflate = 0x00000006, WICHEIFCOMPRESSIONOPTION_FORCE_DWORD = CODEC_FORCE_DWORD } WICHeifCompressionOption; /*=========================================================================*\ 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_reads_bytes_(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_writes_bytes_to_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); }; /*=========================================================================*\ WICDdsDimension - used in WICDdsParameters. \*=========================================================================*/ typedef [public] enum WICDdsDimension { WICDdsTexture1D = 0x00000000, WICDdsTexture2D = 0x00000001, WICDdsTexture3D = 0x00000002, WICDdsTextureCube = 0x00000003, WICDDSTEXTURE_FORCE_DWORD = CODEC_FORCE_DWORD } WICDdsDimension; /*=========================================================================*\ WICDdsAlphaMode - used in WICDdsParameters. Subset matches enum DDS_ALPHA_MODE. \*=========================================================================*/ typedef [public] enum WICDdsAlphaMode { WICDdsAlphaModeUnknown = 0x00000000, WICDdsAlphaModeStraight = 0x00000001, WICDdsAlphaModePremultiplied = 0x00000002, WICDdsAlphaModeOpaque = 0x00000003, WICDdsAlphaModeCustom = 0x00000004, WICDDSALPHAMODE_FORCE_DWORD = CODEC_FORCE_DWORD } WICDdsAlphaMode; /*=========================================================================*\ WICDdsParameters - used in IWICDdsDecoder \*=========================================================================*/ typedef [public] struct WICDdsParameters { UINT Width; UINT Height; UINT Depth; UINT MipLevels; UINT ArraySize; DXGI_FORMAT DxgiFormat; WICDdsDimension Dimension; WICDdsAlphaMode AlphaMode; } WICDdsParameters; /*=========================================================================*\ IWICDdsDecoder \*=========================================================================*/ [ object, uuid(409cd537-8532-40cb-9774-e2feb2df4e9c) ] interface IWICDdsDecoder : IUnknown { HRESULT GetParameters( [out] WICDdsParameters * pParameters ); HRESULT GetFrame( [in] UINT arrayIndex, [in] UINT mipLevel, [in] UINT sliceIndex, [out, retval] IWICBitmapFrameDecode **ppIBitmapFrame ); }; /*=========================================================================*\ IWICDdsEncoder \*=========================================================================*/ [ object, uuid(5cacdb4c-407e-41b3-b936-d0f010cd6732)] interface IWICDdsEncoder : IUnknown { HRESULT SetParameters( [in] WICDdsParameters * pParameters ); HRESULT GetParameters( [out] WICDdsParameters * pParameters ); HRESULT CreateNewFrame( [out] IWICBitmapFrameEncode **ppIFrameEncode, [out, optional] UINT * pArrayIndex, [out, optional] UINT * pMipLevel, [out, optional] UINT * pSliceIndex ); }; /*=========================================================================*\ WICDdsFormatInfo - used in IWICDdsFrameDecode \*=========================================================================*/ typedef [public] struct WICDdsFormatInfo { DXGI_FORMAT DxgiFormat; UINT BytesPerBlock; UINT BlockWidth; UINT BlockHeight; } WICDdsFormatInfo; /*=========================================================================*\ IWICDdsFrameDecode - raw DDS data access \*=========================================================================*/ [ object, uuid(3d4c0c61-18a4-41e4-bd80-481a4fc9f464) ] interface IWICDdsFrameDecode : IUnknown { HRESULT GetSizeInBlocks( [out] UINT *pWidthInBlocks, [out] UINT *pHeightInBlocks ); HRESULT GetFormatInfo( [out] WICDdsFormatInfo *pFormatInfo ); HRESULT CopyBlocks( [in, unique] const WICRect *prcBoundsInBlocks, [in] UINT cbStride, [in] UINT cbBufferSize, [out, size_is(cbBufferSize)] BYTE *pbBuffer ); }; /*=========================================================================*\ IWICJpegFrameDecode \*=========================================================================*/ [ object, uuid(8939F66E-C46A-4c21-A9D1-98B327CE1679) ] interface IWICJpegFrameDecode : IUnknown { HRESULT DoesSupportIndexing( [out] BOOL *pfIndexingSupported ); HRESULT SetIndexing( WICJpegIndexingOptions options, UINT horizontalIntervalSize ); HRESULT ClearIndexing(); HRESULT GetAcHuffmanTable( UINT scanIndex, [range(0, WIC_JPEG_MAX_TABLE_INDEX)] UINT tableIndex, [out] DXGI_JPEG_AC_HUFFMAN_TABLE* pAcHuffmanTable ); HRESULT GetDcHuffmanTable( UINT scanIndex, [range(0, WIC_JPEG_MAX_TABLE_INDEX)] UINT tableIndex, [out] DXGI_JPEG_DC_HUFFMAN_TABLE* pDcHuffmanTable ); HRESULT GetQuantizationTable( UINT scanIndex, [range(0, WIC_JPEG_MAX_TABLE_INDEX)] UINT tableIndex, [out] DXGI_JPEG_QUANTIZATION_TABLE *pQuantizationTable ); HRESULT GetFrameHeader( [out] WICJpegFrameHeader *pFrameHeader ); HRESULT GetScanHeader( UINT scanIndex, [out] WICJpegScanHeader *pScanHeader ); HRESULT CopyScan( UINT scanIndex, UINT scanOffset, [in] UINT cbScanData, [out, size_is(cbScanData), length_is(*pcbScanDataActual)] BYTE *pbScanData, [out] UINT *pcbScanDataActual ); HRESULT CopyMinimalStream( UINT streamOffset, [in] UINT cbStreamData, [out, size_is(cbStreamData), length_is(*pcbStreamDataActual)] BYTE *pbStreamData, [out] UINT *pcbStreamDataActual ); }; /*=========================================================================*\ IWICJpegFrameEncode \*=========================================================================*/ [ object, uuid(2F0C601F-D2C6-468C-ABFA-49495D983ED1) ] interface IWICJpegFrameEncode : IUnknown { HRESULT GetAcHuffmanTable( UINT scanIndex, [range(0, WIC_JPEG_MAX_TABLE_INDEX)] UINT tableIndex, [out] DXGI_JPEG_AC_HUFFMAN_TABLE* pAcHuffmanTable ); HRESULT GetDcHuffmanTable( UINT scanIndex, [range(0, WIC_JPEG_MAX_TABLE_INDEX)] UINT tableIndex, [out] DXGI_JPEG_DC_HUFFMAN_TABLE* pDcHuffmanTable ); HRESULT GetQuantizationTable( UINT scanIndex, [range(0, WIC_JPEG_MAX_TABLE_INDEX)] UINT tableIndex, [out] DXGI_JPEG_QUANTIZATION_TABLE *pQuantizationTable ); HRESULT WriteScan( [in] UINT cbScanData, [in, size_is(cbScanData)] const BYTE *pbScanData ); };