- Fix bug introduced 18942 revisions ago
[reactos.git] / reactos / include / psdk / gdiplusimaging.h
1 /*
2 * Copyright (C) 2007 Google (Evan Stade)
3 *
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.
8 *
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.
13 *
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
17 */
18
19 #ifndef _GDIPLUSIMAGING_H
20 #define _GDIPLUSIMAGING_H
21
22 DEFINE_GUID(ImageFormatUndefined, 0xb96b3ca9, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
23 DEFINE_GUID(ImageFormatMemoryBMP, 0xb96b3caa, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
24 DEFINE_GUID(ImageFormatBMP, 0xb96b3cab, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
25 DEFINE_GUID(ImageFormatEMF, 0xb96b3cac, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
26 DEFINE_GUID(ImageFormatWMF, 0xb96b3cad, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
27 DEFINE_GUID(ImageFormatJPEG, 0xb96b3cae, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
28 DEFINE_GUID(ImageFormatPNG, 0xb96b3caf, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
29 DEFINE_GUID(ImageFormatGIF, 0xb96b3cb0, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
30 DEFINE_GUID(ImageFormatTIFF, 0xb96b3cb1, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
31 DEFINE_GUID(ImageFormatEXIF, 0xb96b3cb2, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
32 DEFINE_GUID(ImageFormatIcon, 0xb96b3cb5, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e);
33
34 enum ImageLockMode
35 {
36 ImageLockModeRead = 1,
37 ImageLockModeWrite = 2,
38 ImageLockModeUserInputBuf = 4
39 };
40
41 enum RotateFlipType
42 {
43 RotateNoneFlipNone = 0,
44 Rotate180FlipXY = RotateNoneFlipNone,
45
46 Rotate90FlipNone = 1,
47 Rotate270FlipXY = Rotate90FlipNone,
48
49 Rotate180FlipNone = 2,
50 RotateNoneFlipXY = Rotate180FlipNone,
51
52 Rotate270FlipNone = 3,
53 Rotate90FlipXY = Rotate270FlipNone,
54
55 RotateNoneFlipX = 4,
56 Rotate180FlipY = RotateNoneFlipX,
57
58 Rotate90FlipX = 5,
59 Rotate270FlipY = Rotate90FlipX,
60
61 Rotate180FlipX = 6,
62 RotateNoneFlipY = Rotate180FlipX,
63
64 Rotate270FlipX = 7,
65 Rotate90FlipY = Rotate270FlipX
66 };
67
68 #ifdef __cplusplus
69 class EncoderParameter
70 {
71 public:
72 GUID Guid;
73 ULONG NumberOfValues;
74 ULONG Type;
75 VOID* Value;
76 };
77
78 class EncoderParameters
79 {
80 public:
81 UINT Count;
82 EncoderParameter Parameter[1];
83 };
84
85 class ImageCodecInfo
86 {
87 public:
88 CLSID Clsid;
89 GUID FormatID;
90 const WCHAR* CodecName;
91 const WCHAR* DllName;
92 const WCHAR* FormatDescription;
93 const WCHAR* FilenameExtension;
94 const WCHAR* MimeType;
95 DWORD Flags;
96 DWORD Version;
97 DWORD SigCount;
98 DWORD SigSize;
99 const BYTE* SigPattern;
100 const BYTE* SigMask;
101 };
102
103 class BitmapData
104 {
105 public:
106 UINT Width;
107 UINT Height;
108 INT Stride;
109 PixelFormat PixelFormat;
110 VOID* Scan0;
111 UINT_PTR Reserved;
112 };
113
114 class ImageItemData
115 {
116 public:
117 UINT Size;
118 UINT Position;
119 VOID* Desc;
120 UINT DescSize;
121 VOID* Data;
122 UINT DataSize;
123 UINT Cookie;
124 };
125
126 class PropertyItem
127 {
128 public:
129 PROPID id;
130 ULONG length;
131 WORD type;
132 VOID* value;
133 };
134
135 #else /* end of c++ typedefs */
136
137 typedef enum ImageLockMode ImageLockMode;
138 typedef enum RotateFlipType RotateFlipType;
139
140 typedef struct EncoderParameter
141 {
142 GUID Guid;
143 ULONG NumberOfValues;
144 ULONG Type;
145 VOID* Value;
146 } EncoderParameter;
147
148 typedef struct EncoderParameters
149 {
150 UINT Count;
151 EncoderParameter Parameter[1];
152 } EncoderParameters;
153
154 typedef struct ImageCodecInfo
155 {
156 CLSID Clsid;
157 GUID FormatID;
158 const WCHAR* CodecName;
159 const WCHAR* DllName;
160 const WCHAR* FormatDescription;
161 const WCHAR* FilenameExtension;
162 const WCHAR* MimeType;
163 DWORD Flags;
164 DWORD Version;
165 DWORD SigCount;
166 DWORD SigSize;
167 const BYTE* SigPattern;
168 const BYTE* SigMask;
169 } ImageCodecInfo;
170
171 typedef struct BitmapData
172 {
173 UINT Width;
174 UINT Height;
175 INT Stride;
176 PixelFormat PixelFormat;
177 VOID* Scan0;
178 UINT_PTR Reserved; /* undocumented: stores the lock mode */
179 } BitmapData;
180
181 typedef struct ImageItemData
182 {
183 UINT Size;
184 UINT Position;
185 VOID* Desc;
186 UINT DescSize;
187 VOID* Data;
188 UINT DataSize;
189 UINT Cookie;
190 } ImageItemData;
191
192 typedef struct PropertyItem
193 {
194 PROPID id;
195 ULONG length;
196 WORD type;
197 VOID* value;
198 } PropertyItem;
199
200 #endif /* end of c typedefs */
201
202 /* property types */
203 #define PropertyTagTypeByte 1
204 #define PropertyTagTypeASCII 2
205 #define PropertyTagTypeShort 3
206 #define PropertyTagTypeLong 4
207 #define PropertyTagTypeRational 5
208 #define PropertyTagTypeUndefined 7
209 #define PropertyTagTypeSLONG 9
210 #define PropertyTagTypeSRational 10
211
212 /* property IDs */
213 #define PropertyTagExifIFD 0x8769
214 #define PropertyTagGpsIFD 0x8825
215
216 #define PropertyTagNewSubfileType 0x00FE
217 #define PropertyTagSubfileType 0x00FF
218 #define PropertyTagImageWidth 0x0100
219 #define PropertyTagImageHeight 0x0101
220 #define PropertyTagBitsPerSample 0x0102
221 #define PropertyTagCompression 0x0103
222 #define PropertyTagPhotometricInterp 0x0106
223 #define PropertyTagThreshHolding 0x0107
224 #define PropertyTagCellWidth 0x0108
225 #define PropertyTagCellHeight 0x0109
226 #define PropertyTagFillOrder 0x010A
227 #define PropertyTagDocumentName 0x010D
228 #define PropertyTagImageDescription 0x010E
229 #define PropertyTagEquipMake 0x010F
230 #define PropertyTagEquipModel 0x0110
231 #define PropertyTagStripOffsets 0x0111
232 #define PropertyTagOrientation 0x0112
233 #define PropertyTagSamplesPerPixel 0x0115
234 #define PropertyTagRowsPerStrip 0x0116
235 #define PropertyTagStripBytesCount 0x0117
236 #define PropertyTagMinSampleValue 0x0118
237 #define PropertyTagMaxSampleValue 0x0119
238 #define PropertyTagXResolution 0x011A
239 #define PropertyTagYResolution 0x011B
240 #define PropertyTagPlanarConfig 0x011C
241 #define PropertyTagPageName 0x011D
242 #define PropertyTagXPosition 0x011E
243 #define PropertyTagYPosition 0x011F
244 #define PropertyTagFreeOffset 0x0120
245 #define PropertyTagFreeByteCounts 0x0121
246 #define PropertyTagGrayResponseUnit 0x0122
247 #define PropertyTagGrayResponseCurve 0x0123
248 #define PropertyTagT4Option 0x0124
249 #define PropertyTagT6Option 0x0125
250 #define PropertyTagResolutionUnit 0x0128
251 #define PropertyTagPageNumber 0x0129
252 #define PropertyTagTransferFuncition 0x012D
253 #define PropertyTagSoftwareUsed 0x0131
254 #define PropertyTagDateTime 0x0132
255 #define PropertyTagArtist 0x013B
256 #define PropertyTagHostComputer 0x013C
257 #define PropertyTagPredictor 0x013D
258 #define PropertyTagWhitePoint 0x013E
259 #define PropertyTagPrimaryChromaticities 0x013F
260 #define PropertyTagColorMap 0x0140
261 #define PropertyTagHalftoneHints 0x0141
262 #define PropertyTagTileWidth 0x0142
263 #define PropertyTagTileLength 0x0143
264 #define PropertyTagTileOffset 0x0144
265 #define PropertyTagTileByteCounts 0x0145
266 #define PropertyTagInkSet 0x014C
267 #define PropertyTagInkNames 0x014D
268 #define PropertyTagNumberOfInks 0x014E
269 #define PropertyTagDotRange 0x0150
270 #define PropertyTagTargetPrinter 0x0151
271 #define PropertyTagExtraSamples 0x0152
272 #define PropertyTagSampleFormat 0x0153
273 #define PropertyTagSMinSampleValue 0x0154
274 #define PropertyTagSMaxSampleValue 0x0155
275 #define PropertyTagTransferRange 0x0156
276
277 #define PropertyTagJPEGProc 0x0200
278 #define PropertyTagJPEGInterFormat 0x0201
279 #define PropertyTagJPEGInterLength 0x0202
280 #define PropertyTagJPEGRestartInterval 0x0203
281 #define PropertyTagJPEGLosslessPredictors 0x0205
282 #define PropertyTagJPEGPointTransforms 0x0206
283 #define PropertyTagJPEGQTables 0x0207
284 #define PropertyTagJPEGDCTables 0x0208
285 #define PropertyTagJPEGACTables 0x0209
286
287 #define PropertyTagYCbCrCoefficients 0x0211
288 #define PropertyTagYCbCrSubsampling 0x0212
289 #define PropertyTagYCbCrPositioning 0x0213
290 #define PropertyTagREFBlackWhite 0x0214
291
292 #define PropertyTagICCProfile 0x8773
293
294 #define PropertyTagGamma 0x0301
295 #define PropertyTagICCProfileDescriptor 0x0302
296 #define PropertyTagSRGBRenderingIntent 0x0303
297
298 #define PropertyTagImageTitle 0x0320
299 #define PropertyTagCopyright 0x8298
300
301 #define PropertyTagResolutionXUnit 0x5001
302 #define PropertyTagResolutionYUnit 0x5002
303 #define PropertyTagResolutionXLengthUnit 0x5003
304 #define PropertyTagResolutionYLengthUnit 0x5004
305 #define PropertyTagPrintFlags 0x5005
306 #define PropertyTagPrintFlagsVersion 0x5006
307 #define PropertyTagPrintFlagsCrop 0x5007
308 #define PropertyTagPrintFlagsBleedWidth 0x5008
309 #define PropertyTagPrintFlagsBleedWidthScale 0x5009
310 #define PropertyTagHalftoneLPI 0x500A
311 #define PropertyTagHalftoneLPIUnit 0x500B
312 #define PropertyTagHalftoneDegree 0x500C
313 #define PropertyTagHalftoneShape 0x500D
314 #define PropertyTagHalftoneMisc 0x500E
315 #define PropertyTagHalftoneScreen 0x500F
316 #define PropertyTagJPEGQuality 0x5010
317 #define PropertyTagGridSize 0x5011
318 #define PropertyTagThumbnailFormat 0x5012
319 #define PropertyTagThumbnailWidth 0x5013
320 #define PropertyTagThumbnailHeight 0x5014
321 #define PropertyTagThumbnailColorDepth 0x5015
322 #define PropertyTagThumbnailPlanes 0x5016
323 #define PropertyTagThumbnailRawBytes 0x5017
324 #define PropertyTagThumbnailSize 0x5018
325 #define PropertyTagThumbnailCompressedSize 0x5019
326 #define PropertyTagColorTransferFunction 0x501A
327 #define PropertyTagThumbnailData 0x501B
328
329 #define PropertyTagThumbnailImageWidth 0x5020
330 #define PropertyTagThumbnailImageHeight 0x5021
331 #define PropertyTagThumbnailBitsPerSample 0x5022
332 #define PropertyTagThumbnailCompression 0x5023
333 #define PropertyTagThumbnailPhotometricInterp 0x5024
334 #define PropertyTagThumbnailImageDescription 0x5025
335 #define PropertyTagThumbnailEquipMake 0x5026
336 #define PropertyTagThumbnailEquipModel 0x5027
337 #define PropertyTagThumbnailStripOffsets 0x5028
338 #define PropertyTagThumbnailOrientation 0x5029
339 #define PropertyTagThumbnailSamplesPerPixel 0x502A
340 #define PropertyTagThumbnailRowsPerStrip 0x502B
341 #define PropertyTagThumbnailStripBytesCount 0x502C
342 #define PropertyTagThumbnailResolutionX 0x502D
343 #define PropertyTagThumbnailResolutionY 0x502E
344 #define PropertyTagThumbnailPlanarConfig 0x502F
345 #define PropertyTagThumbnailResolutionUnit 0x5030
346 #define PropertyTagThumbnailTransferFunction 0x5031
347 #define PropertyTagThumbnailSoftwareUsed 0x5032
348 #define PropertyTagThumbnailDateTime 0x5033
349 #define PropertyTagThumbnailArtist 0x5034
350 #define PropertyTagThumbnailWhitePoint 0x5035
351 #define PropertyTagThumbnailPrimaryChromaticities 0x5036
352 #define PropertyTagThumbnailYCbCrCoefficients 0x5037
353 #define PropertyTagThumbnailYCbCrSubsampling 0x5038
354 #define PropertyTagThumbnailYCbCrPositioning 0x5039
355 #define PropertyTagThumbnailRefBlackWhite 0x503A
356 #define PropertyTagThumbnailCopyRight 0x503B
357
358 #define PropertyTagLuminanceTable 0x5090
359 #define PropertyTagChrominanceTable 0x5091
360
361 #define PropertyTagFrameDelay 0x5100
362 #define PropertyTagLoopCount 0x5101
363
364 #define PropertyTagPixelUnit 0x5110
365 #define PropertyTagPixelPerUnitX 0x5111
366 #define PropertyTagPixelPerUnitY 0x5112
367 #define PropertyTagPaletteHistogram 0x5113
368
369 #define PropertyTagExifExposureTime 0x829A
370 #define PropertyTagExifFNumber 0x829D
371
372 #define PropertyTagExifExposureProg 0x8822
373 #define PropertyTagExifSpectralSense 0x8824
374 #define PropertyTagExifISOSpeed 0x8827
375 #define PropertyTagExifOECF 0x8828
376
377 #define PropertyTagExifVer 0x9000
378 #define PropertyTagExifDTOrig 0x9003
379 #define PropertyTagExifDTDigitized 0x9004
380
381 #define PropertyTagExifCompConfig 0x9101
382 #define PropertyTagExifCompBPP 0x9102
383
384 #define PropertyTagExifShutterSpeed 0x9201
385 #define PropertyTagExifAperture 0x9202
386 #define PropertyTagExifBrightness 0x9203
387 #define PropertyTagExifExposureBias 0x9204
388 #define PropertyTagExifMaxAperture 0x9205
389 #define PropertyTagExifSubjectDist 0x9206
390 #define PropertyTagExifMeteringMode 0x9207
391 #define PropertyTagExifLightSource 0x9208
392 #define PropertyTagExifFlash 0x9209
393 #define PropertyTagExifFocalLength 0x920A
394 #define PropertyTagExifMakerNote 0x927C
395 #define PropertyTagExifUserComment 0x9286
396 #define PropertyTagExifDTSubsec 0x9290
397 #define PropertyTagExifDTOrigSS 0x9291
398 #define PropertyTagExifDTDigSS 0x9292
399
400 #define PropertyTagExifFPXVer 0xA000
401 #define PropertyTagExifColorSpace 0xA001
402 #define PropertyTagExifPixXDim 0xA002
403 #define PropertyTagExifPixYDim 0xA003
404 #define PropertyTagExifRelatedWav 0xA004
405 #define PropertyTagExifInterop 0xA005
406 #define PropertyTagExifFlashEnergy 0xA20B
407 #define PropertyTagExifSpatialFR 0xA20C
408 #define PropertyTagExifFocalXRes 0xA20E
409 #define PropertyTagExifFocalYRes 0xA20F
410 #define PropertyTagExifFocalResUnit 0xA210
411 #define PropertyTagExifSubjectLoc 0xA214
412 #define PropertyTagExifExposureIndex 0xA215
413 #define PropertyTagExifSensingMethod 0xA217
414 #define PropertyTagExifFileSource 0xA300
415 #define PropertyTagExifSceneType 0xA301
416 #define PropertyTagExifCfaPattern 0xA302
417
418 #define PropertyTagGpsVer 0x0000
419 #define PropertyTagGpsLatitudeRef 0x0001
420 #define PropertyTagGpsLatitude 0x0002
421 #define PropertyTagGpsLongitudeRef 0x0003
422 #define PropertyTagGpsLongitude 0x0004
423 #define PropertyTagGpsAltitudeRef 0x0005
424 #define PropertyTagGpsAltitude 0x0006
425 #define PropertyTagGpsGpsTime 0x0007
426 #define PropertyTagGpsGpsSatellites 0x0008
427 #define PropertyTagGpsGpsStatus 0x0009
428 #define PropertyTagGpsGpsMeasureMode 0x000A
429 #define PropertyTagGpsGpsDop 0x000B
430 #define PropertyTagGpsSpeedRef 0x000C
431 #define PropertyTagGpsSpeed 0x000D
432 #define PropertyTagGpsTrackRef 0x000E
433 #define PropertyTagGpsTrack 0x000F
434 #define PropertyTagGpsImgDirRef 0x0010
435 #define PropertyTagGpsImgDir 0x0011
436 #define PropertyTagGpsMapDatum 0x0012
437 #define PropertyTagGpsDestLatRef 0x0013
438 #define PropertyTagGpsDestLat 0x0014
439 #define PropertyTagGpsDestLongRef 0x0015
440 #define PropertyTagGpsDestLong 0x0016
441 #define PropertyTagGpsDestBearRef 0x0017
442 #define PropertyTagGpsDestBear 0x0018
443 #define PropertyTagGpsDestDistRef 0x0019
444 #define PropertyTagGpsDestDist 0x001A
445
446 #endif /* _GDIPLUSIMAGING_H */