Minor changes

This commit is contained in:
Vladyslav Baranovskyi
2024-09-24 16:37:37 +03:00
parent ed87e1dfdb
commit a166350abd

View File

@@ -16,11 +16,11 @@
namespace
{
const int EXIF_HEADER_SIZE = 6;
std::array<char, EXIF_HEADER_SIZE> EXIF_HEADER_AND_PADDING = { 'E', 'x', 'i', 'f', 0, 0 };
constexpr int EXIF_HEADER_SIZE = 6;
constexpr std::array<char, EXIF_HEADER_SIZE> EXIF_HEADER_AND_PADDING = { 'E', 'x', 'i', 'f', 0, 0 };
const int TIFF_HEADER_SIZE = 4;
std::array<char, TIFF_HEADER_SIZE> TIFF_HEADER = { 0x4d, 0x4d, 0, 0x2a };
constexpr int TIFF_HEADER_SIZE = 4;
constexpr std::array<char, TIFF_HEADER_SIZE> TIFF_HEADER = { 0x4d, 0x4d, 0, 0x2a };
constexpr bool LITTLE_ENDIAN = std::endian::native == std::endian::little;
@@ -70,59 +70,46 @@ namespace
return result;
}
int AppendU8(std::vector<uint8_t>& array, uint8_t value)
template<typename T>
int Append(std::vector<uint8_t>& array, T value)
{
int offset = array.size();
array.push_back(value);
const int bytes = sizeof(T);
char *c = (char *) &value;
for (int i = 0; i < bytes; i++)
{
array.push_back(c[i]);
}
return offset;
}
int AppendU8(std::vector<uint8_t>& array, uint8_t value)
{
return Append<uint8_t>(array, value);
}
int AppendU16(std::vector<uint8_t>& array, uint16_t value)
{
int offset = array.size();
if constexpr (LITTLE_ENDIAN)
{
value = ::EndianSwap(value);
}
char *src = (char *) &value;
array.push_back(src[0]);
array.push_back(src[1]);
return offset;
return Append<uint16_t>(array, value);
}
// no endian swap
int AppendU32NES(std::vector<uint8_t>& array, uint32_t value)
{
int offset = array.size();
char *src = (char *) &value;
array.push_back(src[0]);
array.push_back(src[1]);
array.push_back(src[2]);
array.push_back(src[3]);
return offset;
return Append<uint32_t>(array, value);
}
int AppendU32(std::vector<uint8_t>& array, uint32_t value)
{
int offset = array.size();
if constexpr (LITTLE_ENDIAN)
{
value = ::EndianSwap(value);
}
char *src = (char *) &value;
array.push_back(src[0]);
array.push_back(src[1]);
array.push_back(src[2]);
array.push_back(src[3]);
return offset;
return Append<uint32_t>(array, value);
}
template<int COUNT>
@@ -138,7 +125,7 @@ namespace
return offset;
}
int AppendVector(std::vector<uint8_t>& array, std::vector<uint8_t> values)
int AppendVector(std::vector<uint8_t>& array, const std::vector<uint8_t>& values)
{
int offset = array.size();
@@ -233,7 +220,7 @@ namespace OpenVulkano::Image
std::vector<uint8_t> result;
std::vector<uint8_t> data; // the data that has ascii and rational values
if (dateTaken == "")
if (dateTaken.empty())
{
dateTaken = GetCurrentTimestamp();
}
@@ -263,7 +250,7 @@ namespace OpenVulkano::Image
int gpsInfoOffset = 0;
// Make
if (make != "")
if (!make.empty())
{
AppendTagAndValueType(result, (uint16_t) IFDTag::MAKE, (uint16_t) IFDValueType::ASCII);
AppendU32(result, make.size() + 1);
@@ -274,7 +261,7 @@ namespace OpenVulkano::Image
}
// Model
if (model != "")
if (!model.empty())
{
AppendTagAndValueType(result, (uint16_t) IFDTag::MODEL, (uint16_t) IFDValueType::ASCII);
AppendU32(result, model.size() + 1);
@@ -339,7 +326,7 @@ namespace OpenVulkano::Image
}
// Software Used
if (softwareUsed != "")
if (!softwareUsed.empty())
{
AppendTagAndValueType(result, (uint16_t) IFDTag::SOFTWARE_USED, (uint16_t) IFDValueType::ASCII);
AppendU32(result, softwareUsed.size() + 1);
@@ -375,12 +362,12 @@ namespace OpenVulkano::Image
{
const int valueToAdd = resultSize - EXIF_HEADER_SIZE;
if (model != "")
if (!model.empty())
{
AddValueToU32AndEndianSwap(result.data() + modelOffset, valueToAdd);
}
if (make != "")
if (!make.empty())
{
AddValueToU32AndEndianSwap(result.data() + makeOffset, valueToAdd);
}