#ifndef DOXYGEN_SHOULD_SKIP_THIS
#ifdef DLL_EXPORT
#define GAIAEXIF_DECLARE __declspec(dllexport)
#else
#define GAIAEXIF_DECLARE extern
#endif
#endif
#ifndef _GAIAEXIF_H
#ifndef DOXYGEN_SHOULD_SKIP_THIS
#define _GAIAEXIF_H
#endif
#ifdef __cplusplus
extern "C"
{
#endif
#define GAIA_HEX_BLOB 0
#define GAIA_GIF_BLOB 1
#define GAIA_PNG_BLOB 2
#define GAIA_JPEG_BLOB 3
#define GAIA_EXIF_BLOB 4
#define GAIA_EXIF_GPS_BLOB 5
#define GAIA_ZIP_BLOB 6
#define GAIA_PDF_BLOB 7
#define GAIA_GEOMETRY_BLOB 8
#define GAIA_TIFF_BLOB 9
#define GAIA_WEBP_BLOB 10
#define GAIA_JP2_BLOB 11
#define GAIA_XML_BLOB 12
#define GAIA_GPB_BLOB 13
#define GAIA_EXIF_NONE 0
#define GAIA_EXIF_BYTE 1
#define GAIA_EXIF_SHORT 2
#define GAIA_EXIF_STRING 3
#define GAIA_EXIF_LONG 4
#define GAIA_EXIF_RATIONAL 5
#define GAIA_EXIF_SLONG 9
#define GAIA_EXIF_SRATIONAL 10
typedef struct gaiaExifTagStruct
{
char Gps;
unsigned short TagId;
unsigned short Type;
unsigned short Count;
unsigned char TagOffset[4];
unsigned char *ByteValue;
char *StringValue;
unsigned short *ShortValues;
unsigned int *LongValues;
unsigned int *LongRationals1;
unsigned int *LongRationals2;
short *SignedShortValues;
int *SignedLongValues;
int *SignedLongRationals1;
int *SignedLongRationals2;
float *FloatValues;
double *DoubleValues;
struct gaiaExifTagStruct *Next;
} gaiaExifTag;
typedef gaiaExifTag *gaiaExifTagPtr;
typedef struct gaiaExifTagListStruct
{
gaiaExifTagPtr First;
gaiaExifTagPtr Last;
int NumTags;
gaiaExifTagPtr *TagsArray;
} gaiaExifTagList;
typedef gaiaExifTagList *gaiaExifTagListPtr;
GAIAEXIF_DECLARE gaiaExifTagListPtr gaiaGetExifTags (const unsigned char
*blob, int size);
GAIAEXIF_DECLARE void gaiaExifTagsFree (gaiaExifTagListPtr tag_list);
GAIAEXIF_DECLARE int gaiaGetExifTagsCount (gaiaExifTagListPtr tag_list);
GAIAEXIF_DECLARE gaiaExifTagPtr gaiaGetExifTagByPos (gaiaExifTagListPtr
tag_list,
const int pos);
GAIAEXIF_DECLARE int gaiaGetExifTagsCount (gaiaExifTagListPtr tag_list);
GAIAEXIF_DECLARE gaiaExifTagPtr gaiaGetExifTagById (const gaiaExifTagListPtr
tag_list,
const unsigned short
tag_id);
GAIAEXIF_DECLARE gaiaExifTagPtr gaiaGetExifGpsTagById (const
gaiaExifTagListPtr
tag_list,
const unsigned short
tag_id);
GAIAEXIF_DECLARE gaiaExifTagPtr gaiaGetExifTagByName (const
gaiaExifTagListPtr
tag_list,
const char *tag_name);
GAIAEXIF_DECLARE unsigned short gaiaExifTagGetId (const gaiaExifTagPtr tag);
GAIAEXIF_DECLARE void gaiaExifTagGetName (const gaiaExifTagPtr tag,
char *tag_name, int len);
GAIAEXIF_DECLARE int gaiaIsExifGpsTag (const gaiaExifTagPtr tag);
GAIAEXIF_DECLARE unsigned short gaiaExifTagGetValueType (const
gaiaExifTagPtr
tag);
GAIAEXIF_DECLARE unsigned short gaiaExifTagGetNumValues (const
gaiaExifTagPtr
tag);
GAIAEXIF_DECLARE unsigned char gaiaExifTagGetByteValue (const gaiaExifTagPtr
tag, const int ind,
int *ok);
GAIAEXIF_DECLARE void gaiaExifTagGetStringValue (const gaiaExifTagPtr tag,
char *str, int len,
int *ok);
GAIAEXIF_DECLARE unsigned short gaiaExifTagGetShortValue (const
gaiaExifTagPtr
tag,
const int ind,
int *ok);
GAIAEXIF_DECLARE unsigned int gaiaExifTagGetLongValue (const gaiaExifTagPtr
tag, const int ind,
int *ok);
GAIAEXIF_DECLARE unsigned int gaiaExifTagGetRational1Value (const
gaiaExifTagPtr
tag,
const int ind,
int *ok);
GAIAEXIF_DECLARE unsigned int gaiaExifTagGetRational2Value (const
gaiaExifTagPtr
tag,
const int ind,
int *ok);
GAIAEXIF_DECLARE double gaiaExifTagGetRationalValue (const gaiaExifTagPtr
tag, const int ind,
int *ok);
GAIAEXIF_DECLARE short gaiaExifTagGetSignedShortValue (const gaiaExifTagPtr
tag, const int ind,
int *ok);
GAIAEXIF_DECLARE int gaiaExifTagGetSignedLongValue (const gaiaExifTagPtr
tag, const int ind,
int *ok);
GAIAEXIF_DECLARE int gaiaExifTagGetSignedRational1Value (const
gaiaExifTagPtr tag,
const int ind,
int *ok);
GAIAEXIF_DECLARE int gaiaExifTagGetSignedRational2Value (const
gaiaExifTagPtr tag,
const int ind,
int *ok);
GAIAEXIF_DECLARE double gaiaExifTagGetSignedRationalValue (const
gaiaExifTagPtr
tag,
const int ind,
int *ok);
GAIAEXIF_DECLARE float gaiaExifTagGetFloatValue (const gaiaExifTagPtr tag,
const int ind, int *ok);
GAIAEXIF_DECLARE double gaiaExifTagGetDoubleValue (const gaiaExifTagPtr tag,
const int ind, int *ok);
GAIAEXIF_DECLARE void gaiaExifTagGetHumanReadable (const gaiaExifTagPtr tag,
char *str, int len,
int *ok);
GAIAEXIF_DECLARE int gaiaGuessBlobType (const unsigned char *blob,
int size);
GAIAEXIF_DECLARE int gaiaGetGpsCoords (const unsigned char *blob, int size,
double *longitude, double *latitude);
GAIAEXIF_DECLARE int gaiaGetGpsLatLong (const unsigned char *blob, int size,
char *latlong, int ll_size);
#ifdef __cplusplus
}
#endif
#endif