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