Home | History | Annotate | Download | only in include
      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
    541