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