Add a .gitattributes with "* text=auto" so that new lines are
[pdfium.git] / core / src / fxge / Microsoft SDK / include / GdiPlusImaging.h
1 /**************************************************************************\
2
3 * Copyright (c) 1999-2000  Microsoft Corporation
4 *
5 * Module Name:
6 *
7 *   GdiplusImaging.h
8 *
9 * Abstract:
10 *
11 *   GUIDs defined and used by the imaging library
12 *
13 \**************************************************************************/
14 #ifndef _GDIPLUSIMAGING_H
15 #define _GDIPLUSIMAGING_H
16
17 //---------------------------------------------------------------------------
18 // Image file format identifiers
19 //---------------------------------------------------------------------------
20
21 DEFINE_GUID(ImageFormatUndefined, 0xb96b3ca9,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
22 DEFINE_GUID(ImageFormatMemoryBMP, 0xb96b3caa,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
23 DEFINE_GUID(ImageFormatBMP, 0xb96b3cab,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
24 DEFINE_GUID(ImageFormatEMF, 0xb96b3cac,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
25 DEFINE_GUID(ImageFormatWMF, 0xb96b3cad,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
26 DEFINE_GUID(ImageFormatJPEG, 0xb96b3cae,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
27 DEFINE_GUID(ImageFormatPNG, 0xb96b3caf,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
28 DEFINE_GUID(ImageFormatGIF, 0xb96b3cb0,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
29 DEFINE_GUID(ImageFormatTIFF, 0xb96b3cb1,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
30 DEFINE_GUID(ImageFormatEXIF, 0xb96b3cb2,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
31 #ifndef DCR_USE_NEW_140855
32 DEFINE_GUID(ImageFormatPhotoCD, 0xb96b3cb3,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
33 DEFINE_GUID(ImageFormatFlashPIX, 0xb96b3cb4,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
34 #endif
35 DEFINE_GUID(ImageFormatIcon, 0xb96b3cb5,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
36
37 //---------------------------------------------------------------------------
38 // Predefined multi-frame dimension IDs
39 //---------------------------------------------------------------------------
40
41 DEFINE_GUID(FrameDimensionTime, 0x6aedbd6d,0x3fb5,0x418a,0x83,0xa6,0x7f,0x45,0x22,0x9d,0xc8,0x72);
42 DEFINE_GUID(FrameDimensionResolution, 0x84236f7b,0x3bd3,0x428f,0x8d,0xab,0x4e,0xa1,0x43,0x9c,0xa3,0x15);
43 DEFINE_GUID(FrameDimensionPage, 0x7462dc86,0x6180,0x4c7e,0x8e,0x3f,0xee,0x73,0x33,0xa7,0xa4,0x83);
44
45 //---------------------------------------------------------------------------
46 // Property sets
47 //---------------------------------------------------------------------------
48
49 DEFINE_GUID(FormatIDImageInformation, 0xe5836cbe,0x5eef,0x4f1d,0xac,0xde,0xae,0x4c,0x43,0xb6,0x08,0xce);
50 DEFINE_GUID(FormatIDJpegAppHeaders, 0x1c4afdcd,0x6177,0x43cf,0xab,0xc7,0x5f,0x51,0xaf,0x39,0xee,0x85);
51
52 #ifndef DCR_USE_NEW_140855
53 //---------------------------------------------------------------------------
54 // Decoder parameter sets
55 //---------------------------------------------------------------------------
56 DEFINE_GUID(DecoderTransColor, 0xb7a98c8f,0xdce7,0x457d,0xbf,0xa5,0xce,0xa7,0x1b,0xd1,0x4d,0xd6);
57 DEFINE_GUID(DecoderTransRange, 0xabeed189,0xd988,0x4d03,0xb4,0x25,0x57,0x10,0x55,0xc7,0x6a,0xd1);
58 DEFINE_GUID(DecoderOutputChannel, 0x2ff8f51e,0x724d,0x45fe,0x86,0xce,0x17,0x77,0xa0,0x56,0xda,0x60);
59 DEFINE_GUID(DecoderIconRes, 0x5c656eec,0xe94f,0x45ba,0xa6,0xf6,0x10,0x62,0xe8,0x5f,0x4a,0x7f);
60 #endif
61
62 //---------------------------------------------------------------------------
63 // Encoder parameter sets
64 //---------------------------------------------------------------------------
65
66 DEFINE_GUID(EncoderCompression, 0xe09d739d,0xccd4,0x44ee,0x8e,0xba,0x3f,0xbf,0x8b,0xe4,0xfc,0x58);
67 DEFINE_GUID(EncoderColorDepth, 0x66087055,0xad66,0x4c7c,0x9a,0x18,0x38,0xa2,0x31,0x0b,0x83,0x37);
68 DEFINE_GUID(EncoderScanMethod, 0x3a4e2661,0x3109,0x4e56,0x85,0x36,0x42,0xc1,0x56,0xe7,0xdc,0xfa);
69 DEFINE_GUID(EncoderVersion, 0x24d18c76,0x814a,0x41a4,0xbf,0x53,0x1c,0x21,0x9c,0xcc,0xf7,0x97);
70 DEFINE_GUID(EncoderRenderMethod, 0x6d42c53a,0x229a,0x4825,0x8b,0xb7,0x5c,0x99,0xe2,0xb9,0xa8,0xb8);
71 DEFINE_GUID(EncoderQuality, 0x1d5be4b5,0xfa4a,0x452d,0x9c,0xdd,0x5d,0xb3,0x51,0x05,0xe7,0xeb);
72 DEFINE_GUID(EncoderTransformation,0x8d0eb2d1,0xa58e,0x4ea8,0xaa,0x14,0x10,0x80,0x74,0xb7,0xb6,0xf9);
73 DEFINE_GUID(EncoderLuminanceTable,0xedb33bce,0x0266,0x4a77,0xb9,0x04,0x27,0x21,0x60,0x99,0xe7,0x17);
74 DEFINE_GUID(EncoderChrominanceTable,0xf2e455dc,0x09b3,0x4316,0x82,0x60,0x67,0x6a,0xda,0x32,0x48,0x1c);
75 DEFINE_GUID(EncoderSaveFlag,0x292266fc,0xac40,0x47bf,0x8c, 0xfc, 0xa8, 0x5b, 0x89, 0xa6, 0x55, 0xde);
76
77 DEFINE_GUID(CodecIImageBytes,0x025d1823,0x6c7d,0x447b,0xbb, 0xdb, 0xa3, 0xcb, 0xc3, 0xdf, 0xa2, 0xfc);
78
79 MIDL_INTERFACE("025D1823-6C7D-447B-BBDB-A3CBC3DFA2FC")
80 IImageBytes : public IUnknown
81 {
82 public:
83     // Return total number of bytes in the IStream
84
85     STDMETHOD(CountBytes)(
86         OUT UINT *pcb
87         ) = 0;
88     
89     // Locks "cb" bytes, starting from "ulOffset" in the stream, and returns the
90     // pointer to the beginning of the locked memory chunk in "ppvBytes"
91
92     STDMETHOD(LockBytes)(
93         IN UINT cb,
94         IN ULONG ulOffset,
95         OUT const VOID ** ppvBytes
96         ) = 0;
97
98     // Unlocks "cb" bytes, pointed by "pvBytes", starting from "ulOffset" in the
99     // stream
100
101     STDMETHOD(UnlockBytes)(
102         IN const VOID *pvBytes,
103         IN UINT cb,
104         IN ULONG ulOffset
105         ) = 0;
106 };
107
108 //--------------------------------------------------------------------------
109 // ImageCodecInfo structure
110 //--------------------------------------------------------------------------
111
112 class ImageCodecInfo
113 {
114 public:          
115     CLSID Clsid;
116     GUID  FormatID;
117     const WCHAR* CodecName;
118     const WCHAR* DllName;
119     const WCHAR* FormatDescription;
120     const WCHAR* FilenameExtension;
121     const WCHAR* MimeType;
122     DWORD Flags;
123     DWORD Version;
124     DWORD SigCount;
125     DWORD SigSize;
126     const BYTE* SigPattern;
127     const BYTE* SigMask;
128 };
129
130 //--------------------------------------------------------------------------
131 // Information flags about image codecs
132 //--------------------------------------------------------------------------
133
134 enum ImageCodecFlags
135 {
136     ImageCodecFlagsEncoder            = 0x00000001,
137     ImageCodecFlagsDecoder            = 0x00000002,
138     ImageCodecFlagsSupportBitmap      = 0x00000004,
139     ImageCodecFlagsSupportVector      = 0x00000008,
140     ImageCodecFlagsSeekableEncode     = 0x00000010,
141     ImageCodecFlagsBlockingDecode     = 0x00000020,
142
143     ImageCodecFlagsBuiltin            = 0x00010000,
144     ImageCodecFlagsSystem             = 0x00020000,
145     ImageCodecFlagsUser               = 0x00040000
146 };
147
148 //---------------------------------------------------------------------------
149 // Access modes used when calling Image::LockBits
150 //---------------------------------------------------------------------------
151
152 enum ImageLockMode
153 {
154     ImageLockModeRead        = 0x0001,
155     ImageLockModeWrite       = 0x0002,
156     ImageLockModeUserInputBuf= 0x0004
157 };
158
159 //---------------------------------------------------------------------------
160 // Information about image pixel data
161 //---------------------------------------------------------------------------
162
163 class BitmapData
164 {
165 public:
166     UINT Width;
167     UINT Height;
168     INT Stride;
169     PixelFormat PixelFormat;
170     VOID* Scan0;
171     UINT_PTR Reserved;
172 };
173
174 //---------------------------------------------------------------------------
175 // Image flags
176 //---------------------------------------------------------------------------
177
178 enum ImageFlags
179 {
180     ImageFlagsNone                = 0,
181
182     // Low-word: shared with SINKFLAG_x
183
184     ImageFlagsScalable            = 0x0001,
185     ImageFlagsHasAlpha            = 0x0002,
186     ImageFlagsHasTranslucent      = 0x0004,
187     ImageFlagsPartiallyScalable   = 0x0008,
188
189     // Low-word: color space definition
190
191     ImageFlagsColorSpaceRGB       = 0x0010,
192     ImageFlagsColorSpaceCMYK      = 0x0020,
193     ImageFlagsColorSpaceGRAY      = 0x0040,
194     ImageFlagsColorSpaceYCBCR     = 0x0080,
195     ImageFlagsColorSpaceYCCK      = 0x0100,
196  
197     // Low-word: image size info
198
199     ImageFlagsHasRealDPI          = 0x1000,
200     ImageFlagsHasRealPixelSize    = 0x2000,
201
202     // High-word
203
204     ImageFlagsReadOnly            = 0x00010000,
205     ImageFlagsCaching             = 0x00020000
206 };
207
208 enum RotateFlipType
209 {
210     RotateNoneFlipNone = 0,
211     Rotate90FlipNone   = 1,
212     Rotate180FlipNone  = 2,
213     Rotate270FlipNone  = 3,
214
215     RotateNoneFlipX    = 4,
216     Rotate90FlipX      = 5,
217     Rotate180FlipX     = 6,
218     Rotate270FlipX     = 7,
219
220     RotateNoneFlipY    = Rotate180FlipX,
221     Rotate90FlipY      = Rotate270FlipX,
222     Rotate180FlipY     = RotateNoneFlipX,
223     Rotate270FlipY     = Rotate90FlipX,
224
225     RotateNoneFlipXY   = Rotate180FlipNone,
226     Rotate90FlipXY     = Rotate270FlipNone,
227     Rotate180FlipXY    = RotateNoneFlipNone,
228     Rotate270FlipXY    = Rotate90FlipNone
229 };
230
231 //---------------------------------------------------------------------------
232 // Encoder Parameter structure
233 //---------------------------------------------------------------------------
234 class EncoderParameter
235 {
236 public:
237     GUID    Guid;               // GUID of the parameter
238     ULONG   NumberOfValues;     // Number of the parameter values
239     ULONG   Type;               // Value type, like ValueTypeLONG  etc.
240     VOID*   Value;              // A pointer to the parameter values
241 };
242
243 //---------------------------------------------------------------------------
244 // Encoder Parameters structure
245 //---------------------------------------------------------------------------
246 class EncoderParameters
247 {
248 public:
249     UINT Count;                      // Number of parameters in this structure
250     EncoderParameter Parameter[1];   // Parameter values
251 };
252
253 //---------------------------------------------------------------------------
254 // Property Item
255 //---------------------------------------------------------------------------
256 class PropertyItem
257 {
258 public:
259     PROPID  id;                 // ID of this property
260     ULONG   length;             // Length of the property value, in bytes
261     WORD    type;               // Type of the value, as one of TAG_TYPE_XXX
262                                 // defined above
263     VOID*   value;              // property value
264 };
265
266 #ifdef DCR_USE_NEW_140857
267 //---------------------------------------------------------------------------
268 // Image property types 
269 //---------------------------------------------------------------------------
270 #define PropertyTagTypeByte        1
271 #define PropertyTagTypeASCII       2
272 #define PropertyTagTypeShort       3
273 #define PropertyTagTypeLong        4
274 #define PropertyTagTypeRational    5
275 #define PropertyTagTypeUndefined   7
276 #define PropertyTagTypeSLONG       9
277 #define PropertyTagTypeSRational  10
278 #endif
279
280 //---------------------------------------------------------------------------
281 // Image property ID tags
282 //---------------------------------------------------------------------------
283
284 #define PropertyTagExifIFD             0x8769
285 #define PropertyTagGpsIFD              0x8825
286
287 #define PropertyTagNewSubfileType      0x00FE
288 #define PropertyTagSubfileType         0x00FF
289 #define PropertyTagImageWidth          0x0100
290 #define PropertyTagImageHeight         0x0101
291 #define PropertyTagBitsPerSample       0x0102
292 #define PropertyTagCompression         0x0103
293 #define PropertyTagPhotometricInterp   0x0106
294 #define PropertyTagThreshHolding       0x0107
295 #define PropertyTagCellWidth           0x0108
296 #define PropertyTagCellHeight          0x0109
297 #define PropertyTagFillOrder           0x010A
298 #define PropertyTagDocumentName        0x010D
299 #define PropertyTagImageDescription    0x010E
300 #define PropertyTagEquipMake           0x010F
301 #define PropertyTagEquipModel          0x0110
302 #define PropertyTagStripOffsets        0x0111
303 #define PropertyTagOrientation         0x0112
304 #define PropertyTagSamplesPerPixel     0x0115
305 #define PropertyTagRowsPerStrip        0x0116
306 #define PropertyTagStripBytesCount     0x0117
307 #define PropertyTagMinSampleValue      0x0118
308 #define PropertyTagMaxSampleValue      0x0119
309 #define PropertyTagXResolution         0x011A   // Image resolution in width direction
310 #define PropertyTagYResolution         0x011B   // Image resolution in height direction
311 #define PropertyTagPlanarConfig        0x011C   // Image data arrangement
312 #define PropertyTagPageName            0x011D
313 #define PropertyTagXPosition           0x011E
314 #define PropertyTagYPosition           0x011F
315 #define PropertyTagFreeOffset          0x0120
316 #define PropertyTagFreeByteCounts      0x0121
317 #define PropertyTagGrayResponseUnit    0x0122
318 #define PropertyTagGrayResponseCurve   0x0123
319 #define PropertyTagT4Option            0x0124
320 #define PropertyTagT6Option            0x0125
321 #define PropertyTagResolutionUnit      0x0128   // Unit of X and Y resolution
322 #define PropertyTagPageNumber          0x0129
323 #define PropertyTagTransferFuncition   0x012D
324 #define PropertyTagSoftwareUsed        0x0131
325 #define PropertyTagDateTime            0x0132
326 #define PropertyTagArtist              0x013B
327 #define PropertyTagHostComputer        0x013C
328 #define PropertyTagPredictor           0x013D
329 #define PropertyTagWhitePoint          0x013E
330 #define PropertyTagPrimaryChromaticities 0x013F
331 #define PropertyTagColorMap            0x0140
332 #define PropertyTagHalftoneHints       0x0141
333 #define PropertyTagTileWidth           0x0142
334 #define PropertyTagTileLength          0x0143
335 #define PropertyTagTileOffset          0x0144
336 #define PropertyTagTileByteCounts      0x0145
337 #define PropertyTagInkSet              0x014C
338 #define PropertyTagInkNames            0x014D
339 #define PropertyTagNumberOfInks        0x014E
340 #define PropertyTagDotRange            0x0150
341 #define PropertyTagTargetPrinter       0x0151
342 #define PropertyTagExtraSamples        0x0152
343 #define PropertyTagSampleFormat        0x0153
344 #define PropertyTagSMinSampleValue     0x0154
345 #define PropertyTagSMaxSampleValue     0x0155
346 #define PropertyTagTransferRange       0x0156
347
348 #define PropertyTagJPEGProc            0x0200
349 #define PropertyTagJPEGInterFormat     0x0201
350 #define PropertyTagJPEGInterLength     0x0202
351 #define PropertyTagJPEGRestartInterval 0x0203
352 #define PropertyTagJPEGLosslessPredictors  0x0205
353 #define PropertyTagJPEGPointTransforms     0x0206
354 #define PropertyTagJPEGQTables         0x0207
355 #define PropertyTagJPEGDCTables        0x0208
356 #define PropertyTagJPEGACTables        0x0209
357
358 #define PropertyTagYCbCrCoefficients   0x0211
359 #define PropertyTagYCbCrSubsampling    0x0212
360 #define PropertyTagYCbCrPositioning    0x0213
361 #define PropertyTagREFBlackWhite       0x0214
362
363 #define PropertyTagICCProfile          0x8773   // This TAG is defined by ICC
364                                                 // for embedded ICC in TIFF
365 #define PropertyTagGamma               0x0301
366 #define PropertyTagICCProfileDescriptor 0x0302
367 #define PropertyTagSRGBRenderingIntent 0x0303
368
369 #define PropertyTagImageTitle          0x0320
370 #define PropertyTagCopyright           0x8298
371
372 // Extra TAGs (Like Adobe Image Information tags etc.)
373
374 #define PropertyTagResolutionXUnit           0x5001
375 #define PropertyTagResolutionYUnit           0x5002
376 #define PropertyTagResolutionXLengthUnit     0x5003
377 #define PropertyTagResolutionYLengthUnit     0x5004
378 #define PropertyTagPrintFlags                0x5005
379 #define PropertyTagPrintFlagsVersion         0x5006
380 #define PropertyTagPrintFlagsCrop            0x5007
381 #define PropertyTagPrintFlagsBleedWidth      0x5008
382 #define PropertyTagPrintFlagsBleedWidthScale 0x5009
383 #define PropertyTagHalftoneLPI               0x500A
384 #define PropertyTagHalftoneLPIUnit           0x500B
385 #define PropertyTagHalftoneDegree            0x500C
386 #define PropertyTagHalftoneShape             0x500D
387 #define PropertyTagHalftoneMisc              0x500E
388 #define PropertyTagHalftoneScreen            0x500F
389 #define PropertyTagJPEGQuality               0x5010
390 #define PropertyTagGridSize                  0x5011
391 #define PropertyTagThumbnailFormat           0x5012  // 1 = JPEG, 0 = RAW RGB
392 #define PropertyTagThumbnailWidth            0x5013
393 #define PropertyTagThumbnailHeight           0x5014
394 #define PropertyTagThumbnailColorDepth       0x5015
395 #define PropertyTagThumbnailPlanes           0x5016
396 #define PropertyTagThumbnailRawBytes         0x5017
397 #define PropertyTagThumbnailSize             0x5018
398 #define PropertyTagThumbnailCompressedSize   0x5019
399 #define PropertyTagColorTransferFunction     0x501A
400 #define PropertyTagThumbnailData             0x501B// RAW thumbnail bits in
401                                                    // JPEG format or RGB format
402                                                    // depends on
403                                                    // PropertyTagThumbnailFormat
404
405 // Thumbnail related TAGs
406                                                 
407 #define PropertyTagThumbnailImageWidth       0x5020  // Thumbnail width
408 #define PropertyTagThumbnailImageHeight      0x5021  // Thumbnail height
409 #define PropertyTagThumbnailBitsPerSample    0x5022  // Number of bits per
410                                                      // component
411 #define PropertyTagThumbnailCompression      0x5023  // Compression Scheme
412 #define PropertyTagThumbnailPhotometricInterp 0x5024 // Pixel composition
413 #define PropertyTagThumbnailImageDescription 0x5025  // Image Tile
414 #define PropertyTagThumbnailEquipMake        0x5026  // Manufacturer of Image
415                                                      // Input equipment
416 #define PropertyTagThumbnailEquipModel       0x5027  // Model of Image input
417                                                      // equipment
418 #define PropertyTagThumbnailStripOffsets     0x5028  // Image data location
419 #define PropertyTagThumbnailOrientation      0x5029  // Orientation of image
420 #define PropertyTagThumbnailSamplesPerPixel  0x502A  // Number of components
421 #define PropertyTagThumbnailRowsPerStrip     0x502B  // Number of rows per strip
422 #define PropertyTagThumbnailStripBytesCount  0x502C  // Bytes per compressed
423                                                      // strip
424 #define PropertyTagThumbnailResolutionX      0x502D  // Resolution in width
425                                                      // direction
426 #define PropertyTagThumbnailResolutionY      0x502E  // Resolution in height
427                                                      // direction
428 #define PropertyTagThumbnailPlanarConfig     0x502F  // Image data arrangement
429 #define PropertyTagThumbnailResolutionUnit   0x5030  // Unit of X and Y
430                                                      // Resolution
431 #define PropertyTagThumbnailTransferFunction 0x5031  // Transfer function
432 #define PropertyTagThumbnailSoftwareUsed     0x5032  // Software used
433 #define PropertyTagThumbnailDateTime         0x5033  // File change date and
434                                                      // time
435 #define PropertyTagThumbnailArtist           0x5034  // Person who created the
436                                                      // image
437 #define PropertyTagThumbnailWhitePoint       0x5035  // White point chromaticity
438 #define PropertyTagThumbnailPrimaryChromaticities 0x5036 
439                                                      // Chromaticities of
440                                                      // primaries
441 #define PropertyTagThumbnailYCbCrCoefficients 0x5037 // Color space transforma-
442                                                      // tion coefficients
443 #define PropertyTagThumbnailYCbCrSubsampling 0x5038  // Subsampling ratio of Y
444                                                      // to C
445 #define PropertyTagThumbnailYCbCrPositioning 0x5039  // Y and C position
446 #define PropertyTagThumbnailRefBlackWhite    0x503A  // Pair of black and white
447                                                      // reference values
448 #define PropertyTagThumbnailCopyRight        0x503B  // CopyRight holder
449
450 #define PropertyTagLuminanceTable            0x5090
451 #define PropertyTagChrominanceTable          0x5091
452
453 #define PropertyTagFrameDelay                0x5100
454 #define PropertyTagLoopCount                 0x5101
455
456 #define PropertyTagPixelUnit         0x5110  // Unit specifier for pixel/unit
457 #define PropertyTagPixelPerUnitX     0x5111  // Pixels per unit in X
458 #define PropertyTagPixelPerUnitY     0x5112  // Pixels per unit in Y
459 #define PropertyTagPaletteHistogram  0x5113  // Palette histogram
460
461 // EXIF specific tag
462
463 #define PropertyTagExifExposureTime  0x829A
464 #define PropertyTagExifFNumber       0x829D
465
466 #define PropertyTagExifExposureProg  0x8822
467 #define PropertyTagExifSpectralSense 0x8824
468 #define PropertyTagExifISOSpeed      0x8827
469 #define PropertyTagExifOECF          0x8828
470
471 #define PropertyTagExifVer            0x9000
472 #define PropertyTagExifDTOrig         0x9003 // Date & time of original
473 #define PropertyTagExifDTDigitized    0x9004 // Date & time of digital data generation
474
475 #define PropertyTagExifCompConfig     0x9101
476 #define PropertyTagExifCompBPP        0x9102
477
478 #define PropertyTagExifShutterSpeed   0x9201
479 #define PropertyTagExifAperture       0x9202
480 #define PropertyTagExifBrightness     0x9203
481 #define PropertyTagExifExposureBias   0x9204
482 #define PropertyTagExifMaxAperture    0x9205
483 #define PropertyTagExifSubjectDist    0x9206
484 #define PropertyTagExifMeteringMode   0x9207
485 #define PropertyTagExifLightSource    0x9208
486 #define PropertyTagExifFlash          0x9209
487 #define PropertyTagExifFocalLength    0x920A
488 #define PropertyTagExifMakerNote      0x927C
489 #define PropertyTagExifUserComment    0x9286
490 #define PropertyTagExifDTSubsec       0x9290  // Date & Time subseconds
491 #define PropertyTagExifDTOrigSS       0x9291  // Date & Time original subseconds
492 #define PropertyTagExifDTDigSS        0x9292  // Date & TIme digitized subseconds
493
494 #define PropertyTagExifFPXVer         0xA000
495 #define PropertyTagExifColorSpace     0xA001
496 #define PropertyTagExifPixXDim        0xA002
497 #define PropertyTagExifPixYDim        0xA003
498 #define PropertyTagExifRelatedWav     0xA004  // related sound file
499 #define PropertyTagExifInterop        0xA005
500 #define PropertyTagExifFlashEnergy    0xA20B
501 #define PropertyTagExifSpatialFR      0xA20C  // Spatial Frequency Response
502 #define PropertyTagExifFocalXRes      0xA20E  // Focal Plane X Resolution
503 #define PropertyTagExifFocalYRes      0xA20F  // Focal Plane Y Resolution
504 #define PropertyTagExifFocalResUnit   0xA210  // Focal Plane Resolution Unit
505 #define PropertyTagExifSubjectLoc     0xA214
506 #define PropertyTagExifExposureIndex  0xA215
507 #define PropertyTagExifSensingMethod  0xA217
508 #define PropertyTagExifFileSource     0xA300
509 #define PropertyTagExifSceneType      0xA301
510 #define PropertyTagExifCfaPattern     0xA302
511
512 #define PropertyTagGpsVer             0x0000
513 #define PropertyTagGpsLatitudeRef     0x0001
514 #define PropertyTagGpsLatitude        0x0002
515 #define PropertyTagGpsLongitudeRef    0x0003
516 #define PropertyTagGpsLongitude       0x0004
517 #define PropertyTagGpsAltitudeRef     0x0005
518 #define PropertyTagGpsAltitude        0x0006
519 #define PropertyTagGpsGpsTime         0x0007
520 #define PropertyTagGpsGpsSatellites   0x0008
521 #define PropertyTagGpsGpsStatus       0x0009
522 #define PropertyTagGpsGpsMeasureMode  0x00A
523 #define PropertyTagGpsGpsDop          0x000B  // Measurement precision
524 #define PropertyTagGpsSpeedRef        0x000C
525 #define PropertyTagGpsSpeed           0x000D
526 #define PropertyTagGpsTrackRef        0x000E
527 #define PropertyTagGpsTrack           0x000F
528 #define PropertyTagGpsImgDirRef       0x0010
529 #define PropertyTagGpsImgDir          0x0011
530 #define PropertyTagGpsMapDatum        0x0012
531 #define PropertyTagGpsDestLatRef      0x0013
532 #define PropertyTagGpsDestLat         0x0014
533 #define PropertyTagGpsDestLongRef     0x0015
534 #define PropertyTagGpsDestLong        0x0016
535 #define PropertyTagGpsDestBearRef     0x0017
536 #define PropertyTagGpsDestBear        0x0018
537 #define PropertyTagGpsDestDistRef     0x0019
538 #define PropertyTagGpsDestDist        0x001A
539
540 #endif