Files
OpenVulkano/openVulkanoCpp/Image/ExifBuilder.hpp

61 lines
1.2 KiB
C++

/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
#pragma once
#include <vector>
#include <string>
#include <stdint.h>
namespace OpenVulkano::Image
{
struct RationalValue
{
uint32_t nominator;
uint32_t denominator;
};
enum class LatitudeRef
{
NORTH,
SOUTH,
};
enum class LongitudeRef
{
EAST,
WEST,
};
struct GPSCoords
{
int32_t degrees, minutes, seconds;
};
class ExifBuilder
{
public:
int orientation = 0;
std::string make;
std::string model;
RationalValue xresolution = {0, 0};
RationalValue yresolution = {0, 0};
int resolutionUnit = 0;
RationalValue exposureTime = {0, 0};
std::string dateTaken; // format: yyyy:mm:dd hh:mm:ss
std::string softwareUsed;
LatitudeRef latitudeRef = LatitudeRef::NORTH;
GPSCoords latitude = {0, 0, 0};
LongitudeRef longitudeRef = LongitudeRef::EAST;
GPSCoords longitude = {0, 0, 0};
bool altitudeIsAboveSeaLevel = true;
uint32_t altitude = 0;
// Typical usage is -> jpeg_write_marker(cinfo, JPEG_APP0 + 1, exif_data.data(), exif_data.size());
std::vector<uint8_t> build();
};
}