' ########################################################################################
' Microsoft Windows
' File: GdiPlusImaging.inc
' Contents: GDI+ Imaging GUIDs
' Copyright (c) 2011 Jos? Roca
' Portions Copyright (c) Microsoft Corporation.
' All Rights Reserved.
' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
' EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
' MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
' ########################################################################################
#IF NOT %DEF(PBX_GdiPlusImaging_PBI)
#DEFINE PBX_GdiPlusImaging_PBI
%EQUATE `GDIPLUSIMAGING_INC = 1
'//---------------------------------------------------------------------------
'// Image file format identifiers
'//---------------------------------------------------------------------------
$ImageFormatUndefined = GUID$("{B96B3CA9-0728-11D3-9D7B-0000F81EF32E}")
$ImageFormatMemoryBMP = GUID$("{B96B3CAA-0728-11D3-9D7B-0000F81EF32E}")
$ImageFormatBMP = GUID$("{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}")
$ImageFormatEMF = GUID$("{B96B3CAC-0728-11D3-9D7B-0000F81EF32E}")
$ImageFormatWMF = GUID$("{B96B3CAD-0728-11D3-9D7B-0000F81EF32E}")
$ImageFormatJPEG = GUID$("{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}")
$ImageFormatPNG = GUID$("{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}")
$ImageFormatGIF = GUID$("{B96B3CB0-0728-11D3-9D7B-0000F81EF32E}")
$ImageFormatTIFF = GUID$("{B96B3CB1-0728-11D3-9D7B-0000F81EF32E}")
$ImageFormatEXIF = GUID$("{B96B3CB2-0728-11D3-9D7B-0000F81EF32E}")
$ImageFormatIcon = GUID$("{B96B3CB5-0728-11D3-9D7B-0000F81EF32E}")
'//---------------------------------------------------------------------------
'// Predefined multi-frame dimension IDs
'//---------------------------------------------------------------------------
$FrameDimensionTime = GUID$("{6AEDBD6D-3FB5-418A-83A6-7F45229DC872}")
$FrameDimensionResolution = GUID$("{84236F7B-3BD3-428F-8DAB-4EA1439CA315}")
$FrameDimensionPage = GUID$("{7462DC86-6180-4C7E-8E3F-EE7333A7A483}")
'//---------------------------------------------------------------------------
'// Property sets
'//---------------------------------------------------------------------------
$FormatIDImageInformation = GUID$("{E5836CBE-5EEF-0F1D-ACDE-AE4C43B608CE}")
$FormatIDJpegAppHeaders = GUID$("{1C4AFDCD-6177-43CF-ABC7-5F51AF39EE85}")
'//---------------------------------------------------------------------------
'// Encoder parameter sets
'//---------------------------------------------------------------------------
$EncoderCompression = GUID$("{E09D739D-CCD4-44EE-8EBA-3FBF8BE4FC58}")
$EncoderColorDepth = GUID$("{66087055-AD66-4C7C-9A18-38A2310B8337}")
$EncoderScanMethod = GUID$("{3A4E2661-3109-4E56-8536-42C156E7DCFA}")
$EncoderVersion = GUID$("{24D18C76-814A-41A4-BF53-1C219CCCF797}")
$EncoderRenderMethod = GUID$("{6D42C53A-229A-4825-8BB7-5C99E2B9A8B8}")
$EncoderQuality = GUID$("{1D5BE4B5-FA4A-452D-9CDD-5DB35105E7EB}")
$EncoderTransformation = GUID$("{8D0EB2D1-A58E-4EA8-AA14-108074B7B6F9}")
$EncoderLuminanceTable = GUID$("{EDB33BCE-0266-4A77-B904-27216099E717}")
$EncoderChrominanceTable = GUID$("{F2E455DC-09B3-4316-8260-676ADA32481C}")
$EncoderSaveFlag = GUID$("{292266FC-AC40-47BF-8CFC-A85B89A655DE}")
#IF (%GDIPVER >= &H0110)
$EncoderColorSpace = GUID$("{AE7A62A0-EE2C-49D8-9D07-1BA8A927596E}")
$EncoderImageItems = GUID$("{63875E13-1F1D-45AB-9195-A29B6066A650}")
$EncoderSaveAsCMYK = GUID$("{A219BBC9-0A9D-4005-A3EE-3A421B8BB06C}")
#ENDIF ' //(%GDIPVER >= &H0110)
$CodecIImageBytes = GUID$("{025D1823-6C7D-447B-BBDB-A3CBC3DFA2FC}")
' ########################################################################################
' Interface name = IImageBytes
' IID = 025D1823-6C7D-447B-BBDB-A3CBC3DFA2FC
' Inherited interface = IUnknown
' ########################################################################################
$IID_IImageBytes = GUID$("{025D1823-6C7D-447B-BBDB-A3CBC3DFA2FC}")
INTERFACE IImageBytes $IID_IImageBytes
 INHERIT IDispatch
 ' =====================================================================================
 METHOD CountBytes ( ' VTable offset = 12
 BYREF pcb AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD LockBytes ( ' VTable offset = 16
 BYVAL cb AS DWORD
 , BYVAL ulOffset AS DWORD
 , BYREF ppvBytes AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD UnlockBytes ( ' VTable offset = 20
 BYVAL pvBytes AS DWORD
 , BYVAL cb AS DWORD
 , BYVAL ulOffset AS DWORD
 ) AS LONG
 ' =====================================================================================
END INTERFACE
'//--------------------------------------------------------------------------
'// ImageCodecInfo structure
'//--------------------------------------------------------------------------
' // Size = 76 bytes
TYPE ImageCodecInfo DWORD
 Clsid AS GUID ' CLSID
 FormatID AS GUID ' GUID
 CodecName AS WSTRINGZ PTR ' const WCHAR*
 DllName AS WSTRINGZ PTR ' const WCHAR*
 FormatDescription AS WSTRINGZ PTR ' const WCHAR*
 FilenameExtension AS WSTRINGZ PTR ' const WCHAR*
 MimeType AS WSTRINGZ PTR ' const WCHAR*
 Flags AS DWORD
 Version AS DWORD
 SigCount AS DWORD
 SigSize AS DWORD
 SigPattern AS BYTE PTR ' const BYTE*
 SigMask AS BYTE PTR ' const BYTE*
END TYPE
'//--------------------------------------------------------------------------
'// Information flags about image codecs
'//--------------------------------------------------------------------------
' enum ImageCodecFlags
%EQUATE `ImageCodecFlagsEncoder = &H00000001
%EQUATE `ImageCodecFlagsDecoder = &H00000002
%EQUATE `ImageCodecFlagsSupportBitmap = &H00000004
%EQUATE `ImageCodecFlagsSupportVector = &H00000008
%EQUATE `ImageCodecFlagsSeekableEncode = &H00000010
%EQUATE `ImageCodecFlagsBlockingDecode = &H00000020
%EQUATE `ImageCodecFlagsBuiltin = &H00010000
%EQUATE `ImageCodecFlagsSystem = &H00020000
%EQUATE `ImageCodecFlagsUser = &H00040000
'//---------------------------------------------------------------------------
'// Access modes used when calling Image::LockBits
'//---------------------------------------------------------------------------
' enum ImageLockMode
%EQUATE `ImageLockModeRead = &H0001
%EQUATE `ImageLockModeWrite = &H0002
%EQUATE `ImageLockModeUserInputBuf = &H0004
'//---------------------------------------------------------------------------
'// Information about image pixel data
'//---------------------------------------------------------------------------
' // Size = 24 bytes
TYPE BitmapData DWORD
 Width AS DWORD ' UINT
 Height AS DWORD ' UINT
 Stride AS LONG ' INT
 PixelFormat AS LONG ' PixelFormat
 Scan0 AS DWORD ' VOID*
 Reserved AS DWORD ' UINT_PTR
END TYPE
'//---------------------------------------------------------------------------
'// Image flags
'//---------------------------------------------------------------------------
' enum ImageFlags
%EQUATE `ImageFlagsNone = 0
'// Low-word: shared with SINKFLAG_x
%EQUATE `ImageFlagsScalable = &H0001
%EQUATE `ImageFlagsHasAlpha = &H0002
%EQUATE `ImageFlagsHasTranslucent = &H0004
%EQUATE `ImageFlagsPartiallyScalable = &H0008
'// Low-word: color space definition
%EQUATE `ImageFlagsColorSpaceRGB = &H0010
%EQUATE `ImageFlagsColorSpaceCMYK = &H0020
%EQUATE `ImageFlagsColorSpaceGRAY = &H0040
%EQUATE `ImageFlagsColorSpaceYCBCR = &H0080
%EQUATE `ImageFlagsColorSpaceYCCK = &H0100
'// Low-word: image size info
%EQUATE `ImageFlagsHasRealDPI = &H1000
%EQUATE `ImageFlagsHasRealPixelSize = &H2000
'// High-word
%EQUATE `ImageFlagsReadOnly = &H00010000
%EQUATE `ImageFlagsCaching = &H00020000
' enum RotateFlipType
%EQUATE `RotateNoneFlipNone = 0
%EQUATE `Rotate90FlipNone = 1
%EQUATE `Rotate180FlipNone = 2
%EQUATE `Rotate270FlipNone = 3
%EQUATE `RotateNoneFlipX = 4
%EQUATE `Rotate90FlipX = 5
%EQUATE `Rotate180FlipX = 6
%EQUATE `Rotate270FlipX = 7
%EQUATE `RotateNoneFlipY = %Rotate180FlipX
%EQUATE `Rotate90FlipY = %Rotate270FlipX
%EQUATE `Rotate180FlipY = %RotateNoneFlipX
%EQUATE `Rotate270FlipY = %Rotate90FlipX
%EQUATE `RotateNoneFlipXY = %Rotate180FlipNone
%EQUATE `Rotate90FlipXY = %Rotate270FlipNone
%EQUATE `Rotate180FlipXY = %RotateNoneFlipNone
%EQUATE `Rotate270FlipXY = %Rotate90FlipNone
'//---------------------------------------------------------------------------
'// Encoder Parameter structure
'//---------------------------------------------------------------------------
' // Size = 28 bytes
TYPE EncoderParameter DWORD
 pGuid AS GUID ' // GUID of the parameter
 NumberOfValues AS DWORD ' // Number of the parameter values
 dwType AS DWORD ' // Value type, like ValueTypeLONG etc.
 Value AS DWORD ' // A pointer to the parameter values
END TYPE
'//---------------------------------------------------------------------------
'// Encoder Parameters structure
'//---------------------------------------------------------------------------
' // Size = 32 bytes
TYPE EncoderParameters DWORD
 Count AS DWORD ' // Number of parameters in this structure
 Parameter(0) AS EncoderParameter ' // Parameter values - variable-length array
END TYPE
#IF (%GDIPVER >= &H0110)
' enum ItemDataPosition
%EQUATE `ItemDataPositionAfterHeader = &H0
%EQUATE `ItemDataPositionAfterPalette = &H1
%EQUATE `ItemDataPositionAfterBits = &H2
'//---------------------------------------------------------------------------
'// External Data Item
'//---------------------------------------------------------------------------
' // Size = 28 bytes
TYPE ImageItemData DWORD
 Size AS DWORD ' UINT // size of the structure
 Position AS DWORD ' UINT // flags describing how the data is to be used.
 Desc AS DWORD ' VOID* // description on how the data is to be saved.
 ' // it is different for every codec type.
 DescSize AS DWORD ' UINT // size memory pointed by Desc
 Data AS DWORD ' VOID* // pointer to the data that is to be saved in the
 ' // file, could be anything saved directly.
 DataSize AS DWORD ' UINT // size memory pointed by Data
 Cookie AS DWORD ' UINT // opaque for the apps data member used during
 ' // enumeration of image data items.
END TYPE
#ENDIF ' //(%GDIPVER >= &H0110)
'//---------------------------------------------------------------------------
'// Property Item
'//---------------------------------------------------------------------------
' // Size = 16 bytes
TYPE PropertyItem DWORD ' // Must be DWORD aligned
 id AS DWORD ' // ID of this property
 length AS DWORD ' // Length of the property value, in bytes
 type AS WORD ' // Type of the value, as one of PropertyTagxxx defined below
 value AS DWORD ' // property value
END TYPE
'//---------------------------------------------------------------------------
'// Image property types
'//---------------------------------------------------------------------------
%EQUATE `PropertyTagTypeByte = 1
%EQUATE `PropertyTagTypeASCII = 2
%EQUATE `PropertyTagTypeShort = 3
%EQUATE `PropertyTagTypeLong = 4
%EQUATE `PropertyTagTypeRational = 5
%EQUATE `PropertyTagTypeUndefined = 7
%EQUATE `PropertyTagTypeSLONG = 9
%EQUATE `PropertyTagTypeSRational = 10
'//---------------------------------------------------------------------------
'// Image property ID tags
'//---------------------------------------------------------------------------
%EQUATE `PropertyTagExifIFD = &H8769
%EQUATE `PropertyTagGpsIFD = &H8825
%EQUATE `PropertyTagNewSubfileType = &H00FE
%EQUATE `PropertyTagSubfileType = &H00FF
%EQUATE `PropertyTagImageWidth = &H0100
%EQUATE `PropertyTagImageHeight = &H0101
%EQUATE `PropertyTagBitsPerSample = &H0102
%EQUATE `PropertyTagCompression = &H0103
%EQUATE `PropertyTagPhotometricInterp = &H0106
%EQUATE `PropertyTagThreshHolding = &H0107
%EQUATE `PropertyTagCellWidth = &H0108
%EQUATE `PropertyTagCellHeight = &H0109
%EQUATE `PropertyTagFillOrder = &H010A
%EQUATE `PropertyTagDocumentName = &H010D
%EQUATE `PropertyTagImageDescription = &H010E
%EQUATE `PropertyTagEquipMake = &H010F
%EQUATE `PropertyTagEquipModel = &H0110
%EQUATE `PropertyTagStripOffsets = &H0111
%EQUATE `PropertyTagOrientation = &H0112
%EQUATE `PropertyTagSamplesPerPixel = &H0115
%EQUATE `PropertyTagRowsPerStrip = &H0116
%EQUATE `PropertyTagStripBytesCount = &H0117
%EQUATE `PropertyTagMinSampleValue = &H0118
%EQUATE `PropertyTagMaxSampleValue = &H0119
%EQUATE `PropertyTagXResolution = &H011A ' // Image resolution in width direction
%EQUATE `PropertyTagYResolution = &H011B ' // Image resolution in height direction
%EQUATE `PropertyTagPlanarConfig = &H011C ' // Image data arrangement
%EQUATE `PropertyTagPageName = &H011D
%EQUATE `PropertyTagXPosition = &H011E
%EQUATE `PropertyTagYPosition = &H011F
%EQUATE `PropertyTagFreeOffset = &H0120
%EQUATE `PropertyTagFreeByteCounts = &H0121
%EQUATE `PropertyTagGrayResponseUnit = &H0122
%EQUATE `PropertyTagGrayResponseCurve = &H0123
%EQUATE `PropertyTagT4Option = &H0124
%EQUATE `PropertyTagT6Option = &H0125
%EQUATE `PropertyTagResolutionUnit = &H0128 ' // Unit of and Y resolution
%EQUATE `PropertyTagPageNumber = &H0129
%EQUATE `PropertyTagTransferFunction = &H012D
%EQUATE `PropertyTagSoftwareUsed = &H0131
%EQUATE `PropertyTagDateTime = &H0132
%EQUATE `PropertyTagArtist = &H013B
%EQUATE `PropertyTagHostComputer = &H013C
%EQUATE `PropertyTagPredictor = &H013D
%EQUATE `PropertyTagWhitePoint = &H013E
%EQUATE `PropertyTagPrimaryChromaticities = &H013F
%EQUATE `PropertyTagColorMap = &H0140
%EQUATE `PropertyTagHalftoneHints = &H0141
%EQUATE `PropertyTagTileWidth = &H0142
%EQUATE `PropertyTagTileLength = &H0143
%EQUATE `PropertyTagTileOffset = &H0144
%EQUATE `PropertyTagTileByteCounts = &H0145
%EQUATE `PropertyTagInkSet = &H014C
%EQUATE `PropertyTagInkNames = &H014D
%EQUATE `PropertyTagNumberOfInks = &H014E
%EQUATE `PropertyTagDotRange = &H0150
%EQUATE `PropertyTagTargetPrinter = &H0151
%EQUATE `PropertyTagExtraSamples = &H0152
%EQUATE `PropertyTagSampleFormat = &H0153
%EQUATE `PropertyTagSMinSampleValue = &H0154
%EQUATE `PropertyTagSMaxSampleValue = &H0155
%EQUATE `PropertyTagTransferRange = &H0156
%EQUATE `PropertyTagJPEGProc = &H0200
%EQUATE `PropertyTagJPEGInterFormat = &H0201
%EQUATE `PropertyTagJPEGInterLength = &H0202
%EQUATE `PropertyTagJPEGRestartInterval = &H0203
%EQUATE `PropertyTagJPEGLosslessPredictors = &H0205
%EQUATE `PropertyTagJPEGPointTransforms = &H0206
%EQUATE `PropertyTagJPEGQTables = &H0207
%EQUATE `PropertyTagJPEGDCTables = &H0208
%EQUATE `PropertyTagJPEGACTables = &H0209
%EQUATE `PropertyTagYCbCrCoefficients = &H0211
%EQUATE `PropertyTagYCbCrSubsampling = &H0212
%EQUATE `PropertyTagYCbCrPositioning = &H0213
%EQUATE `PropertyTagREFBlackWhite = &H0214
%EQUATE `PropertyTagICCProfile = &H8773 ' // This TAG is defined by ICC for embedded ICC in TIFF
%EQUATE `PropertyTagGamma = &H0301
%EQUATE `PropertyTagICCProfileDescriptor = &H0302
%EQUATE `PropertyTagSRGBRenderingIntent = &H0303
%EQUATE `PropertyTagImageTitle = &H0320
%EQUATE `PropertyTagCopyright = &H8298
'// Extra TAGs (Like Adobe Image Information tags etc.)
%EQUATE `PropertyTagResolutionXUnit = &H5001
%EQUATE `PropertyTagResolutionYUnit = &H5002
%EQUATE `PropertyTagResolutionXLengthUnit = &H5003
%EQUATE `PropertyTagResolutionYLengthUnit = &H5004
%EQUATE `PropertyTagPrintFlags = &H5005
%EQUATE `PropertyTagPrintFlagsVersion = &H5006
%EQUATE `PropertyTagPrintFlagsCrop = &H5007
%EQUATE `PropertyTagPrintFlagsBleedWidth = &H5008
%EQUATE `PropertyTagPrintFlagsBleedWidthScale = &H5009
%EQUATE `PropertyTagHalftoneLPI = &H500A
%EQUATE `PropertyTagHalftoneLPIUnit = &H500B
%EQUATE `PropertyTagHalftoneDegree = &H500C
%EQUATE `PropertyTagHalftoneShape = &H500D
%EQUATE `PropertyTagHalftoneMisc = &H500E
%EQUATE `PropertyTagHalftoneScreen = &H500F
%EQUATE `PropertyTagJPEGQuality = &H5010
%EQUATE `PropertyTagGridSize = &H5011
%EQUATE `PropertyTagThumbnailFormat = &H5012 ' // 1 = JPEG, 0 = RAW RGB
%EQUATE `PropertyTagThumbnailWidth = &H5013
%EQUATE `PropertyTagThumbnailHeight = &H5014
%EQUATE `PropertyTagThumbnailColorDepth = &H5015
%EQUATE `PropertyTagThumbnailPlanes = &H5016
%EQUATE `PropertyTagThumbnailRawBytes = &H5017
%EQUATE `PropertyTagThumbnailSize = &H5018
%EQUATE `PropertyTagThumbnailCompressedSize = &H5019
%EQUATE `PropertyTagColorTransferFunction = &H501A
%EQUATE `PropertyTagThumbnailData = &H501B ' // RAW thumbnail bits in
 ' // JPEG format or RGB format
 ' // depends on
 ' // PropertyTagThumbnailFormat
'// Thumbnail related TAGs
%EQUATE `PropertyTagThumbnailImageWidth = &H5020 ' // Thumbnail width
%EQUATE `PropertyTagThumbnailImageHeight = &H5021 ' // Thumbnail height
%EQUATE `PropertyTagThumbnailBitsPerSample = &H5022 ' // Number of bits per component
%EQUATE `PropertyTagThumbnailCompression = &H5023 ' // Compression Scheme
%EQUATE `PropertyTagThumbnailPhotometricInterp = &H5024 ' // Pixel composition
%EQUATE `PropertyTagThumbnailImageDescription = &H5025 ' // Image Tile
%EQUATE `PropertyTagThumbnailEquipMake = &H5026 ' // Manufacturer of Image Input equipment
%EQUATE `PropertyTagThumbnailEquipModel = &H5027 ' // Model of Image input equipment
%EQUATE `PropertyTagThumbnailStripOffsets = &H5028 ' // Image data location
%EQUATE `PropertyTagThumbnailOrientation = &H5029 ' // Orientation of image
%EQUATE `PropertyTagThumbnailSamplesPerPixel = &H502A ' // Number of components
%EQUATE `PropertyTagThumbnailRowsPerStrip = &H502B ' // Number of rows per strip
%EQUATE `PropertyTagThumbnailStripBytesCount = &H502C ' // Bytes per compressed strip
%EQUATE `PropertyTagThumbnailResolutionX = &H502D ' // Resolution in width direction
%EQUATE `PropertyTagThumbnailResolutionY = &H502E ' // Resolution in height direction
%EQUATE `PropertyTagThumbnailPlanarConfig = &H502F ' // Image data arrangement
%EQUATE `PropertyTagThumbnailResolutionUnit = &H5030 ' // Unit of and Y Resolution
%EQUATE `PropertyTagThumbnailTransferFunction = &H5031 ' // Transfer function
%EQUATE `PropertyTagThumbnailSoftwareUsed = &H5032 ' // Software used
%EQUATE `PropertyTagThumbnailDateTime = &H5033 ' // File change date and time
%EQUATE `PropertyTagThumbnailArtist = &H5034 ' // Person who created the image
%EQUATE `PropertyTagThumbnailWhitePoint = &H5035 ' // White point chromaticity
%EQUATE `PropertyTagThumbnailPrimaryChromaticities = &H5036
 ' // Chromaticities of primaries
%EQUATE `PropertyTagThumbnailYCbCrCoefficients = &H5037 ' // Color space transformation coefficients
%EQUATE `PropertyTagThumbnailYCbCrSubsampling = &H5038 ' // Subsampling ratio of Y to C
%EQUATE `PropertyTagThumbnailYCbCrPositioning = &H5039 ' // Y and C position
%EQUATE `PropertyTagThumbnailRefBlackWhite = &H503A ' // Pair of black and white reference values
%EQUATE `PropertyTagThumbnailCopyRight = &H503B ' // CopyRight holder
%EQUATE `PropertyTagLuminanceTable = &H5090
%EQUATE `PropertyTagChrominanceTable = &H5091
%EQUATE `PropertyTagFrameDelay = &H5100
%EQUATE `PropertyTagLoopCount = &H5101
#IF (%GDIPVER >= &H0110)
%EQUATE `PropertyTagGlobalPalette = &H5102
%EQUATE `PropertyTagIndexBackground = &H5103
%EQUATE `PropertyTagIndexTransparent = &H5104
#ENDIF ' //(%GDIPVER >= &H0110)
%EQUATE `PropertyTagPixelUnit = &H5110 ' // Unit specifier for pixel/unit
%EQUATE `PropertyTagPixelPerUnitX = &H5111 ' // Pixels per unit in X
%EQUATE `PropertyTagPixelPerUnitY = &H5112 ' // Pixels per unit in Y
%EQUATE `PropertyTagPaletteHistogram = &H5113 ' // Palette histogram
'// EXIF specific tag
%EQUATE `PropertyTagExifExposureTime = &H829A
%EQUATE `PropertyTagExifFNumber = &H829D
%EQUATE `PropertyTagExifExposureProg = &H8822
%EQUATE `PropertyTagExifSpectralSense = &H8824
%EQUATE `PropertyTagExifISOSpeed = &H8827
%EQUATE `PropertyTagExifOECF = &H8828
%EQUATE `PropertyTagExifVer = &H9000
%EQUATE `PropertyTagExifDTOrig = &H9003 ' // Date & time of original
%EQUATE `PropertyTagExifDTDigitized = &H9004 ' // Date & time of digital data generation
%EQUATE `PropertyTagExifCompConfig = &H9101
%EQUATE `PropertyTagExifCompBPP = &H9102
%EQUATE `PropertyTagExifShutterSpeed = &H9201
%EQUATE `PropertyTagExifAperture = &H9202
%EQUATE `PropertyTagExifBrightness = &H9203
%EQUATE `PropertyTagExifExposureBias = &H9204
%EQUATE `PropertyTagExifMaxAperture = &H9205
%EQUATE `PropertyTagExifSubjectDist = &H9206
%EQUATE `PropertyTagExifMeteringMode = &H9207
%EQUATE `PropertyTagExifLightSource = &H9208
%EQUATE `PropertyTagExifFlash = &H9209
%EQUATE `PropertyTagExifFocalLength = &H920A
%EQUATE `PropertyTagExifMakerNote = &H927C
%EQUATE `PropertyTagExifUserComment = &H9286
%EQUATE `PropertyTagExifDTSubsec = &H9290 ' // Date & Time subseconds
%EQUATE `PropertyTagExifDTOrigSS = &H9291 ' // Date & Time original subseconds
%EQUATE `PropertyTagExifDTDigSS = &H9292 ' // Date & TIme digitized subseconds
%EQUATE `PropertyTagExifFPXVer = &HA000
%EQUATE `PropertyTagExifColorSpace = &HA001
%EQUATE `PropertyTagExifPixXDim = &HA002
%EQUATE `PropertyTagExifPixYDim = &HA003
%EQUATE `PropertyTagExifRelatedWav = &HA004 ' // related sound file
%EQUATE `PropertyTagExifInterop = &HA005
%EQUATE `PropertyTagExifFlashEnergy = &HA20B
%EQUATE `PropertyTagExifSpatialFR = &HA20C ' // Spatial Frequency Response
%EQUATE `PropertyTagExifFocalXRes = &HA20E ' // Focal Plane Resolution
%EQUATE `PropertyTagExifFocalYRes = &HA20F ' // Focal Plane Y Resolution
%EQUATE `PropertyTagExifFocalResUnit = &HA210 ' // Focal Plane Resolution Unit
%EQUATE `PropertyTagExifSubjectLoc = &HA214
%EQUATE `PropertyTagExifExposureIndex = &HA215
%EQUATE `PropertyTagExifSensingMethod = &HA217
%EQUATE `PropertyTagExifFileSource = &HA300
%EQUATE `PropertyTagExifSceneType = &HA301
%EQUATE `PropertyTagExifCfaPattern = &HA302
'// New EXIF 2.2 properties
%EQUATE `PropertyTagExifCustomRendered = &HA401
%EQUATE `PropertyTagExifExposureMode = &HA402
%EQUATE `PropertyTagExifWhiteBalance = &HA403
%EQUATE `PropertyTagExifDigitalZoomRatio = &HA404
%EQUATE `PropertyTagExifFocalLengthIn35mmFilm = &HA405
%EQUATE `PropertyTagExifSceneCaptureType = &HA406
%EQUATE `PropertyTagExifGainControl = &HA407
%EQUATE `PropertyTagExifContrast = &HA408
%EQUATE `PropertyTagExifSaturation = &HA409
%EQUATE `PropertyTagExifSharpness = &HA40A
%EQUATE `PropertyTagExifDeviceSettingDesc = &HA40B
%EQUATE `PropertyTagExifSubjectDistanceRange = &HA40C
%EQUATE `PropertyTagExifUniqueImageID = &HA420
%EQUATE `PropertyTagGpsVer = &H0000
%EQUATE `PropertyTagGpsLatitudeRef = &H0001
%EQUATE `PropertyTagGpsLatitude = &H0002
%EQUATE `PropertyTagGpsLongitudeRef = &H0003
%EQUATE `PropertyTagGpsLongitude = &H0004
%EQUATE `PropertyTagGpsAltitudeRef = &H0005
%EQUATE `PropertyTagGpsAltitude = &H0006
%EQUATE `PropertyTagGpsGpsTime = &H0007
%EQUATE `PropertyTagGpsGpsSatellites = &H0008
%EQUATE `PropertyTagGpsGpsStatus = &H0009
%EQUATE `PropertyTagGpsGpsMeasureMode = &H000A
%EQUATE `PropertyTagGpsGpsDop = &H000B ' // Measurement precision
%EQUATE `PropertyTagGpsSpeedRef = &H000C
%EQUATE `PropertyTagGpsSpeed = &H000D
%EQUATE `PropertyTagGpsTrackRef = &H000E
%EQUATE `PropertyTagGpsTrack = &H000F
%EQUATE `PropertyTagGpsImgDirRef = &H0010
%EQUATE `PropertyTagGpsImgDir = &H0011
%EQUATE `PropertyTagGpsMapDatum = &H0012
%EQUATE `PropertyTagGpsDestLatRef = &H0013
%EQUATE `PropertyTagGpsDestLat = &H0014
%EQUATE `PropertyTagGpsDestLongRef = &H0015
%EQUATE `PropertyTagGpsDestLong = &H0016
%EQUATE `PropertyTagGpsDestBearRef = &H0017
%EQUATE `PropertyTagGpsDestBear = &H0018
%EQUATE `PropertyTagGpsDestDistRef = &H0019
%EQUATE `PropertyTagGpsDestDist = &H001A
%EQUATE `PropertyTagGpsProcessingMethod = &H001B
%EQUATE `PropertyTagGpsAreaInformation = &H001C
%EQUATE `PropertyTagGpsDate = &H001D
%EQUATE `PropertyTagGpsDifferential = &H001E
#ENDIF
