1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#pragma once
#include "libexif.h"
class CExifParse
{
public:
~CExifParse(void) = default;
bool Process(const unsigned char* const Data, const unsigned short length, ExifInfo_t *info);
static int Get16(const void* const Short, const bool motorolaOrder=true);
static int Get32(const void* const Long, const bool motorolaOrder=true);
private:
ExifInfo_t *m_ExifInfo = nullptr;
double m_FocalPlaneXRes = 0.0;
double m_FocalPlaneUnits = 0.0;
unsigned m_LargestExifOffset = 0; // Last exif data referenced (to check if thumbnail is at end)
int m_ExifImageWidth = 0;
bool m_MotorolaOrder = false;
bool m_DateFound = false;
// void LocaliseDate (void);
// void GetExposureTime (const float exposureTime);
double ConvertAnyFormat(const void* const ValuePtr, int Format);
void ProcessDir(const unsigned char* const DirStart,
const unsigned char* const OffsetBase,
const unsigned ExifLength, int NestingLevel);
void ProcessGpsInfo(const unsigned char* const DirStart,
int ByteCountUnused,
const unsigned char* const OffsetBase,
unsigned ExifLength);
void GetLatLong(const unsigned int Format,
const unsigned char* ValuePtr,
const int ComponentSize,
char *latlongString);
};
|