/*++ 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_WICJpegQualcommPhoneEncoder, 0x68ed5c62, 0xf534, 0x4979, 0xb2, 0xb3, 0x68, 0x6a, 0x12, 0xb2, 0xb3, 0x4c);") /*=========================================================================*\ 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);") /*=========================================================================*\ 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);") /* 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);") /* 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; /*=========================================================================*\ WICGifLogicalScreenDescriptorProperties \*=========================================================================*/ typedef [public] enum WICGifLogicalScreenDescriptorProperties { // This part is for Logical Screen Descriptor WICGifLogicalScreenSignature = 0x00000001, WICGifLogicalScreenDescriptorWidth = 0x00000002, WICGifLogicalScreenDescriptorHeight = 0x00000003, WICGifLogicalScreenDescriptorGlobalColorTableFlag = 0x00000004, WICGifLogicalScreenDescriptorColorResolution = 0x00000005, WICGifLogicalScreenDescriptorSortFlag = 0x00000006, WICGifLogicalScreenDescriptorGlobalColorTableSize = 0x00000007, WICGifLogicalScreenDescriptorBackgroundColorIndex = 0x00000008, WICGifLogicalScreenDescriptorPixelAspectRatio = 0x00000009, WICGifLogicalScreenDescriptorProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WICGifLogicalScreenDescriptorProperties; /*=========================================================================*\ WICGifImageDescriptorProperties \*=========================================================================*/ typedef [public] enum WICGifImageDescriptorProperties { // This part is for Image Descriptor WICGifImageDescriptorLeft = 0x00000001, WICGifImageDescriptorTop = 0x00000002, WICGifImageDescriptorWidth = 0x00000003, WICGifImageDescriptorHeight = 0x00000004, WICGifImageDescriptorLocalColorTableFlag = 0x00000005, WICGifImageDescriptorInterlaceFlag = 0x00000006, WICGifImageDescriptorSortFlag = 0x00000007, WICGifImageDescriptorLocalColorTableSize = 0x00000008, WICGifImageDescriptorProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WICGifImageDescriptorProperties; /*=========================================================================*\ WICGifGraphicControlExtensionProperties \*=========================================================================*/ typedef [public] enum WICGifGraphicControlExtensionProperties { // This part is for Graphic Control Extension WICGifGraphicControlExtensionDisposal = 0x00000001, WICGifGraphicControlExtensionUserInputFlag = 0x00000002, WICGifGraphicControlExtensionTransparencyFlag = 0x00000003, WICGifGraphicControlExtensionDelay = 0x00000004, WICGifGraphicControlExtensionTransparentColorIndex = 0x00000005, WICGifGraphicControlExtensionProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WICGifGraphicControlExtensionProperties; /*=========================================================================*\ WICGifApplicationExtensionProperties \*=========================================================================*/ typedef [public] enum WICGifApplicationExtensionProperties { // This part is for Application Extension WICGifApplicationExtensionApplication = 0x00000001, WICGifApplicationExtensionData = 0x00000002, WICGifApplicationExtensionProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WICGifApplicationExtensionProperties; /*=========================================================================*\ WICGifCommentExtensionProperties \*=========================================================================*/ typedef [public] enum WICGifCommentExtensionProperties { WICGifCommentExtensionText = 0x00000001, WICGifCommentExtensionProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WICGifCommentExtensionProperties; /*=========================================================================*\ WICJpegCommentProperties \*=========================================================================*/ typedef [public] enum WICJpegCommentProperties { WICJpegCommentText = 0x00000001, WICJpegCommentProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WICJpegCommentProperties; /*=========================================================================*\ WICJpegLuminanceProperties \*=========================================================================*/ typedef [public] enum WICJpegLuminanceProperties { WICJpegLuminanceTable = 0x00000001, WICJpegLuminanceProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WICJpegLuminanceProperties; /*=========================================================================*\ WICJpegChrominanceProperties \*=========================================================================*/ typedef [public] enum WICJpegChrominanceProperties { WICJpegChrominanceTable = 0x00000001, WICJpegChrominanceProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WICJpegChrominanceProperties; /*=========================================================================*\ WIC8BIMIptcProperties \*=========================================================================*/ typedef [public] enum WIC8BIMIptcProperties { WIC8BIMIptcPString = 0x00000000, WIC8BIMIptcEmbeddedIPTC = 0x00000001, WIC8BIMIptcProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WIC8BIMIptcProperties; /*=========================================================================*\ WIC8BIMResolutionInfoProperties \*=========================================================================*/ typedef [public] enum WIC8BIMResolutionInfoProperties { WIC8BIMResolutionInfoPString = 0x00000001, WIC8BIMResolutionInfoHResolution = 0x00000002, WIC8BIMResolutionInfoHResolutionUnit = 0x00000003, WIC8BIMResolutionInfoWidthUnit = 0x00000004, WIC8BIMResolutionInfoVResolution = 0x00000005, WIC8BIMResolutionInfoVResolutionUnit = 0x00000006, WIC8BIMResolutionInfoHeightUnit = 0x00000007, WIC8BIMResolutionInfoProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WIC8BIMResolutionInfoProperties; /*=========================================================================*\ WIC8BIMIptcDigestProperties \*=========================================================================*/ typedef [public] enum WIC8BIMIptcDigestProperties { WIC8BIMIptcDigestPString = 0x00000001, WIC8BIMIptcDigestIptcDigest = 0x00000002, WIC8BIMIptcDigestProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WIC8BIMIptcDigestProperties; /*=========================================================================*\ WICPngGamaProperties \*=========================================================================*/ typedef [public] enum WICPngGamaProperties { WICPngGamaGamma = 0x00000001, WICPngGamaProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WICPngGamaProperties; /*=========================================================================*\ WICPngBkgdProperties \*=========================================================================*/ typedef [public] enum WICPngBkgdProperties { WICPngBkgdBackgroundColor = 0x00000001, WICPngBkgdProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WICPngBkgdProperties; /*=========================================================================*\ WICPngItxtProperties \*=========================================================================*/ typedef [public] enum WICPngItxtProperties { WICPngItxtKeyword = 0x00000001, WICPngItxtCompressionFlag = 0x00000002, WICPngItxtLanguageTag = 0x00000003, WICPngItxtTranslatedKeyword = 0x00000004, WICPngItxtText = 0x00000005, WICPngItxtProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WICPngItxtProperties; /*=========================================================================*\ WICPngChrmProperties \*=========================================================================*/ typedef [public] enum WICPngChrmProperties { WICPngChrmWhitePointX = 0x00000001, WICPngChrmWhitePointY = 0x00000002, WICPngChrmRedX = 0x00000003, WICPngChrmRedY = 0x00000004, WICPngChrmGreenX = 0x00000005, WICPngChrmGreenY = 0x00000006, WICPngChrmBlueX = 0x00000007, WICPngChrmBlueY = 0x0000008, WICPngChrmProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WICPngChrmProperties; /*=========================================================================*\ WICPngHistProperties \*=========================================================================*/ typedef [public] enum WICPngHistProperties { WICPngHistFrequencies = 0x00000001, WICPngHistProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WICPngHistProperties; /*=========================================================================*\ WICPngIccpProperties \*=========================================================================*/ typedef [public] enum WICPngIccpProperties { WICPngIccpProfileName = 0x00000001, WICPngIccpProfileData = 0x00000002, WICPngIccpProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WICPngIccpProperties; /*=========================================================================*\ WICPngSrgbProperties \*=========================================================================*/ typedef [public] enum WICPngSrgbProperties { WICPngSrgbRenderingIntent = 0x00000001, WICPngSrgbProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WICPngSrgbProperties; /*=========================================================================*\ WICPngTimeProperties \*=========================================================================*/ typedef [public] enum WICPngTimeProperties { WICPngTimeYear = 0x00000001, WICPngTimeMonth = 0x00000002, WICPngTimeDay = 0x00000003, WICPngTimeHour = 0x00000004, WICPngTimeMinute = 0x00000005, WICPngTimeSecond = 0x00000006, WICPngTimeProperties_FORCE_DWORD = CODEC_FORCE_DWORD } WICPngTimeProperties; /*=========================================================================*\ WICSectionAccessLevel \*=========================================================================*/ typedef [public] enum WICSectionAccessLevel { WICSectionAccessLevelRead = 0x00000001, WICSectionAccessLevelReadWrite = 0x00000003, WICSectionAccessLevel_FORCE_DWORD = CODEC_FORCE_DWORD } WICSectionAccessLevel; /*=========================================================================*\ WICPixelFormatNumericRepresentation \*=========================================================================*/ typedef [public] enum WICPixelFormatNumericRepresentation { WICPixelFormatNumericRepresentationUnspecified = 0x00000000, WICPixelFormatNumericRepresentationIndexed = 0x00000001, WICPixelFormatNumericRepresentationUnsignedInteger = 0x00000002, WICPixelFormatNumericRepresentationSignedInteger = 0x00000003, WICPixelFormatNumericRepresentationFixed = 0x00000004, WICPixelFormatNumericRepresentationFloat = 0x00000005, WICPixelFormatNumericRepresentation_FORCE_DWORD = CODEC_FORCE_DWORD } WICPixelFormatNumericRepresentation; /*=========================================================================*\ 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 ); }; /*=========================================================================*\ IWICBitmapLock - WIC Lock object for bitmaps. \*=========================================================================*/ [ object, uuid(00000123-a8f2-4877-ba0a-fd2b6645fb94) ] interface IWICBitmapLock : IUnknown { HRESULT GetSize( [out] UINT *puiWidth, [out] UINT *puiHeight ); HRESULT GetStride( [out] UINT *pcbStride ); HRESULT GetDataPointer( [out] UINT *pcbBufferSize, [out, size_is( , *pcbBufferSize)] WICInProcPointer *ppbData ); HRESULT GetPixelFormat( [out] WICPixelFormatGUID *pPixelFormat ); }; /*=========================================================================*\ IWICBitmap - WIC Bitmap cache interface \*=========================================================================*/ [ object, uuid(00000121-a8f2-4877-ba0a-fd2b6645fb94) ] interface IWICBitmap : IWICBitmapSource { HRESULT Lock( [in, unique] const WICRect *prcLock, [in] DWORD flags, [out] IWICBitmapLock **ppILock ); HRESULT SetPalette( [in] IWICPalette *pIPalette ); HRESULT SetResolution( [in] double dpiX, [in] double dpiY ); }; /*=========================================================================*\ IWICColorContext - WIC color context \*=========================================================================*/ [ object, uuid(3C613A02-34B2-44ea-9A7C-45AEA9C6FD6D) ] interface IWICColorContext : IUnknown { HRESULT InitializeFromFilename( [in] LPCWSTR wzFilename ); HRESULT InitializeFromMemory( [in, size_is(cbBufferSize)] const BYTE *pbBuffer, [in] UINT cbBufferSize ); HRESULT InitializeFromExifColorSpace( [in] UINT value ); HRESULT GetType( [out] WICColorContextType *pType ); HRESULT GetProfileBytes( [in] UINT cbBuffer, [in, out, unique, size_is(cbBuffer)] BYTE *pbBuffer, [out] UINT *pcbActual ); HRESULT GetExifColorSpace( [out] UINT *pValue ); }; /*=========================================================================*\ IWICColorTransform - WIC color transform \*=========================================================================*/ [ object, uuid(B66F034F-D0E2-40ab-B436-6DE39E321A94) ] interface IWICColorTransform : IWICBitmapSource { HRESULT Initialize( [in] IWICBitmapSource *pIBitmapSource, [in] IWICColorContext *pIContextSource, [in] IWICColorContext *pIContextDest, [in] REFWICPixelFormatGUID pixelFmtDest ); }; /*=========================================================================*\ IWICFastMetadataEncoder \*=========================================================================*/ [ object, uuid(B84E2C09-78C9-4AC4-8BD3-524AE1663A2F) ] interface IWICFastMetadataEncoder : IUnknown { HRESULT Commit( ); HRESULT GetMetadataQueryWriter( [out] IWICMetadataQueryWriter **ppIMetadataQueryWriter ); }; /*=========================================================================*\ IWICStream - WIC Bitmap Stream \*=========================================================================*/ [ object, uuid(135FF860-22B7-4ddf-B0F6-218F4F299A43) ] interface IWICStream : IStream { HRESULT InitializeFromIStream( [in] IStream *pIStream ); HRESULT InitializeFromFilename( [in] LPCWSTR wzFileName, [in] DWORD dwDesiredAccess ); HRESULT InitializeFromMemory( [in, size_is(cbBufferSize)] WICInProcPointer pbBuffer, [in] DWORD cbBufferSize ); HRESULT InitializeFromIStreamRegion( [in] IStream *pIStream, [in] ULARGE_INTEGER ulOffset, [in] ULARGE_INTEGER ulMaxSize ); }; /*=========================================================================*\ IWICEnumMetadataItem \*=========================================================================*/ [ object, uuid(DC2BB46D-3F07-481E-8625-220C4AEDBB33) ] interface IWICEnumMetadataItem : IUnknown { HRESULT Next( [in] ULONG celt, [in, out, unique, size_is(celt)] PROPVARIANT *rgeltSchema, [in, out, size_is(celt)] PROPVARIANT *rgeltId, [in, out, optional, size_is(celt)] PROPVARIANT *rgeltValue, [out, optional] ULONG *pceltFetched ); HRESULT Skip( [in] ULONG celt ) ; HRESULT Reset(); HRESULT Clone( [out] IWICEnumMetadataItem **ppIEnumMetadataItem ); } /*=========================================================================*\ IWICMetadataQueryReader - Metadata Query Reader \*=========================================================================*/ [ object, uuid(30989668-E1C9-4597-B395-458EEDB808DF) ] interface IWICMetadataQueryReader : IUnknown { HRESULT GetContainerFormat( [out] GUID *pguidContainerFormat ); HRESULT GetLocation( [in] UINT cchMaxLength, [in, out, unique, size_is(cchMaxLength)] WCHAR *wzNamespace, [out] UINT *pcchActualLength ); HRESULT GetMetadataByName( [in] LPCWSTR wzName, [in, out, unique] PROPVARIANT *pvarValue ); HRESULT GetEnumerator( [out] IEnumString **ppIEnumString ); } /*=========================================================================*\ IWICMetadataQueryWriter - Metadata Query Writer \*=========================================================================*/ [ object, uuid(A721791A-0DEF-4d06-BD91-2118BF1DB10B) ] interface IWICMetadataQueryWriter : IWICMetadataQueryReader { HRESULT SetMetadataByName( [in] LPCWSTR wzName, [in] const PROPVARIANT *pvarValue ); HRESULT RemoveMetadataByName( [in] LPCWSTR wzName ); } /*=========================================================================*\ IWICBitmapEncoder - Bitmap Encoder \*=========================================================================*/ [ object, uuid(00000103-a8f2-4877-ba0a-fd2b6645fb94) ] interface IWICBitmapEncoder : IUnknown { HRESULT Initialize( [in] IStream *pIStream, [in] WICBitmapEncoderCacheOption cacheOption ); HRESULT GetContainerFormat( [out] GUID *pguidContainerFormat ); HRESULT GetEncoderInfo( [out] IWICBitmapEncoderInfo **ppIEncoderInfo ); HRESULT SetColorContexts( [in] UINT cCount, [in, size_is(cCount)] IWICColorContext **ppIColorContext ); HRESULT SetPalette( [in] IWICPalette *pIPalette ); HRESULT SetThumbnail( [in] IWICBitmapSource *pIThumbnail ); HRESULT SetPreview( [in] IWICBitmapSource *pIPreview ); HRESULT CreateNewFrame( [out] IWICBitmapFrameEncode **ppIFrameEncode, [in, out, unique] IPropertyBag2 **ppIEncoderOptions ); HRESULT Commit( ); HRESULT GetMetadataQueryWriter( [out] IWICMetadataQueryWriter **ppIMetadataQueryWriter ); }; /*=========================================================================*\ IWICBitmapFrameEncode - Bitmap Frame Encoder \*=========================================================================*/ [ object, uuid(00000105-a8f2-4877-ba0a-fd2b6645fb94) ] interface IWICBitmapFrameEncode : IUnknown { HRESULT Initialize( [in, unique] IPropertyBag2 *pIEncoderOptions ); HRESULT SetSize( [in] UINT uiWidth, [in] UINT uiHeight ); HRESULT SetResolution( [in] double dpiX, [in] double dpiY ); HRESULT SetPixelFormat( [in, out] WICPixelFormatGUID *pPixelFormat ); HRESULT SetColorContexts( [in] UINT cCount, [in, size_is(cCount)] IWICColorContext **ppIColorContext ); HRESULT SetPalette( [in] IWICPalette *pIPalette ); HRESULT SetThumbnail( [in] IWICBitmapSource *pIThumbnail ); HRESULT WritePixels( [in] UINT lineCount, [in] UINT cbStride, [in] UINT cbBufferSize, [in, size_is(cbBufferSize)] BYTE *pbPixels ); HRESULT WriteSource( [in] IWICBitmapSource *pIBitmapSource, [in, unique] WICRect *prc ); HRESULT Commit( ); HRESULT GetMetadataQueryWriter( [out] IWICMetadataQueryWriter **ppIMetadataQueryWriter ); }; /*=========================================================================*\ 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 ); }; /*=========================================================================*\ 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 ); }; /*=========================================================================*\ IWICProgressiveLevelControl - Progressive Decoding \*=========================================================================*/ [ object, uuid(DAAC296F-7AA5-4dbf-8D15-225C5976F891) ] interface IWICProgressiveLevelControl : IUnknown { HRESULT GetLevelCount( [out, retval] UINT * pcLevels ); HRESULT GetCurrentLevel( [out, retval] UINT * pnLevel ); HRESULT SetCurrentLevel( [in] UINT nLevel ); } /*=========================================================================*\ IWICProgressCallback - Cross apartment callback interface \*=========================================================================*/ [ object, uuid(4776F9CD-9517-45FA-BF24-E89C5EC5C60C) ] interface IWICProgressCallback : IUnknown { HRESULT Notify( [in] ULONG uFrameNum, [in] WICProgressOperation operation, [in] double dblProgress ); } /*=========================================================================*\ IWICBitmapCodecProgressNotification - Register Progress Notifications \*=========================================================================*/ [ object, uuid(64C1024E-C3CF-4462-8078-88C2B11C46D9) ] interface IWICBitmapCodecProgressNotification : IUnknown { typedef [unique] HRESULT __stdcall (*PFNProgressNotification)( LPVOID pvData, ULONG uFrameNum, WICProgressOperation operation, double dblProgress ); [local] HRESULT RegisterProgressNotification( [in, unique, annotation("_In_opt_")] PFNProgressNotification pfnProgressNotification, [in, unique, annotation("_In_opt_")] LPVOID pvData, [in] DWORD dwProgressFlags /* WICProgressOperation | WICProgressNotification */ ); [call_as(RegisterProgressNotification)] HRESULT Remote_RegisterProgressNotification( [in, unique] IWICProgressCallback *pICallback, [in] DWORD dwProgressFlags ); }; /*=========================================================================*\ IWICComponentInfo \*=========================================================================*/ [ object, uuid(23BC3F0A-698B-4357-886B-F24D50671334) ] interface IWICComponentInfo : IUnknown { HRESULT GetComponentType( [out] WICComponentType *pType ); HRESULT GetCLSID( [out] CLSID *pclsid ); HRESULT GetSigningStatus( [out] DWORD * pStatus // WICComponentSigning flags ); HRESULT GetAuthor( [in] UINT cchAuthor, [in, out, unique, size_is(cchAuthor)] WCHAR *wzAuthor, [out] UINT *pcchActual ); HRESULT GetVendorGUID( [out] GUID *pguidVendor ); HRESULT GetVersion( [in] UINT cchVersion, [in, out, unique, size_is(cchVersion)] WCHAR *wzVersion, [out] UINT *pcchActual ); HRESULT GetSpecVersion( [in] UINT cchSpecVersion, [in, out, unique, size_is(cchSpecVersion)] WCHAR *wzSpecVersion, [out] UINT *pcchActual ); HRESULT GetFriendlyName( [in] UINT cchFriendlyName, [in, out, unique, size_is(cchFriendlyName)] WCHAR *wzFriendlyName, [out] UINT *pcchActual ); }; /*=========================================================================*\ IWICFormatConverterInfo \*=========================================================================*/ [ object, uuid(9F34FB65-13F4-4f15-BC57-3726B5E53D9F) ] interface IWICFormatConverterInfo : IWICComponentInfo { HRESULT GetPixelFormats( [in] UINT cFormats, [in, out, unique, size_is(cFormats)] WICPixelFormatGUID * pPixelFormatGUIDs, [out] UINT *pcActual); HRESULT CreateInstance( [out] IWICFormatConverter **ppIConverter); } /*=========================================================================*\ IWICBitmapCodecInfo \*=========================================================================*/ [ object, uuid(E87A44C4-B76E-4c47-8B09-298EB12A2714) ] interface IWICBitmapCodecInfo : IWICComponentInfo { HRESULT GetContainerFormat( [out] GUID *pguidContainerFormat ); HRESULT GetPixelFormats( [in] UINT cFormats, [in, out, unique, size_is(cFormats)] GUID *pguidPixelFormats, [out] UINT *pcActual); HRESULT GetColorManagementVersion( [in] UINT cchColorManagementVersion, [in, out, unique, size_is(cchColorManagementVersion)] WCHAR *wzColorManagementVersion, [out] UINT *pcchActual ); HRESULT GetDeviceManufacturer( [in] UINT cchDeviceManufacturer, [in, out, unique, size_is(cchDeviceManufacturer)] WCHAR *wzDeviceManufacturer, [out] UINT *pcchActual ); HRESULT GetDeviceModels( [in] UINT cchDeviceModels, [in, out, unique, size_is(cchDeviceModels)] WCHAR *wzDeviceModels, [out] UINT *pcchActual ); HRESULT GetMimeTypes( [in] UINT cchMimeTypes, [in, out, unique, size_is(cchMimeTypes)] WCHAR *wzMimeTypes, [out] UINT *pcchActual ); HRESULT GetFileExtensions( [in] UINT cchFileExtensions, [in, out, unique, size_is(cchFileExtensions)] WCHAR *wzFileExtensions, [out] UINT *pcchActual ); HRESULT DoesSupportAnimation( [out] BOOL *pfSupportAnimation ); HRESULT DoesSupportChromakey( [out] BOOL *pfSupportChromakey ); HRESULT DoesSupportLossless( [out] BOOL *pfSupportLossless ); HRESULT DoesSupportMultiframe( [out] BOOL *pfSupportMultiframe ); HRESULT MatchesMimeType( [in] LPCWSTR wzMimeType, [out] BOOL *pfMatches ); }; /*=========================================================================*\ IWICBitmapEncoderInfo \*=========================================================================*/ [ object, uuid(94C9B4EE-A09F-4f92-8A1E-4A9BCE7E76FB) ] interface IWICBitmapEncoderInfo : IWICBitmapCodecInfo { HRESULT CreateInstance( [out] IWICBitmapEncoder **ppIBitmapEncoder ); }; /*=========================================================================*\ IWICBitmapDecoderInfo \*=========================================================================*/ [ object, uuid(D8CD007F-D08F-4191-9BFC-236EA7F0E4B5) ] interface IWICBitmapDecoderInfo : IWICBitmapCodecInfo { [local] HRESULT GetPatterns( [in] UINT cbSizePatterns, [out, size_is(*pcPatterns), unique, annotation("_Out_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 ); }; 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; /*=========================================================================*\ 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 ); };