1 // Copyright © 2015; Connor Hilarides 2 // Licensed under the MIT License <LICENSE.md> 3 //! Mappings for the contents of wincodec.h 4 pub type WICColor = ::UINT32; 5 pub type WICInProcPointer = *mut ::BYTE; 6 pub type REFWICPixelFormatGUID = ::REFGUID; 7 pub type WICPixelFormatGUID = ::GUID; 8 STRUCT!{struct WICRect { 9 X: ::INT, 10 Y: ::INT, 11 Width: ::INT, 12 Height: ::INT, 13 }} 14 ENUM!{enum WICColorContextType { 15 WICColorContextUninitialized = 0, 16 WICColorContextProfile = 0x1, 17 WICColorContextExifColorSpace = 0x2, 18 }} 19 ENUM!{enum WICBitmapCreateCacheOption { 20 WICBitmapNoCache = 0, 21 WICBitmapCacheOnDemand = 0x1, 22 WICBitmapCacheOnLoad = 0x2, 23 }} 24 ENUM!{enum WICDecodeOptions { 25 WICDecodeMetadataCacheOnDemand = 0, 26 WICDecodeMetadataCacheOnLoad = 0x1, 27 }} 28 ENUM!{enum WICBitmapEncoderCacheOption { 29 WICBitmapEncoderCacheInMemory = 0, 30 WICBitmapEncoderCacheTempFile = 0x1, 31 WICBitmapEncoderNoCache = 0x2, 32 }} 33 FLAGS!{enum WICComponentType { 34 WICDecoder = 0x1, 35 WICEncoder = 0x2, 36 WICPixelFormatConverter = 0x4, 37 WICMetadataReader = 0x8, 38 WICMetadataWriter = 0x10, 39 WICPixelFormat = 0x20, 40 WICAllComponents = 0x3f, 41 }} 42 FLAGS!{enum WICComponentEnumerateOptions { 43 WICComponentEnumerateDefault = 0, 44 WICComponentEnumerateRefresh = 0x1, 45 WICComponentEnumerateDisabled = 0x80000000, 46 WICComponentEnumerateUnsigned = 0x40000000, 47 WICComponentEnumerateBuiltInOnly = 0x20000000, 48 }} 49 #[allow(unused_qualifications)] 50 STRUCT!{struct WICBitmapPattern { 51 Position: ::ULARGE_INTEGER, 52 Length: ::ULONG, 53 Pattern: *mut ::BYTE, 54 Mask: *mut ::BYTE, 55 EndOfStream: ::BOOL, 56 }} 57 ENUM!{enum WICBitmapInterpolationMode { 58 WICBitmapInterpolationModeNearestNeighbor = 0, 59 WICBitmapInterpolationModeLinear = 0x1, 60 WICBitmapInterpolationModeCubic = 0x2, 61 WICBitmapInterpolationModeFant = 0x3, 62 }} 63 ENUM!{enum WICBitmapPaletteType { 64 WICBitmapPaletteTypeCustom = 0, 65 WICBitmapPaletteTypeMedianCut = 0x1, 66 WICBitmapPaletteTypeFixedBW = 0x2, 67 WICBitmapPaletteTypeFixedHalftone8 = 0x3, 68 WICBitmapPaletteTypeFixedHalftone27 = 0x4, 69 WICBitmapPaletteTypeFixedHalftone64 = 0x5, 70 WICBitmapPaletteTypeFixedHalftone125 = 0x6, 71 WICBitmapPaletteTypeFixedHalftone216 = 0x7, 72 WICBitmapPaletteTypeFixedHalftone252 = 0x8, 73 WICBitmapPaletteTypeFixedHalftone256 = 0x9, 74 WICBitmapPaletteTypeFixedGray4 = 0xa, 75 WICBitmapPaletteTypeFixedGray16 = 0xb, 76 WICBitmapPaletteTypeFixedGray256 = 0xc, 77 }} 78 pub const WICBitmapPaletteTypeFixedWebPalette: WICBitmapPaletteType = 79 WICBitmapPaletteTypeFixedHalftone216; 80 ENUM!{enum WICBitmapDitherType { 81 WICBitmapDitherTypeSolid = 0, 82 WICBitmapDitherTypeOrdered4x4 = 0x1, 83 WICBitmapDitherTypeOrdered8x8 = 0x2, 84 WICBitmapDitherTypeOrdered16x16 = 0x3, 85 WICBitmapDitherTypeSpiral4x4 = 0x4, 86 WICBitmapDitherTypeSpiral8x8 = 0x5, 87 WICBitmapDitherTypeDualSpiral4x4 = 0x6, 88 WICBitmapDitherTypeDualSpiral8x8 = 0x7, 89 WICBitmapDitherTypeErrorDiffusion = 0x8, 90 }} 91 pub const WICBitmapDitherTypeNone: WICBitmapDitherType = WICBitmapDitherTypeSolid; 92 ENUM!{enum WICBitmapAlphaChannelOption { 93 WICBitmapUseAlpha = 0, 94 WICBitmapUsePremultipliedAlpha = 0x1, 95 WICBitmapIgnoreAlpha = 0x2, 96 }} 97 FLAGS!{enum WICBitmapTransformOptions { 98 WICBitmapTransformRotate0 = 0, 99 WICBitmapTransformRotate90 = 0x1, 100 WICBitmapTransformRotate180 = 0x2, 101 WICBitmapTransformRotate270 = 0x3, 102 WICBitmapTransformFlipHorizontal = 0x8, 103 WICBitmapTransformFlipVertical = 0x10, 104 }} 105 FLAGS!{enum WICBitmapLockFlags { 106 WICBitmapLockRead = 0x1, 107 WICBitmapLockWrite = 0x2, 108 }} 109 FLAGS!{enum WICBitmapDecoderCapabilities { 110 WICBitmapDecoderCapabilitySameEncoder = 0x1, 111 WICBitmapDecoderCapabilityCanDecodeAllImages = 0x2, 112 WICBitmapDecoderCapabilityCanDecodeSomeImages = 0x4, 113 WICBitmapDecoderCapabilityCanEnumerateMetadata = 0x8, 114 WICBitmapDecoderCapabilityCanDecodeThumbnail = 0x10, 115 }} 116 FLAGS!{enum WICProgressOperation { 117 WICProgressOperationCopyPixels = 0x1, 118 WICProgressOperationWritePixels = 0x2, 119 WICProgressOperationAll = 0xffff, 120 }} 121 FLAGS!{enum WICProgressNotification { 122 WICProgressNotificationBegin = 0x10000, 123 WICProgressNotificationEnd = 0x20000, 124 WICProgressNotificationFrequent = 0x40000, 125 WICProgressNotificationAll = 0xffff0000, 126 }} 127 FLAGS!{enum WICComponentSigning { 128 WICComponentSigned = 0x1, 129 WICComponentUnsigned = 0x2, 130 WICComponentSafe = 0x4, 131 WICComponentDisabled = 0x80000000, 132 }} 133 ENUM!{enum WICGifLogicalScreenDescriptorProperties { 134 WICGifLogicalScreenSignature = 0x1, 135 WICGifLogicalScreenDescriptorWidth = 0x2, 136 WICGifLogicalScreenDescriptorHeight = 0x3, 137 WICGifLogicalScreenDescriptorGlobalColorTableFlag = 0x4, 138 WICGifLogicalScreenDescriptorColorResolution = 0x5, 139 WICGifLogicalScreenDescriptorSortFlag = 0x6, 140 WICGifLogicalScreenDescriptorGlobalColorTableSize = 0x7, 141 WICGifLogicalScreenDescriptorBackgroundColorIndex = 0x8, 142 WICGifLogicalScreenDescriptorPixelAspectRatio = 0x9, 143 }} 144 ENUM!{enum WICGifImageDescriptorProperties { 145 WICGifImageDescriptorLeft = 0x1, 146 WICGifImageDescriptorTop = 0x2, 147 WICGifImageDescriptorWidth = 0x3, 148 WICGifImageDescriptorHeight = 0x4, 149 WICGifImageDescriptorLocalColorTableFlag = 0x5, 150 WICGifImageDescriptorInterlaceFlag = 0x6, 151 WICGifImageDescriptorSortFlag = 0x7, 152 WICGifImageDescriptorLocalColorTableSize = 0x8, 153 }} 154 ENUM!{enum WICGifGraphicControlExtensionProperties { 155 WICGifGraphicControlExtensionDisposal = 0x1, 156 WICGifGraphicControlExtensionUserInputFlag = 0x2, 157 WICGifGraphicControlExtensionTransparencyFlag = 0x3, 158 WICGifGraphicControlExtensionDelay = 0x4, 159 WICGifGraphicControlExtensionTransparentColorIndex = 0x5, 160 }} 161 ENUM!{enum WICGifApplicationExtensionProperties { 162 WICGifApplicationExtensionApplication = 0x1, 163 WICGifApplicationExtensionData = 0x2, 164 }} 165 ENUM!{enum WICGifCommentExtensionProperties { 166 WICGifCommentExtensionText = 0x1, 167 }} 168 ENUM!{enum WICJpegCommentProperties { 169 WICJpegCommentText = 0x1, 170 }} 171 ENUM!{enum WICJpegLuminanceProperties { 172 WICJpegLuminanceTable = 0x1, 173 }} 174 ENUM!{enum WICJpegChrominanceProperties { 175 WICJpegChrominanceTable = 0x1, 176 }} 177 ENUM!{enum WIC8BIMIptcProperties { 178 WIC8BIMIptcPString = 0, 179 WIC8BIMIptcEmbeddedIPTC = 0x1, 180 }} 181 ENUM!{enum WIC8BIMResolutionInfoProperties { 182 WIC8BIMResolutionInfoPString = 0x1, 183 WIC8BIMResolutionInfoHResolution = 0x2, 184 WIC8BIMResolutionInfoHResolutionUnit = 0x3, 185 WIC8BIMResolutionInfoWidthUnit = 0x4, 186 WIC8BIMResolutionInfoVResolution = 0x5, 187 WIC8BIMResolutionInfoVResolutionUnit = 0x6, 188 WIC8BIMResolutionInfoHeightUnit = 0x7, 189 }} 190 ENUM!{enum WIC8BIMIptcDigestProperties { 191 WIC8BIMIptcDigestPString = 0x1, 192 WIC8BIMIptcDigestIptcDigest = 0x2, 193 }} 194 ENUM!{enum WICPngGamaProperties { 195 WICPngGamaGamma = 0x1, 196 }} 197 ENUM!{enum WICPngBkgdProperties { 198 WICPngBkgdBackgroundColor = 0x1, 199 }} 200 ENUM!{enum WICPngItxtProperties { 201 WICPngItxtKeyword = 0x1, 202 WICPngItxtCompressionFlag = 0x2, 203 WICPngItxtLanguageTag = 0x3, 204 WICPngItxtTranslatedKeyword = 0x4, 205 WICPngItxtText = 0x5, 206 }} 207 ENUM!{enum WICPngChrmProperties { 208 WICPngChrmWhitePointX = 0x1, 209 WICPngChrmWhitePointY = 0x2, 210 WICPngChrmRedX = 0x3, 211 WICPngChrmRedY = 0x4, 212 WICPngChrmGreenX = 0x5, 213 WICPngChrmGreenY = 0x6, 214 WICPngChrmBlueX = 0x7, 215 WICPngChrmBlueY = 0x8, 216 }} 217 ENUM!{enum WICPngHistProperties { 218 WICPngHistFrequencies = 0x1, 219 }} 220 ENUM!{enum WICPngIccpProperties { 221 WICPngIccpProfileName = 0x1, 222 WICPngIccpProfileData = 0x2, 223 }} 224 ENUM!{enum WICPngSrgbProperties { 225 WICPngSrgbRenderingIntent = 0x1, 226 }} 227 ENUM!{enum WICPngTimeProperties { 228 WICPngTimeYear = 0x1, 229 WICPngTimeMonth = 0x2, 230 WICPngTimeDay = 0x3, 231 WICPngTimeHour = 0x4, 232 WICPngTimeMinute = 0x5, 233 WICPngTimeSecond = 0x6, 234 }} 235 ENUM!{enum WICSectionAccessLevel { 236 WICSectionAccessLevelRead = 0x1, 237 WICSectionAccessLevelReadWrite = 0x3, 238 }} 239 ENUM!{enum WICPixelFormatNumericRepresentation { 240 WICPixelFormatNumericRepresentationUnspecified = 0, 241 WICPixelFormatNumericRepresentationIndexed = 0x1, 242 WICPixelFormatNumericRepresentationUnsignedInteger = 0x2, 243 WICPixelFormatNumericRepresentationSignedInteger = 0x3, 244 WICPixelFormatNumericRepresentationFixed = 0x4, 245 WICPixelFormatNumericRepresentationFloat = 0x5, 246 }} 247 ENUM!{enum WICPlanarOptions { 248 WICPlanarOptionsDefault = 0, 249 WICPlanarOptionsPreserveSubsampling = 0x1, 250 }} 251 #[allow(unused_qualifications)] 252 STRUCT!{struct WICImageParameters { 253 PixelFormat: ::D2D1_PIXEL_FORMAT, 254 DpiX: ::FLOAT, 255 DpiY: ::FLOAT, 256 Top: ::FLOAT, 257 Left: ::FLOAT, 258 PixelWidth: ::FLOAT, 259 PixelHeight: ::FLOAT, 260 }} 261 #[allow(unused_qualifications)] 262 STRUCT!{struct WICBitmapPlaneDescription { 263 Format: WICPixelFormatGUID, 264 Width: ::UINT, 265 Height: ::UINT, 266 }} 267 #[allow(unused_qualifications)] 268 STRUCT!{struct WICBitmapPlane { 269 Format: WICPixelFormatGUID, 270 pbBuffer: *mut ::BYTE, 271 cbStride: ::UINT, 272 cbBufferSize: ::UINT, 273 }} 274 RIDL!( 275 interface IWICPalette(IWICPaletteVtbl): IUnknown(IUnknownVtbl) { 276 fn InitializePredefined( 277 &mut self, ePaletteType: WICBitmapPaletteType, fAddTransparentColor: ::BOOL 278 ) -> ::HRESULT, 279 fn InitializeCustom(&mut self, pColors: *mut WICColor, cCount: ::UINT) -> ::HRESULT, 280 fn InitializeFromBitmap( 281 &mut self, pISurface: *mut IWICBitmapSource, cCount: ::UINT, fAddTransparentColor: ::BOOL 282 ) -> ::HRESULT, 283 fn InitializeFromPalette(&mut self, pIPalette: *mut IWICPalette) -> ::HRESULT, 284 fn GetType(&mut self, pePaletteType: *mut WICBitmapPaletteType) -> ::HRESULT, 285 fn GetColorCount(&mut self, pcCount: *mut ::UINT) -> ::HRESULT, 286 fn GetColors( 287 &mut self, cCount: ::UINT, pColros: *mut WICColor, pcActualColors: *mut ::UINT 288 ) -> ::HRESULT, 289 fn IsBlackWhite(&mut self, pfIsBlackWhite: *mut ::BOOL) -> ::HRESULT, 290 fn IsGrayscale(&mut self, pfIsGrayscale: *mut ::BOOL) -> ::HRESULT, 291 fn HasAlpha(&mut self, pfHasAlpha: *mut ::BOOL) -> ::HRESULT 292 }); 293 RIDL!( 294 interface IWICBitmapSource(IWICBitmapSourceVtbl): IUnknown(IUnknownVtbl) { 295 fn GetSize(&mut self, puiWidth: *mut ::UINT, puiHeight: ::UINT) -> ::HRESULT, 296 fn GetPixelFormat(&mut self, pPixelFormat: *mut WICPixelFormatGUID) -> ::HRESULT, 297 fn GetResolution(&mut self, pDpiX: *mut f64, pDpiY: *mut f64) -> ::HRESULT, 298 fn CopyPalette(&mut self, pIPalette: *mut IWICPalette) -> ::HRESULT, 299 fn CopyPixels( 300 &mut self, prc: *const WICRect, cbStride: ::UINT, cbBufferSize: ::UINT, 301 pbBuffer: *mut ::BYTE 302 ) -> ::HRESULT 303 }); 304 RIDL!( 305 interface IWICFormatConverter(IWICFormatConverterVtbl): IWICBitmapSource(IWICBitmapSourceVtbl) { 306 fn Initialize( 307 &mut self, pISource: *mut IWICBitmapSource, dstFormat: REFWICPixelFormatGUID, 308 dither: WICBitmapDitherType, pIPalette: *mut IWICPalette, alphaThreasholdPercent: f64, 309 paletteTranslate: WICBitmapPaletteType 310 ) -> ::HRESULT, 311 fn CanConvert( 312 &mut self, srcPixelFormat: REFWICPixelFormatGUID, dstPixelFormat: REFWICPixelFormatGUID, 313 pfCanConvert: *mut ::BOOL 314 ) -> ::HRESULT 315 }); 316 RIDL!( 317 interface IWICPlanarFormatConverter(IWICPlanarFormatConverterVtbl) 318 : IWICBitmapSource(IWICBitmapSourceVtbl) { 319 fn Initialize( 320 &mut self, ppPlanes: *mut *mut IWICBitmapSource, cPlanes: ::UINT, 321 dstFormat: REFWICPixelFormatGUID, dither: WICBitmapDitherType, pIPalette: *mut IWICPalette, 322 alphaThreasholdPercent: f64, paletteTranslate: WICBitmapPaletteType 323 ) -> ::HRESULT, 324 fn CanConvert( 325 &mut self, pSrcPixelFormats: *const WICPixelFormatGUID, cSrcPlanes: ::UINT, 326 dstPixelFormat: REFWICPixelFormatGUID, pfCanConvert: *mut ::BOOL 327 ) -> ::HRESULT 328 }); 329 RIDL!( 330 interface IWICBitmapScaler(IWICBitmapScalerVtbl): IWICBitmapSource(IWICBitmapSourceVtbl) { 331 fn Initialize( 332 &mut self, pISource: *mut IWICBitmapSource, uiWidth: ::UINT, uiHeight: ::UINT, 333 mode: WICBitmapInterpolationMode 334 ) -> ::HRESULT 335 }); 336 RIDL!( 337 interface IWICBitmapClipper(IWICBitmapClipperVtbl): IWICBitmapSource(IWICBitmapSourceVtbl) { 338 fn Initialize(&mut self, pISource: *mut IWICBitmapSource, prc: *const WICRect) -> ::HRESULT 339 }); 340 RIDL!( 341 interface IWICBitmapFlipRotator(IWICBitmapFlipRotatorVtbl) 342 : IWICBitmapSource(IWICBitmapSourceVtbl) { 343 fn Initialize( 344 &mut self, pISource: *mut IWICBitmapSource, options: WICBitmapTransformOptions 345 ) -> ::HRESULT 346 }); 347 RIDL!( 348 interface IWICBitmapLock(IWICBitmapLockVtbl): IUnknown(IUnknownVtbl) { 349 fn GetSize(&mut self, puiWidth: *mut ::UINT, puiHeight: *mut ::UINT) -> ::HRESULT, 350 fn GetStride(&mut self, pcbStride: *mut ::UINT) -> ::HRESULT, 351 fn GetDataPointer( 352 &mut self, pcbBufferSize: *mut ::UINT, ppbData: *mut WICInProcPointer 353 ) -> ::HRESULT, 354 fn GetPixelFormat(&mut self, pPixelFormat: *mut WICPixelFormatGUID) -> ::HRESULT 355 }); 356 RIDL!( 357 interface IWICBitmap(IWICBitmapVtbl): IWICBitmapSource(IWICBitmapSourceVtbl) { 358 fn Lock( 359 &mut self, prcLock: *const WICRect, flags: ::DWORD, ppILock: *mut *mut IWICBitmapLock 360 ) -> ::HRESULT, 361 fn SetPalette(&mut self, pIPalette: *mut IWICPalette) -> ::HRESULT, 362 fn SetResolution(&mut self, dpiX: f64, dpiY: f64) -> ::HRESULT 363 }); 364