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