Ensure the MakerNote data pointers are initialized with NULL.
[platform/upstream/libexif.git] / libexif / olympus / mnote-olympus-tag.h
1 /* mnote-olympus-tag.h
2  *
3  * Copyright (c) 2002 Lutz Mueller <lutz@users.sourceforge.net>
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful, 
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of 
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details. 
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the
17  * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18  * Boston, MA  02110-1301  USA.
19  */
20
21 #ifndef __MNOTE_OLYMPUS_TAG_H__
22 #define __MNOTE_OLYMPUS_TAG_H__
23
24 #ifdef __cplusplus
25 extern "C" {
26 #endif /* __cplusplus */
27
28 enum _MnoteOlympusTag {
29
30         /* Nikon v.2 */
31         MNOTE_NIKON_TAG_FIRMWARE                = 0x0001,
32         MNOTE_NIKON_TAG_ISO                     = 0x0002,
33         MNOTE_NIKON_TAG_COLORMODE1              = 0x0003,
34         MNOTE_NIKON_TAG_QUALITY                 = 0x0004,
35         MNOTE_NIKON_TAG_WHITEBALANCE            = 0x0005,
36         MNOTE_NIKON_TAG_SHARPENING              = 0x0006,
37         MNOTE_NIKON_TAG_FOCUSMODE               = 0x0007,
38         MNOTE_NIKON_TAG_FLASHSETTING            = 0x0008,
39         MNOTE_NIKON_TAG_FLASHMODE               = 0x0009,
40         MNOTE_NIKON_TAG_WHITEBALANCEFINE        = 0x000b,
41         MNOTE_NIKON_TAG_WHITEBALANCERB          = 0x000c,
42         MNOTE_NIKON_TAG_UNKNOWN_0X000D          = 0x000d,
43         MNOTE_NIKON_TAG_EXPOSUREDIFF            = 0x000e,
44         MNOTE_NIKON_TAG_ISOSELECTION            = 0x000f,
45         MNOTE_NIKON_TAG_PREVIEWIMAGE_IFD_POINTER= 0x0011,
46         MNOTE_NIKON_TAG_FLASHEXPCOMPENSATION    = 0x0012,
47         MNOTE_NIKON_TAG_ISO2                    = 0x0013,
48         MNOTE_NIKON_TAG_IMAGEBOUNDARY           = 0x0016,
49         MNOTE_NIKON_TAG_UNKNOWN_0X0017          = 0x0017,
50         MNOTE_NIKON_TAG_FLASHEXPOSUREBRACKETVAL = 0x0018,
51         MNOTE_NIKON_TAG_EXPOSUREBRACKETVAL      = 0x0019,
52         MNOTE_NIKON_TAG_IMAGEADJUSTMENT         = 0x0080,
53         MNOTE_NIKON_TAG_TONECOMPENSATION        = 0x0081,
54         MNOTE_NIKON_TAG_ADAPTER                 = 0x0082,
55         MNOTE_NIKON_TAG_LENSTYPE                = 0x0083,
56         MNOTE_NIKON_TAG_LENS                    = 0x0084,
57         MNOTE_NIKON_TAG_MANUALFOCUSDISTANCE     = 0x0085,
58         MNOTE_NIKON_TAG_DIGITALZOOM             = 0x0086,
59         MNOTE_NIKON_TAG_FLASHUSED               = 0x0087,
60         MNOTE_NIKON_TAG_AFFOCUSPOSITION         = 0x0088,
61         MNOTE_NIKON_TAG_BRACKETING              = 0x0089,
62         MNOTE_NIKON_TAG_UNKNOWN_0X008A          = 0x008a,
63         MNOTE_NIKON_TAG_LENS_FSTOPS             = 0x008b,
64         MNOTE_NIKON_TAG_CURVE                   = 0x008c,
65         MNOTE_NIKON_TAG_COLORMODE               = 0x008d,
66         MNOTE_NIKON_TAG_LIGHTTYPE               = 0x0090,
67         MNOTE_NIKON_TAG_UNKNOWN_0X0091          = 0x0091,
68         MNOTE_NIKON_TAG_HUE                     = 0x0092,
69         MNOTE_NIKON_TAG_SATURATION              = 0x0094,
70         MNOTE_NIKON_TAG_NOISEREDUCTION          = 0x0095,
71         MNOTE_NIKON_TAG_UNKNOWN_0X0097          = 0x0097,
72         MNOTE_NIKON_TAG_UNKNOWN_0X0098          = 0x0098,
73         MNOTE_NIKON_TAG_SENSORPIXELSIZE         = 0x009a,
74         MNOTE_NIKON_TAG_UNKNOWN_0X009B          = 0x009b,
75         MNOTE_NIKON_TAG_SERIALNUMBER            = 0x00a0,
76         MNOTE_NIKON_TAG_IMAGE_DATASIZE          = 0x00a2,
77         MNOTE_NIKON_TAG_UNKNOWN_0X00A3          = 0x00a3,
78         MNOTE_NIKON_TAG_TOTALPICTURES           = 0x00a7,
79         MNOTE_NIKON_TAG_UNKNOWN_0X00A8          = 0x00a8,
80         MNOTE_NIKON_TAG_OPTIMIZATION            = 0x00a9,
81         MNOTE_NIKON_TAG_SATURATION2             = 0x00aa,
82         MNOTE_NIKON_TAG_VARIPROGRAM             = 0x00ab,
83         MNOTE_NIKON_TAG_CAPTUREEDITORDATA       = 0x0e01,
84         MNOTE_NIKON_TAG_CAPTUREEDITORVER        = 0x0e09,
85         MNOTE_NIKON_TAG_UNKNOWN_0X0E0E          = 0x0e0e,
86         MNOTE_NIKON_TAG_UNKNOWN_0X0E10          = 0x0e10,
87
88         /* Nikon v1: real values + our proprietary base to distinguish from v2 */
89         MNOTE_NIKON1_TAG_BASE                   = 0x8000,
90         MNOTE_NIKON1_TAG_UNKNOWN_0X0002         = 0x0002 + MNOTE_NIKON1_TAG_BASE,
91         MNOTE_NIKON1_TAG_QUALITY                = 0x0003 + MNOTE_NIKON1_TAG_BASE,
92         MNOTE_NIKON1_TAG_COLORMODE              = 0x0004 + MNOTE_NIKON1_TAG_BASE,
93         MNOTE_NIKON1_TAG_IMAGEADJUSTMENT        = 0x0005 + MNOTE_NIKON1_TAG_BASE,
94         MNOTE_NIKON1_TAG_CCDSENSITIVITY         = 0x0006 + MNOTE_NIKON1_TAG_BASE,
95         MNOTE_NIKON1_TAG_WHITEBALANCE           = 0x0007 + MNOTE_NIKON1_TAG_BASE,
96         MNOTE_NIKON1_TAG_FOCUS                  = 0x0008 + MNOTE_NIKON1_TAG_BASE,
97         MNOTE_NIKON1_TAG_UNKNOWN_0X0009         = 0x0009 + MNOTE_NIKON1_TAG_BASE,
98         MNOTE_NIKON1_TAG_DIGITALZOOM            = 0x000a + MNOTE_NIKON1_TAG_BASE,
99         MNOTE_NIKON1_TAG_CONVERTER              = 0x000b + MNOTE_NIKON1_TAG_BASE,
100
101         /* Olympus and some Sanyo */
102         MNOTE_OLYMPUS_TAG_THUMBNAILIMAGE        = 0x0100,
103         MNOTE_OLYMPUS_TAG_MODE                  = 0x0200,
104         MNOTE_OLYMPUS_TAG_QUALITY               = 0x0201,
105         MNOTE_OLYMPUS_TAG_MACRO                 = 0x0202,
106         MNOTE_OLYMPUS_TAG_BWMODE                = 0x0203,
107         MNOTE_OLYMPUS_TAG_DIGIZOOM              = 0x0204,
108         MNOTE_OLYMPUS_TAG_FOCALPLANEDIAGONAL    = 0x0205,
109         MNOTE_OLYMPUS_TAG_LENSDISTORTION        = 0x0206,
110         MNOTE_OLYMPUS_TAG_VERSION               = 0x0207,
111         MNOTE_OLYMPUS_TAG_INFO                  = 0x0208,
112         MNOTE_OLYMPUS_TAG_ID                    = 0x0209,
113         MNOTE_OLYMPUS_TAG_PRECAPTUREFRAMES      = 0x0300,
114         MNOTE_OLYMPUS_TAG_WHITEBOARD            = 0x0301,
115         MNOTE_OLYMPUS_TAG_ONETOUCHWB            = 0x0302,
116         MNOTE_OLYMPUS_TAG_WHITEBALANCEBRACKET   = 0x0303,
117         MNOTE_OLYMPUS_TAG_WHITEBALANCEBIAS      = 0x0304,
118         MNOTE_OLYMPUS_TAG_DATADUMP              = 0x0f00,
119         MNOTE_OLYMPUS_TAG_UNKNOWN_4             = 0x0f04,
120         MNOTE_OLYMPUS_TAG_SHUTTERSPEED          = 0x1000,
121         MNOTE_OLYMPUS_TAG_ISOVALUE              = 0x1001,
122         MNOTE_OLYMPUS_TAG_APERTUREVALUE         = 0x1002,
123         MNOTE_OLYMPUS_TAG_BRIGHTNESSVALUE       = 0x1003,
124         MNOTE_OLYMPUS_TAG_FLASHMODE             = 0x1004,
125         MNOTE_OLYMPUS_TAG_FLASHDEVICE           = 0x1005,
126         MNOTE_OLYMPUS_TAG_EXPOSURECOMP          = 0x1006,
127         MNOTE_OLYMPUS_TAG_SENSORTEMPERATURE     = 0x1007,
128         MNOTE_OLYMPUS_TAG_LENSTEMPERATURE       = 0x1008,
129         MNOTE_OLYMPUS_TAG_LIGHTCONDITION        = 0x1009,
130         MNOTE_OLYMPUS_TAG_FOCUSRANGE            = 0x100a,
131         MNOTE_OLYMPUS_TAG_MANFOCUS              = 0x100b,
132         MNOTE_OLYMPUS_TAG_FOCUSDIST             = 0x100c,
133         MNOTE_OLYMPUS_TAG_ZOOMSTEPCOUNT         = 0x100d,
134         MNOTE_OLYMPUS_TAG_FOCUSSTEPCOUNT        = 0x100e,
135         MNOTE_OLYMPUS_TAG_SHARPNESS             = 0x100f,
136         MNOTE_OLYMPUS_TAG_FLASHCHARGELEVEL      = 0x1010,
137         MNOTE_OLYMPUS_TAG_COLORMATRIX           = 0x1011,
138         MNOTE_OLYMPUS_TAG_BLACKLEVEL            = 0x1012,
139         MNOTE_OLYMPUS_TAG_WBALANCE              = 0x1015,
140         MNOTE_OLYMPUS_TAG_REDBALANCE            = 0x1017,
141         MNOTE_OLYMPUS_TAG_BLUEBALANCE           = 0x1018,
142         MNOTE_OLYMPUS_TAG_COLORMATRIXNUMBER     = 0x1019,
143         MNOTE_OLYMPUS_TAG_SERIALNUMBER2         = 0x101a,
144         MNOTE_OLYMPUS_TAG_FLASHEXPOSURECOMP     = 0x1023,
145         MNOTE_OLYMPUS_TAG_INTERNALFLASHTABLE    = 0x1024,
146         MNOTE_OLYMPUS_TAG_EXTERNALFLASHGVALUE   = 0x1025,
147         MNOTE_OLYMPUS_TAG_EXTERNALFLASHBOUNCE   = 0x1026,
148         MNOTE_OLYMPUS_TAG_EXTERNALFLASHZOOM     = 0x1027,
149         MNOTE_OLYMPUS_TAG_EXTERNALFLASHMODE     = 0x1028,
150         MNOTE_OLYMPUS_TAG_CONTRAST              = 0x1029,
151         MNOTE_OLYMPUS_TAG_SHARPNESSFACTOR       = 0x102a,
152         MNOTE_OLYMPUS_TAG_COLORCONTROL          = 0x102b,
153         MNOTE_OLYMPUS_TAG_IMAGEWIDTH            = 0x102e,
154         MNOTE_OLYMPUS_TAG_IMAGEHEIGHT           = 0x102f,
155         MNOTE_OLYMPUS_TAG_SCENEDETECT           = 0x1030,
156         MNOTE_OLYMPUS_TAG_COMPRESSIONRATIO      = 0x1034,
157         MNOTE_OLYMPUS_TAG_PREVIEWIMAGEVALID     = 0x1035,
158         MNOTE_OLYMPUS_TAG_AFRESULT              = 0x1038,
159         MNOTE_OLYMPUS_TAG_CCDSCANMODE           = 0x1039,
160         MNOTE_OLYMPUS_TAG_NOISEREDUCTION        = 0x103a,
161         MNOTE_OLYMPUS_TAG_INFINITYLENSSTEP      = 0x103b,
162         MNOTE_OLYMPUS_TAG_NEARLENSSTEP          = 0x103c,
163         MNOTE_OLYMPUS_TAG_LIGHTVALUECENTER      = 0x103d,
164         MNOTE_OLYMPUS_TAG_LIGHTVALUEPERIPHERY   = 0x103e,
165
166         /* Epson */
167         MNOTE_EPSON_TAG_IMAGE_WIDTH             = 0x020b,
168         MNOTE_EPSON_TAG_IMAGE_HEIGHT            = 0x020c,
169         MNOTE_EPSON_TAG_SOFTWARE                = 0x020d,
170
171         /* Sanyo */
172         MNOTE_SANYO_TAG_SEQUENTIALSHOT          = 0x020e,
173         MNOTE_SANYO_TAG_WIDERANGE               = 0x020f,
174         MNOTE_SANYO_TAG_COLORADJUSTMENTMODE     = 0x0210,
175         MNOTE_SANYO_TAG_FOCUSMODE               = 0x0212,
176         MNOTE_SANYO_TAG_QUICKSHOT               = 0x0213,
177         MNOTE_SANYO_TAG_SELFTIMER               = 0x0214,
178         MNOTE_SANYO_TAG_VOICEMEMO               = 0x0216,
179         MNOTE_SANYO_TAG_RECORDSHUTTERRELEASE    = 0x0217,
180         MNOTE_SANYO_TAG_FLICKERREDUCE           = 0x0218,
181         MNOTE_SANYO_TAG_OPTICALZOOM             = 0x0219,
182         MNOTE_SANYO_TAG_CCDSENSITIVITY          = 0x021a,
183         MNOTE_SANYO_TAG_DIGITALZOOM             = 0x021b,
184         MNOTE_SANYO_TAG_LIGHTSOURCESPECIAL      = 0x021d,
185         MNOTE_SANYO_TAG_RESAVED                 = 0x021e,
186         MNOTE_SANYO_TAG_SCENESELECT             = 0x021f,
187         MNOTE_SANYO_TAG_MANUALFOCUSDISTANCE     = 0x0223,
188         MNOTE_SANYO_TAG_SEQUENCESHOTINTERVAL    = 0x0224,
189 };
190 typedef enum _MnoteOlympusTag MnoteOlympusTag;
191
192 /* Don't use these definitions. They are here for compatibility only. */
193 #define MNOTE_OLYMPUS_TAG_UNKNOWN_1     MNOTE_OLYMPUS_TAG_BWMODE
194 #define MNOTE_OLYMPUS_TAG_UNKNOWN_2     MNOTE_OLYMPUS_TAG_FOCALPLANEDIAGONAL
195 #define MNOTE_OLYMPUS_TAG_UNKNOWN_3     MNOTE_OLYMPUS_TAG_LENSDISTORTION
196 #define MNOTE_OLYMPUS_TAG_UNKNOWN_5     MNOTE_OLYMPUS_TAG_DATADUMP
197 #define MNOTE_NIKON_TAG_PREVIEWIMAGE    MNOTE_NIKON_TAG_PREVIEWIMAGE_IFD_POINTER
198
199 /*! Return a textual name of the given tag within the Olympus-style MakerNote.
200  * The name is a short, unique, non-localized text string containing only
201  * US-ASCII alphanumeric characters.
202  *
203  * \param[in] tag Olympus-style MakerNote tag
204  * \return textual name of the tag, or NULL if the tag is unknown
205  */
206 const char *mnote_olympus_tag_get_name        (MnoteOlympusTag tag);
207
208 /*! Return a textual title of the given tag within the Olympus-style MakerNote.
209  * The title is a short, localized description of the tag.
210  *
211  * \param[in] tag Olympus-style MakerNote tag
212  * \return textual title of the tag, or NULL if the tag is unknown
213  */
214 const char *mnote_olympus_tag_get_title       (MnoteOlympusTag tag);
215
216 /*! Return a verbose textual description of the given tag within the
217  * Olympus-style MakerNote.
218  * The description is a verbose, localized description of the tag.
219  *
220  * \param[in] tag EXIF tag
221  * \return textual description of the tag, or NULL if the tag is unknown
222  */
223 const char *mnote_olympus_tag_get_description (MnoteOlympusTag tag);
224
225 #ifdef __cplusplus
226 }
227 #endif /* __cplusplus */
228
229 #endif /* __MNOTE_OLYMPUS_TAG_H__ */