1 /******************************************************************************
2  * $Id: gdalexif.h 45d3d60d2b90c52d7ef69f5a9336219e4c6069d7 2017-09-14 09:50:30Z Even Rouault $
3  *
4  * Project:  JPEG JFIF Driver
5  * Purpose:  Implement GDAL JPEG Support based on IJG libjpeg.
6  * Author:   Frank Warmerdam, warmerdam@pobox.com
7  *
8  ******************************************************************************
9  * Copyright (c) 2000, Frank Warmerdam
10  * Copyright (c) 2017, Even Rouault
11  *
12  * Permission is hereby granted, free of charge, to any person obtaining a
13  * copy of this software and associated documentation files (the "Software"),
14  * to deal in the Software without restriction, including without limitation
15  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
16  * and/or sell copies of the Software, and to permit persons to whom the
17  * Software is furnished to do so, subject to the following conditions:
18  *
19  * The above copyright notice and this permission notice shall be included
20  * in all copies or substantial portions of the Software.
21  *
22  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
23  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
25  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
27  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
28  * DEALINGS IN THE SOFTWARE.
29  ****************************************************************************/
30 
31 //! @cond Doxygen_Suppress
32 
33 typedef enum {
34         TIFF_NOTYPE     = 0,    /* placeholder */
35         TIFF_BYTE       = 1,    /* 8-bit unsigned integer */
36         TIFF_ASCII      = 2,    /* 8-bit bytes w/ last byte null */
37         TIFF_SHORT      = 3,    /* 16-bit unsigned integer */
38         TIFF_LONG       = 4,    /* 32-bit unsigned integer */
39         TIFF_RATIONAL   = 5,    /* 64-bit unsigned fraction */
40         TIFF_SBYTE      = 6,    /* !8-bit signed integer */
41         TIFF_UNDEFINED  = 7,    /* !8-bit untyped data */
42         TIFF_SSHORT     = 8,    /* !16-bit signed integer */
43         TIFF_SLONG      = 9,    /* !32-bit signed integer */
44         TIFF_SRATIONAL  = 10,   /* !64-bit signed fraction */
45         TIFF_FLOAT      = 11,   /* !32-bit IEEE floating point */
46         TIFF_DOUBLE     = 12,   /* !64-bit IEEE floating point */
47         TIFF_IFD        = 13    /* %32-bit unsigned integer (offset) */
48 } GDALEXIFTIFFDataType;
49 
50 /*
51  * TIFF Image File Directories are comprised of a table of field
52  * descriptors of the form shown below.  The table is sorted in
53  * ascending order by tag.  The values associated with each entry are
54  * disjoint and may appear anywhere in the file (so long as they are
55  * placed on a word boundary).
56  *
57  * If the value is 4 bytes or less, then it is placed in the offset
58  * field to save space.  If the value is less than 4 bytes, it is
59  * left-justified in the offset field.
60  */
61 typedef struct {
62         GUInt16          tdir_tag;       /* see below */
63         GUInt16          tdir_type;      /* data type; see below */
64         GUInt32          tdir_count;     /* number of items; length in spec */
65         GUInt32          tdir_offset;    /* byte offset to field data */
66 } GDALEXIFTIFFDirEntry;
67 
68 GByte* EXIFCreate(char**     papszEXIFMetadata,
69                   GByte*     pabyThumbnail,
70                   GUInt32    nThumbnailSize,
71                   GUInt32    nThumbnailWidth,
72                   GUInt32    nThumbnailHeight,
73                   GUInt32   *pnOutBufferSize);
74 
75 
76 //! @endcond
77