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
21DEFINE_GUID(ImageFormatUndefined, 0xb96b3ca9,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
22DEFINE_GUID(ImageFormatMemoryBMP, 0xb96b3caa,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
23DEFINE_GUID(ImageFormatBMP, 0xb96b3cab,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
24DEFINE_GUID(ImageFormatEMF, 0xb96b3cac,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
25DEFINE_GUID(ImageFormatWMF, 0xb96b3cad,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
26DEFINE_GUID(ImageFormatJPEG, 0xb96b3cae,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
27DEFINE_GUID(ImageFormatPNG, 0xb96b3caf,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
28DEFINE_GUID(ImageFormatGIF, 0xb96b3cb0,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
29DEFINE_GUID(ImageFormatTIFF, 0xb96b3cb1,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
30DEFINE_GUID(ImageFormatEXIF, 0xb96b3cb2,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
31#ifndef DCR_USE_NEW_140855
32DEFINE_GUID(ImageFormatPhotoCD, 0xb96b3cb3,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
33DEFINE_GUID(ImageFormatFlashPIX, 0xb96b3cb4,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
34#endif
35DEFINE_GUID(ImageFormatIcon, 0xb96b3cb5,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
36
37//---------------------------------------------------------------------------
38// Predefined multi-frame dimension IDs
39//---------------------------------------------------------------------------
40
41DEFINE_GUID(FrameDimensionTime, 0x6aedbd6d,0x3fb5,0x418a,0x83,0xa6,0x7f,0x45,0x22,0x9d,0xc8,0x72);
42DEFINE_GUID(FrameDimensionResolution, 0x84236f7b,0x3bd3,0x428f,0x8d,0xab,0x4e,0xa1,0x43,0x9c,0xa3,0x15);
43DEFINE_GUID(FrameDimensionPage, 0x7462dc86,0x6180,0x4c7e,0x8e,0x3f,0xee,0x73,0x33,0xa7,0xa4,0x83);
44
45//---------------------------------------------------------------------------
46// Property sets
47//---------------------------------------------------------------------------
48
49DEFINE_GUID(FormatIDImageInformation, 0xe5836cbe,0x5eef,0x4f1d,0xac,0xde,0xae,0x4c,0x43,0xb6,0x08,0xce);
50DEFINE_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//---------------------------------------------------------------------------
56DEFINE_GUID(DecoderTransColor, 0xb7a98c8f,0xdce7,0x457d,0xbf,0xa5,0xce,0xa7,0x1b,0xd1,0x4d,0xd6);
57DEFINE_GUID(DecoderTransRange, 0xabeed189,0xd988,0x4d03,0xb4,0x25,0x57,0x10,0x55,0xc7,0x6a,0xd1);
58DEFINE_GUID(DecoderOutputChannel, 0x2ff8f51e,0x724d,0x45fe,0x86,0xce,0x17,0x77,0xa0,0x56,0xda,0x60);
59DEFINE_GUID(DecoderIconRes, 0x5c656eec,0xe94f,0x45ba,0xa6,0xf6,0x10,0x62,0xe8,0x5f,0x4a,0x7f);
60#endif
61
62//---------------------------------------------------------------------------
63// Encoder parameter sets
64//---------------------------------------------------------------------------
65
66DEFINE_GUID(EncoderCompression, 0xe09d739d,0xccd4,0x44ee,0x8e,0xba,0x3f,0xbf,0x8b,0xe4,0xfc,0x58);
67DEFINE_GUID(EncoderColorDepth, 0x66087055,0xad66,0x4c7c,0x9a,0x18,0x38,0xa2,0x31,0x0b,0x83,0x37);
68DEFINE_GUID(EncoderScanMethod, 0x3a4e2661,0x3109,0x4e56,0x85,0x36,0x42,0xc1,0x56,0xe7,0xdc,0xfa);
69DEFINE_GUID(EncoderVersion, 0x24d18c76,0x814a,0x41a4,0xbf,0x53,0x1c,0x21,0x9c,0xcc,0xf7,0x97);
70DEFINE_GUID(EncoderRenderMethod, 0x6d42c53a,0x229a,0x4825,0x8b,0xb7,0x5c,0x99,0xe2,0xb9,0xa8,0xb8);
71DEFINE_GUID(EncoderQuality, 0x1d5be4b5,0xfa4a,0x452d,0x9c,0xdd,0x5d,0xb3,0x51,0x05,0xe7,0xeb);
72DEFINE_GUID(EncoderTransformation,0x8d0eb2d1,0xa58e,0x4ea8,0xaa,0x14,0x10,0x80,0x74,0xb7,0xb6,0xf9);
73DEFINE_GUID(EncoderLuminanceTable,0xedb33bce,0x0266,0x4a77,0xb9,0x04,0x27,0x21,0x60,0x99,0xe7,0x17);
74DEFINE_GUID(EncoderChrominanceTable,0xf2e455dc,0x09b3,0x4316,0x82,0x60,0x67,0x6a,0xda,0x32,0x48,0x1c);
75DEFINE_GUID(EncoderSaveFlag,0x292266fc,0xac40,0x47bf,0x8c, 0xfc, 0xa8, 0x5b, 0x89, 0xa6, 0x55, 0xde);
76
77DEFINE_GUID(CodecIImageBytes,0x025d1823,0x6c7d,0x447b,0xbb, 0xdb, 0xa3, 0xcb, 0xc3, 0xdf, 0xa2, 0xfc);
78
79MIDL_INTERFACE("025D1823-6C7D-447B-BBDB-A3CBC3DFA2FC")
80IImageBytes : public IUnknown
81{
82public:
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
112class ImageCodecInfo
113{
114public:
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
134enum 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
152enum ImageLockMode
153{
154    ImageLockModeRead        = 0x0001,
155    ImageLockModeWrite       = 0x0002,
156    ImageLockModeUserInputBuf= 0x0004
157};
158
159//---------------------------------------------------------------------------
160// Information about image pixel data
161//---------------------------------------------------------------------------
162
163class BitmapData
164{
165public:
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
178enum 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
208enum 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//---------------------------------------------------------------------------
234class EncoderParameter
235{
236public:
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//---------------------------------------------------------------------------
246class EncoderParameters
247{
248public:
249    UINT Count;                      // Number of parameters in this structure
250    EncoderParameter Parameter[1];   // Parameter values
251};
252
253//---------------------------------------------------------------------------
254// Property Item
255//---------------------------------------------------------------------------
256class PropertyItem
257{
258public:
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
541