Introduced IFDGPSTag enum
This commit is contained in:
@@ -39,6 +39,18 @@ namespace
|
||||
GPS_INFO_OFFSET = 0x8825,
|
||||
};
|
||||
|
||||
enum class IFDGPSTag : uint16_t
|
||||
{
|
||||
LATITUDE_REF = 1,
|
||||
LATITUDE,
|
||||
LONGITUDE_REF,
|
||||
LONGITUDE,
|
||||
ALTITUDE_REF,
|
||||
ALTITUDE,
|
||||
TRACK_REF = 14,
|
||||
TRACK,
|
||||
};
|
||||
|
||||
enum class IFDValueType
|
||||
{
|
||||
BYTE = 1,
|
||||
@@ -437,7 +449,7 @@ namespace OpenVulkano::Image
|
||||
AppendU16(result, numberOfGPSInfoTags);
|
||||
|
||||
// Latitude Ref
|
||||
AppendTagAndValueType(result, 1, (uint16_t) IFDValueType::ASCII);
|
||||
AppendTagAndValueType(result, (uint16_t) IFDGPSTag::LATITUDE_REF, (uint16_t) IFDValueType::ASCII);
|
||||
AppendU32(result, 2); // 2 for N/S + \0
|
||||
AppendU8(result, latitude.latitudeRef == LatitudeRef::NORTH ? 'N' : 'S');
|
||||
AppendU8(result, 0);
|
||||
@@ -445,12 +457,12 @@ namespace OpenVulkano::Image
|
||||
AppendU8(result, 0); // padding
|
||||
|
||||
// Latitude
|
||||
AppendTagAndValueType(result, 2, (uint16_t) IFDValueType::RATIONAL);
|
||||
AppendTagAndValueType(result, (uint16_t) IFDGPSTag::LATITUDE, (uint16_t) IFDValueType::RATIONAL);
|
||||
AppendU32(result, 3); // number of components
|
||||
int latitudeOffset = AppendU32NES(result, 0); // 0 * sizeof(RationalValue)
|
||||
|
||||
// Longitude Ref
|
||||
AppendTagAndValueType(result, 3, (uint16_t) IFDValueType::ASCII);
|
||||
AppendTagAndValueType(result, (uint16_t) IFDGPSTag::LONGITUDE_REF, (uint16_t) IFDValueType::ASCII);
|
||||
AppendU32(result, 2); // 2 for E/W + \0
|
||||
AppendU8(result, longitude.longitudeRef == LongitudeRef::EAST ? 'E' : 'W');
|
||||
AppendU8(result, 0);
|
||||
@@ -458,12 +470,12 @@ namespace OpenVulkano::Image
|
||||
AppendU8(result, 0); // padding
|
||||
|
||||
// Longitude
|
||||
AppendTagAndValueType(result, 4, (uint16_t) IFDValueType::RATIONAL);
|
||||
AppendTagAndValueType(result, (uint16_t) IFDGPSTag::LONGITUDE, (uint16_t) IFDValueType::RATIONAL);
|
||||
AppendU32(result, 3); // number of components
|
||||
int longitudeOffset = AppendU32NES(result, 24); // 3 * sizeof(RationalValue)
|
||||
|
||||
// Altitude Ref
|
||||
AppendTagAndValueType(result, 5, (uint16_t) IFDValueType::BYTE);
|
||||
AppendTagAndValueType(result, (uint16_t) IFDGPSTag::ALTITUDE_REF, (uint16_t) IFDValueType::BYTE);
|
||||
AppendU32(result, 1); // number of components
|
||||
AppendU8(result, altitudeIsAboveSeaLevel ? 0 : 1);
|
||||
AppendU8(result, 0); // padding
|
||||
@@ -471,12 +483,12 @@ namespace OpenVulkano::Image
|
||||
AppendU8(result, 0); // padding
|
||||
|
||||
// Altitude
|
||||
AppendTagAndValueType(result, 6, (uint16_t) IFDValueType::RATIONAL);
|
||||
AppendTagAndValueType(result, (uint16_t) IFDGPSTag::ALTITUDE, (uint16_t) IFDValueType::RATIONAL);
|
||||
AppendU32(result, 1); // number of components
|
||||
int altitudeOffset = AppendU32NES(result, 48); // 6 * sizeof(RationalValue)
|
||||
|
||||
// Track Ref
|
||||
AppendTagAndValueType(result, 14, (uint16_t) IFDValueType::ASCII);
|
||||
AppendTagAndValueType(result, (uint16_t) IFDGPSTag::TRACK_REF, (uint16_t) IFDValueType::ASCII);
|
||||
AppendU32(result, 2); // 2 for T/M + \0
|
||||
AppendU8(result, trackRef == GPSTrackRef::TRUE_NORTH ? 'T' : 'M');
|
||||
AppendU8(result, 0);
|
||||
@@ -484,7 +496,7 @@ namespace OpenVulkano::Image
|
||||
AppendU8(result, 0); // padding
|
||||
|
||||
// Track
|
||||
AppendTagAndValueType(result, 15, (uint16_t) IFDValueType::RATIONAL);
|
||||
AppendTagAndValueType(result, (uint16_t) IFDGPSTag::TRACK, (uint16_t) IFDValueType::RATIONAL);
|
||||
AppendU32(result, 1); // number of components
|
||||
int trackOffset = AppendU32NES(result, 56); // 7 * sizeof(RationalValue)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user