shlwapi/tests: Remove redundant NULL check before SysFreeString (Smatch).
[wine/multimedia.git] / include / gdiplusimaging.h
blob791d9cde306cd4dc722050dc6012a209a2a152d2
1 /*
2 * Copyright (C) 2007 Google (Evan Stade)
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #ifndef _GDIPLUSIMAGING_H
20 #define _GDIPLUSIMAGING_H
22 enum ImageLockMode
24 ImageLockModeRead = 1,
25 ImageLockModeWrite = 2,
26 ImageLockModeUserInputBuf = 4
29 #ifdef __cplusplus
30 class EncoderParameter
32 public:
33 GUID Guid;
34 ULONG NumberOfValues;
35 ULONG Type;
36 VOID* Value;
39 class EncoderParameters
41 public:
42 UINT Count;
43 EncoderParameter Parameter[1];
46 class ImageCodecInfo
48 public:
49 CLSID Clsid;
50 GUID FormatID;
51 const WCHAR* CodecName;
52 const WCHAR* DllName;
53 const WCHAR* FormatDescription;
54 const WCHAR* FilenameExtension;
55 const WCHAR* MimeType;
56 DWORD Flags;
57 DWORD Version;
58 DWORD SigCount;
59 DWORD SigSize;
60 const BYTE* SigPattern;
61 const BYTE* SigMask;
64 class BitmapData
66 public:
67 UINT Width;
68 UINT Height;
69 INT Stride;
70 PixelFormat PixelFormat;
71 VOID* Scan0;
72 UINT_PTR Reserved;
75 class ImageItemData
77 public:
78 UINT Size;
79 UINT Position;
80 VOID* Desc;
81 UINT DescSize;
82 VOID* Data;
83 UINT DataSize;
84 UINT Cookie;
87 class PropertyItem
89 public:
90 PROPID id;
91 ULONG length;
92 WORD type;
93 VOID* value;
96 #else /* end of c++ typedefs */
98 typedef enum ImageLockMode ImageLockMode;
100 typedef struct EncoderParameter
102 GUID Guid;
103 ULONG NumberOfValues;
104 ULONG Type;
105 VOID* Value;
106 } EncoderParameter;
108 typedef struct EncoderParameters
110 UINT Count;
111 EncoderParameter Parameter[1];
112 } EncoderParameters;
114 typedef struct ImageCodecInfo
116 CLSID Clsid;
117 GUID FormatID;
118 const WCHAR* CodecName;
119 const WCHAR* DllName;
120 const WCHAR* FormatDescription;
121 const WCHAR* FilenameExtension;
122 const WCHAR* MimeType;
123 DWORD Flags;
124 DWORD Version;
125 DWORD SigCount;
126 DWORD SigSize;
127 const BYTE* SigPattern;
128 const BYTE* SigMask;
129 } ImageCodecInfo;
131 typedef struct BitmapData
133 UINT Width;
134 UINT Height;
135 INT Stride;
136 PixelFormat PixelFormat;
137 VOID* Scan0;
138 UINT_PTR Reserved; /* undocumented: stores the lock mode */
139 } BitmapData;
141 typedef struct ImageItemData
143 UINT Size;
144 UINT Position;
145 VOID* Desc;
146 UINT DescSize;
147 VOID* Data;
148 UINT DataSize;
149 UINT Cookie;
150 } ImageItemData;
152 typedef struct PropertyItem
154 PROPID id;
155 ULONG length;
156 WORD type;
157 VOID* value;
158 } PropertyItem;
160 #endif /* end of c typedefs */
162 /* property types */
163 #define PropertyTagTypeByte 1
164 #define PropertyTagTypeASCII 2
165 #define PropertyTagTypeShort 3
166 #define PropertyTagTypeLong 4
167 #define PropertyTagTypeRational 5
168 #define PropertyTagTypeUndefined 7
169 #define PropertyTagTypeSLONG 9
170 #define PropertyTagTypeSRational 10
172 /* property IDs */
173 #define PropertyTagExifIFD 0x8769
174 #define PropertyTagGpsIFD 0x8825
176 #define PropertyTagNewSubfileType 0x00FE
177 #define PropertyTagSubfileType 0x00FF
178 #define PropertyTagImageWidth 0x0100
179 #define PropertyTagImageHeight 0x0101
180 #define PropertyTagBitsPerSample 0x0102
181 #define PropertyTagCompression 0x0103
182 #define PropertyTagPhotometricInterp 0x0106
183 #define PropertyTagThreshHolding 0x0107
184 #define PropertyTagCellWidth 0x0108
185 #define PropertyTagCellHeight 0x0109
186 #define PropertyTagFillOrder 0x010A
187 #define PropertyTagDocumentName 0x010D
188 #define PropertyTagImageDescription 0x010E
189 #define PropertyTagEquipMake 0x010F
190 #define PropertyTagEquipModel 0x0110
191 #define PropertyTagStripOffsets 0x0111
192 #define PropertyTagOrientation 0x0112
193 #define PropertyTagSamplesPerPixel 0x0115
194 #define PropertyTagRowsPerStrip 0x0116
195 #define PropertyTagStripBytesCount 0x0117
196 #define PropertyTagMinSampleValue 0x0118
197 #define PropertyTagMaxSampleValue 0x0119
198 #define PropertyTagXResolution 0x011A
199 #define PropertyTagYResolution 0x011B
200 #define PropertyTagPlanarConfig 0x011C
201 #define PropertyTagPageName 0x011D
202 #define PropertyTagXPosition 0x011E
203 #define PropertyTagYPosition 0x011F
204 #define PropertyTagFreeOffset 0x0120
205 #define PropertyTagFreeByteCounts 0x0121
206 #define PropertyTagGrayResponseUnit 0x0122
207 #define PropertyTagGrayResponseCurve 0x0123
208 #define PropertyTagT4Option 0x0124
209 #define PropertyTagT6Option 0x0125
210 #define PropertyTagResolutionUnit 0x0128
211 #define PropertyTagPageNumber 0x0129
212 #define PropertyTagTransferFuncition 0x012D
213 #define PropertyTagSoftwareUsed 0x0131
214 #define PropertyTagDateTime 0x0132
215 #define PropertyTagArtist 0x013B
216 #define PropertyTagHostComputer 0x013C
217 #define PropertyTagPredictor 0x013D
218 #define PropertyTagWhitePoint 0x013E
219 #define PropertyTagPrimaryChromaticities 0x013F
220 #define PropertyTagColorMap 0x0140
221 #define PropertyTagHalftoneHints 0x0141
222 #define PropertyTagTileWidth 0x0142
223 #define PropertyTagTileLength 0x0143
224 #define PropertyTagTileOffset 0x0144
225 #define PropertyTagTileByteCounts 0x0145
226 #define PropertyTagInkSet 0x014C
227 #define PropertyTagInkNames 0x014D
228 #define PropertyTagNumberOfInks 0x014E
229 #define PropertyTagDotRange 0x0150
230 #define PropertyTagTargetPrinter 0x0151
231 #define PropertyTagExtraSamples 0x0152
232 #define PropertyTagSampleFormat 0x0153
233 #define PropertyTagSMinSampleValue 0x0154
234 #define PropertyTagSMaxSampleValue 0x0155
235 #define PropertyTagTransferRange 0x0156
237 #define PropertyTagJPEGProc 0x0200
238 #define PropertyTagJPEGInterFormat 0x0201
239 #define PropertyTagJPEGInterLength 0x0202
240 #define PropertyTagJPEGRestartInterval 0x0203
241 #define PropertyTagJPEGLosslessPredictors 0x0205
242 #define PropertyTagJPEGPointTransforms 0x0206
243 #define PropertyTagJPEGQTables 0x0207
244 #define PropertyTagJPEGDCTables 0x0208
245 #define PropertyTagJPEGACTables 0x0209
247 #define PropertyTagYCbCrCoefficients 0x0211
248 #define PropertyTagYCbCrSubsampling 0x0212
249 #define PropertyTagYCbCrPositioning 0x0213
250 #define PropertyTagREFBlackWhite 0x0214
252 #define PropertyTagICCProfile 0x8773
254 #define PropertyTagGamma 0x0301
255 #define PropertyTagICCProfileDescriptor 0x0302
256 #define PropertyTagSRGBRenderingIntent 0x0303
258 #define PropertyTagImageTitle 0x0320
259 #define PropertyTagCopyright 0x8298
261 #define PropertyTagResolutionXUnit 0x5001
262 #define PropertyTagResolutionYUnit 0x5002
263 #define PropertyTagResolutionXLengthUnit 0x5003
264 #define PropertyTagResolutionYLengthUnit 0x5004
265 #define PropertyTagPrintFlags 0x5005
266 #define PropertyTagPrintFlagsVersion 0x5006
267 #define PropertyTagPrintFlagsCrop 0x5007
268 #define PropertyTagPrintFlagsBleedWidth 0x5008
269 #define PropertyTagPrintFlagsBleedWidthScale 0x5009
270 #define PropertyTagHalftoneLPI 0x500A
271 #define PropertyTagHalftoneLPIUnit 0x500B
272 #define PropertyTagHalftoneDegree 0x500C
273 #define PropertyTagHalftoneShape 0x500D
274 #define PropertyTagHalftoneMisc 0x500E
275 #define PropertyTagHalftoneScreen 0x500F
276 #define PropertyTagJPEGQuality 0x5010
277 #define PropertyTagGridSize 0x5011
278 #define PropertyTagThumbnailFormat 0x5012
279 #define PropertyTagThumbnailWidth 0x5013
280 #define PropertyTagThumbnailHeight 0x5014
281 #define PropertyTagThumbnailColorDepth 0x5015
282 #define PropertyTagThumbnailPlanes 0x5016
283 #define PropertyTagThumbnailRawBytes 0x5017
284 #define PropertyTagThumbnailSize 0x5018
285 #define PropertyTagThumbnailCompressedSize 0x5019
286 #define PropertyTagColorTransferFunction 0x501A
287 #define PropertyTagThumbnailData 0x501B
289 #define PropertyTagThumbnailImageWidth 0x5020
290 #define PropertyTagThumbnailImageHeight 0x5021
291 #define PropertyTagThumbnailBitsPerSample 0x5022
292 #define PropertyTagThumbnailCompression 0x5023
293 #define PropertyTagThumbnailPhotometricInterp 0x5024
294 #define PropertyTagThumbnailImageDescription 0x5025
295 #define PropertyTagThumbnailEquipMake 0x5026
296 #define PropertyTagThumbnailEquipModel 0x5027
297 #define PropertyTagThumbnailStripOffsets 0x5028
298 #define PropertyTagThumbnailOrientation 0x5029
299 #define PropertyTagThumbnailSamplesPerPixel 0x502A
300 #define PropertyTagThumbnailRowsPerStrip 0x502B
301 #define PropertyTagThumbnailStripBytesCount 0x502C
302 #define PropertyTagThumbnailResolutionX 0x502D
303 #define PropertyTagThumbnailResolutionY 0x502E
304 #define PropertyTagThumbnailPlanarConfig 0x502F
305 #define PropertyTagThumbnailResolutionUnit 0x5030
306 #define PropertyTagThumbnailTransferFunction 0x5031
307 #define PropertyTagThumbnailSoftwareUsed 0x5032
308 #define PropertyTagThumbnailDateTime 0x5033
309 #define PropertyTagThumbnailArtist 0x5034
310 #define PropertyTagThumbnailWhitePoint 0x5035
311 #define PropertyTagThumbnailPrimaryChromaticities 0x5036
312 #define PropertyTagThumbnailYCbCrCoefficients 0x5037
313 #define PropertyTagThumbnailYCbCrSubsampling 0x5038
314 #define PropertyTagThumbnailYCbCrPositioning 0x5039
315 #define PropertyTagThumbnailRefBlackWhite 0x503A
316 #define PropertyTagThumbnailCopyRight 0x503B
318 #define PropertyTagLuminanceTable 0x5090
319 #define PropertyTagChrominanceTable 0x5091
321 #define PropertyTagFrameDelay 0x5100
322 #define PropertyTagLoopCount 0x5101
324 #define PropertyTagPixelUnit 0x5110
325 #define PropertyTagPixelPerUnitX 0x5111
326 #define PropertyTagPixelPerUnitY 0x5112
327 #define PropertyTagPaletteHistogram 0x5113
329 #define PropertyTagExifExposureTime 0x829A
330 #define PropertyTagExifFNumber 0x829D
332 #define PropertyTagExifExposureProg 0x8822
333 #define PropertyTagExifSpectralSense 0x8824
334 #define PropertyTagExifISOSpeed 0x8827
335 #define PropertyTagExifOECF 0x8828
337 #define PropertyTagExifVer 0x9000
338 #define PropertyTagExifDTOrig 0x9003
339 #define PropertyTagExifDTDigitized 0x9004
341 #define PropertyTagExifCompConfig 0x9101
342 #define PropertyTagExifCompBPP 0x9102
344 #define PropertyTagExifShutterSpeed 0x9201
345 #define PropertyTagExifAperture 0x9202
346 #define PropertyTagExifBrightness 0x9203
347 #define PropertyTagExifExposureBias 0x9204
348 #define PropertyTagExifMaxAperture 0x9205
349 #define PropertyTagExifSubjectDist 0x9206
350 #define PropertyTagExifMeteringMode 0x9207
351 #define PropertyTagExifLightSource 0x9208
352 #define PropertyTagExifFlash 0x9209
353 #define PropertyTagExifFocalLength 0x920A
354 #define PropertyTagExifMakerNote 0x927C
355 #define PropertyTagExifUserComment 0x9286
356 #define PropertyTagExifDTSubsec 0x9290
357 #define PropertyTagExifDTOrigSS 0x9291
358 #define PropertyTagExifDTDigSS 0x9292
360 #define PropertyTagExifFPXVer 0xA000
361 #define PropertyTagExifColorSpace 0xA001
362 #define PropertyTagExifPixXDim 0xA002
363 #define PropertyTagExifPixYDim 0xA003
364 #define PropertyTagExifRelatedWav 0xA004
365 #define PropertyTagExifInterop 0xA005
366 #define PropertyTagExifFlashEnergy 0xA20B
367 #define PropertyTagExifSpatialFR 0xA20C
368 #define PropertyTagExifFocalXRes 0xA20E
369 #define PropertyTagExifFocalYRes 0xA20F
370 #define PropertyTagExifFocalResUnit 0xA210
371 #define PropertyTagExifSubjectLoc 0xA214
372 #define PropertyTagExifExposureIndex 0xA215
373 #define PropertyTagExifSensingMethod 0xA217
374 #define PropertyTagExifFileSource 0xA300
375 #define PropertyTagExifSceneType 0xA301
376 #define PropertyTagExifCfaPattern 0xA302
378 #define PropertyTagGpsVer 0x0000
379 #define PropertyTagGpsLatitudeRef 0x0001
380 #define PropertyTagGpsLatitude 0x0002
381 #define PropertyTagGpsLongitudeRef 0x0003
382 #define PropertyTagGpsLongitude 0x0004
383 #define PropertyTagGpsAltitudeRef 0x0005
384 #define PropertyTagGpsAltitude 0x0006
385 #define PropertyTagGpsGpsTime 0x0007
386 #define PropertyTagGpsGpsSatellites 0x0008
387 #define PropertyTagGpsGpsStatus 0x0009
388 #define PropertyTagGpsGpsMeasureMode 0x000A
389 #define PropertyTagGpsGpsDop 0x000B
390 #define PropertyTagGpsSpeedRef 0x000C
391 #define PropertyTagGpsSpeed 0x000D
392 #define PropertyTagGpsTrackRef 0x000E
393 #define PropertyTagGpsTrack 0x000F
394 #define PropertyTagGpsImgDirRef 0x0010
395 #define PropertyTagGpsImgDir 0x0011
396 #define PropertyTagGpsMapDatum 0x0012
397 #define PropertyTagGpsDestLatRef 0x0013
398 #define PropertyTagGpsDestLat 0x0014
399 #define PropertyTagGpsDestLongRef 0x0015
400 #define PropertyTagGpsDestLong 0x0016
401 #define PropertyTagGpsDestBearRef 0x0017
402 #define PropertyTagGpsDestBear 0x0018
403 #define PropertyTagGpsDestDistRef 0x0019
404 #define PropertyTagGpsDestDist 0x001A
406 #endif /* _GDIPLUSIMAGING_H */