]>
Commit | Line | Data |
---|---|---|
8bb4bdeb XL |
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 | }); |