Exiv2
Loading...
Searching...
No Matches
tags_int.hpp
1// ***************************************************************** -*- C++ -*-
2/*
3 * Copyright (C) 2004-2021 Exiv2 authors
4 * This program is part of the Exiv2 distribution.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.
19 */
20#ifndef TAGS_INT_HPP_
21#define TAGS_INT_HPP_
22
23// *****************************************************************************
24// included header files
25#include "types.hpp"
26#include "tags.hpp"
27#include "value.hpp"
28
29// + standard includes
30#include <string>
31#include <iostream>
32#include <memory>
33
34// *****************************************************************************
35// namespace extensions
36
37namespace Exiv2 {
38 class ExifData;
39
40 namespace Internal {
41
42// *****************************************************************************
43// class definitions
44
46 enum IfdId {
47 ifdIdNotSet,
48 ifd0Id,
49 ifd1Id,
50 ifd2Id,
51 ifd3Id,
52 exifId,
53 gpsId,
54 iopId,
55 mpfId,
56 subImage1Id,
57 subImage2Id,
58 subImage3Id,
59 subImage4Id,
60 subImage5Id,
61 subImage6Id,
62 subImage7Id,
63 subImage8Id,
64 subImage9Id,
65 subThumb1Id,
66 panaRawId,
67 mnId,
68 canonId,
69 canonAf2Id,
70 canonAf3Id,
71 canonAfCId,
72 canonAfMiAdjId,
73 canonAmId,
74 canonAsId,
75 canonCbId,
76 canonCiId,
77 canonCsId,
78 canonFilId,
79 canonFlId,
80 canonHdrId,
81 canonLeId,
82 canonMeId,
83 canonMoID,
84 canonMvId,
85 canonRawBId,
86 canonSiId,
87 canonCfId,
88 canonContrastId,
89 canonFcd1Id,
90 canonFcd2Id,
91 canonFcd3Id,
92 canonLiOpId,
93 canonMyColorID,
94 canonPiId,
95 canonPaId,
96 canonTiId,
97 canonFiId,
98 canonPrId,
99 canonPreID,
100 canonVigCorId,
101 canonVigCor2Id,
102 canonWbId,
103 casioId,
104 casio2Id,
105 fujiId,
106 minoltaId,
107 minoltaCs5DId,
108 minoltaCs7DId,
109 minoltaCsOldId,
110 minoltaCsNewId,
111 nikon1Id,
112 nikon2Id,
113 nikon3Id,
114 nikonPvId,
115 nikonVrId,
116 nikonPcId,
117 nikonWtId,
118 nikonIiId,
119 nikonAfId,
120 nikonAf21Id,
121 nikonAf22Id,
122 nikonAFTId,
123 nikonFiId,
124 nikonMeId,
125 nikonFl1Id,
126 nikonFl2Id,
127 nikonFl3Id,
128 nikonSi1Id,
129 nikonSi2Id,
130 nikonSi3Id,
131 nikonSi4Id,
132 nikonSi5Id,
133 nikonSi6Id,
134 nikonLd1Id,
135 nikonLd2Id,
136 nikonLd3Id,
137 nikonLd4Id,
138 nikonCb1Id,
139 nikonCb2Id,
140 nikonCb2aId,
141 nikonCb2bId,
142 nikonCb3Id,
143 nikonCb4Id,
144 olympusId,
145 olympus2Id,
146 olympusCsId,
147 olympusEqId,
148 olympusRdId,
149 olympusRd2Id,
150 olympusIpId,
151 olympusFiId,
152 olympusFe1Id,
153 olympusFe2Id,
154 olympusFe3Id,
155 olympusFe4Id,
156 olympusFe5Id,
157 olympusFe6Id,
158 olympusFe7Id,
159 olympusFe8Id,
160 olympusFe9Id,
161 olympusRiId,
162 panasonicId,
163 pentaxId,
164 pentaxDngId,
165 samsung2Id,
166 samsungPvId,
167 samsungPwId,
168 sigmaId,
169 sony1Id,
170 sony2Id,
171 sonyMltId,
172 sony1CsId,
173 sony1Cs2Id,
174 sony2CsId,
175 sony2Cs2Id,
176 sony2FpId,
177 sony2010eId,
178 sony1MltCs7DId,
179 sony1MltCsOldId,
180 sony1MltCsNewId,
181 sony1MltCsA100Id,
182 tagInfoMvId,
183 lastId,
184 ignoreId = lastId
185 };
186
191 enum SectionId { sectionIdNotSet,
192 imgStruct, // 4.6.4 A
193 recOffset, // 4.6.4 B
194 imgCharacter, // 4.6.4 C
195 otherTags, // 4.6.4 D
196 exifFormat, // 4.6.3
197 exifVersion, // 4.6.5 A
198 imgConfig, // 4.6.5 C
199 userInfo, // 4.6.5 D
200 relatedFile, // 4.6.5 E
201 dateTime, // 4.6.5 F
202 captureCond, // 4.6.5 G
203 gpsTags, // 4.6.6
204 iopTags, // 4.6.7
205 mpfTags,
206 makerTags, // MakerNote
207 dngTags, // DNG Spec
208 panaRaw,
209 tiffEp, // TIFF-EP Spec
210 tiffPm6,
211 adobeOpi,
212 lastSectionId };
213
215 struct SectionInfo {
217 const char* name_;
218 const char* desc_;
219 };
220
225 struct TagDetails {
226 int64_t val_;
227 const char* label_;
228
230 bool operator==(long key) const { return val_ == key; }
231 }; // struct TagDetails
232
238 uint32_t mask_;
239 const char* label_;
240 }; // struct TagDetailsBitmask
241
247 const char* voc_;
248 const char* label_;
249
257 bool operator==(const std::string& key) const;
258 }; // struct TagDetails
259
264 template <int N, const TagDetails (&array)[N]>
265 std::ostream& printTag(std::ostream& os, const Value& value, const ExifData*)
266 {
267 const TagDetails* td = find(array, value.toLong());
268 if (td) {
269 os << exvGettext(td->label_);
270 }
271 else {
272 os << "(" << value << ")";
273 }
274 return os;
275 }
276
278#define EXV_PRINT_TAG(array) printTag<EXV_COUNTOF(array), array>
279
284 template <int N, const TagDetailsBitmask (&array)[N]>
285 std::ostream& printTagBitmask(std::ostream& os, const Value& value, const ExifData*)
286 {
287 const uint32_t val = static_cast<uint32_t>(value.toLong());
288 if (val == 0 && N > 0) {
289 const TagDetailsBitmask* td = *(&array);
290 if (td->mask_ == 0) return os << exvGettext(td->label_);
291 }
292 bool sep = false;
293 for (int i = 0; i < N; ++i) {
294 // *& acrobatics is a workaround for a MSVC 7.1 bug
295 const TagDetailsBitmask* td = *(&array) + i;
296
297 if (val & td->mask_) {
298 if (sep) {
299 os << ", " << exvGettext(td->label_);
300 }
301 else {
302 os << exvGettext(td->label_);
303 sep = true;
304 }
305 }
306 }
307 return os;
308 }
309
311#define EXV_PRINT_TAG_BITMASK(array) printTagBitmask<EXV_COUNTOF(array), array>
312
317 template <int N, const TagVocabulary (&array)[N]>
318 std::ostream& printTagVocabulary(std::ostream& os, const Value& value, const ExifData*)
319 {
320 const TagVocabulary* td = find(array, value.toString());
321 if (td) {
322 os << exvGettext(td->label_);
323 }
324 else {
325 os << "(" << value << ")";
326 }
327 return os;
328 }
329
331#define EXV_PRINT_VOCABULARY(array) printTagVocabulary<EXV_COUNTOF(array), array>
332
333// *****************************************************************************
334// free functions
335
337 const TagInfo* ifdTagList();
339 const TagInfo* exifTagList();
341 const TagInfo* iopTagList();
343 const TagInfo* gpsTagList();
345 const TagInfo* mnTagList();
347 const TagInfo* mpfTagList();
348
349 const GroupInfo* groupList();
350 const TagInfo* tagList(const std::string& groupName);
351
353 IfdId groupId(const std::string& groupName);
355 const char* ifdName(IfdId ifdId);
357 const char* groupName(IfdId ifdId);
358
360 bool isMakerIfd(IfdId ifdId);
362 bool isExifIfd(IfdId ifdId);
363
365 void taglist(std::ostream& os, IfdId ifdId);
367 const TagInfo* tagList(IfdId ifdId);
369 const TagInfo* tagInfo(uint16_t tag, IfdId ifdId);
371 const TagInfo* tagInfo(const std::string& tagName, IfdId ifdId);
379 uint16_t tagNumber(const std::string& tagName, IfdId ifdId);
380
382
383
384 std::ostream& printValue(std::ostream& os, const Value& value, const ExifData*);
386 std::ostream& printLong(std::ostream& os, const Value& value, const ExifData*);
388 std::ostream& printFloat(std::ostream& os, const Value& value, const ExifData*);
390 std::ostream& printDegrees(std::ostream& os, const Value& value, const ExifData*);
392 std::ostream& printUcs2(std::ostream& os, const Value& value, const ExifData*);
394 std::ostream& printExifUnit(std::ostream& os, const Value& value, const ExifData*);
396 std::ostream& print0x0000(std::ostream& os, const Value& value, const ExifData*);
398 std::ostream& print0x0005(std::ostream& os, const Value& value, const ExifData*);
400 std::ostream& print0x0006(std::ostream& os, const Value& value, const ExifData*);
402 std::ostream& print0x0007(std::ostream& os, const Value& value, const ExifData*);
404 std::ostream& print0x0009(std::ostream& os, const Value& value, const ExifData*);
406 std::ostream& print0x000a(std::ostream& os, const Value& value, const ExifData*);
408 std::ostream& print0x000c(std::ostream& os, const Value& value, const ExifData*);
410 std::ostream& print0x0019(std::ostream& os, const Value& value, const ExifData*);
412 std::ostream& print0x001e(std::ostream& os, const Value& value, const ExifData*);
414 std::ostream& print0x0112(std::ostream& os, const Value& value, const ExifData*);
416 std::ostream& print0x0213(std::ostream& os, const Value& value, const ExifData*);
418 std::ostream& print0x8298(std::ostream& os, const Value& value, const ExifData*);
420 std::ostream& print0x829a(std::ostream& os, const Value& value, const ExifData*);
422 std::ostream& print0x829d(std::ostream& os, const Value& value, const ExifData*);
424 std::ostream& print0x8822(std::ostream& os, const Value& value, const ExifData*);
426 std::ostream& print0x8827(std::ostream& os, const Value& value, const ExifData*);
428 std::ostream& print0x9101(std::ostream& os, const Value& value, const ExifData*);
430 std::ostream& print0x9201(std::ostream& os, const Value& value, const ExifData*);
432 std::ostream& print0x9202(std::ostream& os, const Value& value, const ExifData*);
434 std::ostream& print0x9204(std::ostream& os, const Value& value, const ExifData*);
436 std::ostream& print0x9206(std::ostream& os, const Value& value, const ExifData*);
438 std::ostream& print0x9207(std::ostream& os, const Value& value, const ExifData*);
440 std::ostream& print0x9208(std::ostream& os, const Value& value, const ExifData*);
442 std::ostream& print0x920a(std::ostream& os, const Value& value, const ExifData*);
444 std::ostream& print0xa001(std::ostream& os, const Value& value, const ExifData*);
446 std::ostream& print0xa217(std::ostream& os, const Value& value, const ExifData*);
448 std::ostream& print0xa300(std::ostream& os, const Value& value, const ExifData*);
450 std::ostream& print0xa301(std::ostream& os, const Value& value, const ExifData*);
452 std::ostream& print0xa401(std::ostream& os, const Value& value, const ExifData*);
454 std::ostream& print0xa402(std::ostream& os, const Value& value, const ExifData*);
456 std::ostream& print0xa403(std::ostream& os, const Value& value, const ExifData*);
458 std::ostream& print0xa404(std::ostream& os, const Value& value, const ExifData*);
460 std::ostream& print0xa405(std::ostream& os, const Value& value, const ExifData*);
462 std::ostream& print0xa406(std::ostream& os, const Value& value, const ExifData*);
464 std::ostream& print0xa407(std::ostream& os, const Value& value, const ExifData*);
466 std::ostream& print0xa409(std::ostream& os, const Value& value, const ExifData*);
468 std::ostream& print0xa40c(std::ostream& os, const Value& value, const ExifData*);
470 std::ostream& printGPSDirRef(std::ostream& os, const Value& value, const ExifData*);
472 std::ostream& printNormalSoftHard(std::ostream& os, const Value& value, const ExifData*);
474 std::ostream& printExifVersion(std::ostream& os, const Value& value, const ExifData*);
476 std::ostream& printXmpVersion(std::ostream& os, const Value& value, const ExifData*);
478 std::ostream& printXmpDate(std::ostream& os, const Value& value, const ExifData*);
480 std::ostream& printBitmask(std::ostream& os, const Value& value, const ExifData*);
482
484 float fnumber(float apertureValue);
485
488
489}} // namespace Internal, Exiv2
490
491#endif // #ifndef TAGS_INT_HPP_
A container for Exif data. This is a top-level class of the Exiv2 library. The container holds Exifda...
Definition exif.hpp:434
Common interface for all types of values used with metadata.
Definition value.hpp:51
virtual long toLong(long n=0) const =0
Convert the n-th component of the value to a long. The behaviour of this method may be undefined if t...
std::string toString() const
Return the value as a string. Implemented in terms of write(std::ostream& os) const of the concrete c...
Definition value.cpp:168
const char * groupName(IfdId ifdId)
Return the group name for a group id.
Definition tags_int.cpp:2569
std::ostream & print0xa405(std::ostream &os, const Value &value, const ExifData *)
Print 35mm equivalent focal length.
Definition tags_int.cpp:3145
std::ostream & print0xa407(std::ostream &os, const Value &value, const ExifData *metadata)
Print gain control.
Definition tags_int.cpp:3180
std::ostream & print0x9206(std::ostream &os, const Value &value, const ExifData *)
Print the subject distance.
Definition tags_int.cpp:2976
bool isMakerIfd(IfdId ifdId)
Return true if ifdId is a makernote IFD id. (Note: returns false for makerIfd)
Definition tags_int.cpp:2474
std::ostream & printUcs2(std::ostream &os, const Value &value, const ExifData *)
Print function converting from UCS-2LE to UTF-8.
Definition tags_int.cpp:2683
std::ostream & print0xa001(std::ostream &os, const Value &value, const ExifData *metadata)
Print color space.
Definition tags_int.cpp:3050
std::ostream & print0xa300(std::ostream &os, const Value &value, const ExifData *metadata)
Print file source.
Definition tags_int.cpp:3078
std::ostream & print0x9202(std::ostream &os, const Value &value, const ExifData *)
Print f-number converted from APEX aperture value.
Definition tags_int.cpp:2940
std::ostream & printDegrees(std::ostream &os, const Value &value, const ExifData *)
Print a longitude or latitude value.
Definition tags_int.cpp:2666
std::ostream & printTag(std::ostream &os, const Value &value, const ExifData *)
Generic pretty-print function to translate a long value to a description by looking up a reference ta...
Definition tags_int.hpp:265
std::ostream & print0x8827(std::ostream &os, const Value &value, const ExifData *)
Print ISO speed ratings.
Definition tags_int.cpp:2904
URational exposureTime(float shutterSpeedValue)
Calculate the exposure time from an APEX shutter speed value.
Definition tags_int.cpp:2614
std::ostream & print0xa409(std::ostream &os, const Value &value, const ExifData *metadata)
Print saturation.
Definition tags_int.cpp:3192
std::ostream & print0x0009(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS status.
Definition tags_int.cpp:2785
std::ostream & print0xa217(std::ostream &os, const Value &value, const ExifData *metadata)
Print sensing method.
Definition tags_int.cpp:3066
std::ostream & print0x000c(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS speed ref.
Definition tags_int.cpp:2795
std::ostream & print0xa40c(std::ostream &os, const Value &value, const ExifData *metadata)
Print subject distance range.
Definition tags_int.cpp:3206
std::ostream & print0x829a(std::ostream &os, const Value &value, const ExifData *)
Print the exposure time.
Definition tags_int.cpp:2845
std::ostream & print0x829d(std::ostream &os, const Value &value, const ExifData *)
Print the f-number.
Definition tags_int.cpp:2868
SectionId
Section identifiers to logically group tags. A section consists of nothing more than a name,...
Definition tags_int.hpp:191
const TagInfo * mpfTagList()
Return read-only list of built-in mfp Tags http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/MPF....
Definition tags_int.cpp:2415
std::ostream & print0x0019(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS destination distance ref.
Definition tags_int.cpp:2800
std::ostream & printExifUnit(std::ostream &os, const Value &value, const ExifData *metadata)
Print function for Exif units.
Definition tags_int.cpp:2709
void taglist(std::ostream &os, IfdId ifdId)
Print the list of tags for ifdId to the output stream os.
Definition tags_int.cpp:2512
std::ostream & print0xa403(std::ostream &os, const Value &value, const ExifData *metadata)
Print white balance.
Definition tags_int.cpp:3122
std::ostream & print0x0005(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS altitude ref.
Definition tags_int.cpp:2729
const TagInfo * tagList(IfdId ifdId)
Return the tag list for ifdId.
Definition tags_int.cpp:2522
std::ostream & print0x9201(std::ostream &os, const Value &value, const ExifData *)
Print exposure time converted from APEX shutter speed value.
Definition tags_int.cpp:2927
std::ostream & print0x000a(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS measurement mode.
Definition tags_int.cpp:2790
const TagInfo * iopTagList()
Return read-only list of built-in IOP tags.
Definition tags_int.cpp:2448
std::ostream & print0x0112(std::ostream &os, const Value &value, const ExifData *metadata)
Print orientation.
Definition tags_int.cpp:2810
std::ostream & printExifVersion(std::ostream &os, const Value &value, const ExifData *)
Print any version packed in 4 Bytes format : major major minor minor.
Definition tags_int.cpp:3228
std::ostream & printBitmask(std::ostream &os, const Value &value, const ExifData *metadata)
Print a bitmask as (none) | n | n,m... where: (none) = no bits set | n = bit n from left (0=left-most...
Definition tags_int.cpp:2581
const char * ifdName(IfdId ifdId)
Return the name of the IFD.
Definition tags_int.cpp:2562
std::ostream & printNormalSoftHard(std::ostream &os, const Value &value, const ExifData *metadata)
Print contrast, sharpness (normal, soft, hard)
Definition tags_int.cpp:3223
std::ostream & print0x0213(std::ostream &os, const Value &value, const ExifData *metadata)
Print YCbCrPositioning.
Definition tags_int.cpp:2820
std::ostream & print0x920a(std::ostream &os, const Value &value, const ExifData *)
Print the actual focal length of the lens.
Definition tags_int.cpp:3024
const TagInfo * tagInfo(uint16_t tag, IfdId ifdId)
Return the tag info for tag and ifdId.
Definition tags_int.cpp:2529
std::ostream & print0xa401(std::ostream &os, const Value &value, const ExifData *metadata)
Print custom rendered.
Definition tags_int.cpp:3099
uint16_t tagNumber(const std::string &tagName, IfdId ifdId)
Return the tag number for one combination of IFD id and tagName. If the tagName is not known,...
Definition tags_int.cpp:2637
float fnumber(float apertureValue)
Calculate F number from an APEX aperture value.
Definition tags_int.cpp:2609
std::ostream & printTagBitmask(std::ostream &os, const Value &value, const ExifData *)
Generic print function to translate a long value to a description by looking up bitmasks in a referen...
Definition tags_int.hpp:285
std::ostream & printGPSDirRef(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS direction ref.
Definition tags_int.cpp:3211
std::ostream & printXmpVersion(std::ostream &os, const Value &value, const ExifData *)
Print any version encoded in the ASCII string majormajorminorminor.
Definition tags_int.cpp:3243
const TagInfo * gpsTagList()
Return read-only list of built-in GPS tags.
Definition tags_int.cpp:2345
std::ostream & print0x9101(std::ostream &os, const Value &value, const ExifData *)
Print components configuration specific to compressed data.
Definition tags_int.cpp:2909
std::ostream & print0x0000(std::ostream &os, const Value &value, const ExifData *)
Print GPS version.
Definition tags_int.cpp:2714
std::ostream & print0xa402(std::ostream &os, const Value &value, const ExifData *metadata)
Print exposure mode.
Definition tags_int.cpp:3111
std::ostream & print0xa404(std::ostream &os, const Value &value, const ExifData *)
Print digital zoom ratio.
Definition tags_int.cpp:3127
IfdId groupId(const std::string &groupName)
Return the group id for a group name.
Definition tags_int.cpp:2554
std::ostream & print0x8298(std::ostream &os, const Value &value, const ExifData *)
Print the copyright.
Definition tags_int.cpp:2825
std::ostream & printTagVocabulary(std::ostream &os, const Value &value, const ExifData *)
Generic pretty-print function to translate a controlled vocabulary value (string) to a description by...
Definition tags_int.hpp:318
std::ostream & print0x0006(std::ostream &os, const Value &value, const ExifData *)
Print GPS altitude.
Definition tags_int.cpp:2734
std::ostream & printFloat(std::ostream &os, const Value &value, const ExifData *)
Print a Rational or URational value in floating point format.
Definition tags_int.cpp:2655
const TagInfo * exifTagList()
Return read-only list of built-in Exif IFD tags.
Definition tags_int.cpp:2125
IfdId
Type to specify the IFD to which a metadata belongs.
Definition tags_int.hpp:46
const TagInfo * ifdTagList()
Return read-only list of built-in IFD0/1 tags.
Definition tags_int.cpp:1738
std::ostream & print0x9204(std::ostream &os, const Value &value, const ExifData *)
Print the exposure bias value.
Definition tags_int.cpp:2955
std::ostream & printXmpDate(std::ostream &os, const Value &value, const ExifData *)
Print a date following the format YYYY-MM-DDTHH:MM:SSZ.
Definition tags_int.cpp:3252
std::ostream & print0xa406(std::ostream &os, const Value &value, const ExifData *metadata)
Print scene capture type.
Definition tags_int.cpp:3166
std::ostream & printValue(std::ostream &os, const Value &value, const ExifData *)
Default print function, using the Value output operator.
Definition tags_int.cpp:2576
bool isExifIfd(IfdId ifdId)
Return true if ifdId is an Exif IFD id.
Definition tags_int.cpp:2484
const TagInfo * mnTagList()
Return read-only list of built-in Exiv2 Makernote info tags.
Definition tags_int.cpp:2467
std::ostream & print0x9208(std::ostream &os, const Value &value, const ExifData *metadata)
Print light source.
Definition tags_int.cpp:3019
std::ostream & print0x8822(std::ostream &os, const Value &value, const ExifData *metadata)
Print exposure program.
Definition tags_int.cpp:2899
std::ostream & print0x001e(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS differential correction.
Definition tags_int.cpp:2805
std::ostream & printLong(std::ostream &os, const Value &value, const ExifData *)
Print the value converted to a long.
Definition tags_int.cpp:2648
std::ostream & print0x9207(std::ostream &os, const Value &value, const ExifData *metadata)
Print metering mode.
Definition tags_int.cpp:3014
std::ostream & print0xa301(std::ostream &os, const Value &value, const ExifData *metadata)
Print scene type.
Definition tags_int.cpp:3088
std::ostream & print0x0007(std::ostream &os, const Value &value, const ExifData *)
Print GPS timestamp.
Definition tags_int.cpp:2749
Provides classes and functions to encode and decode Exif and Iptc data. The libexiv2 API consists of ...
Definition asfvideo.hpp:36
const T * find(T(&src)[N], const K &key)
Find an element that matches key in the array src.
Definition types.hpp:497
EXIV2API const char * exvGettext(const char *str)
Translate a string using the gettext framework. This wrapper hides all the implementation details fro...
Definition types.cpp:571
EXIV2API ExifData::const_iterator apertureValue(const ExifData &ed)
Return the aperture value.
Definition easyaccess.cpp:482
EXIV2API ExifData::const_iterator shutterSpeedValue(const ExifData &ed)
Return the shutter speed value.
Definition easyaccess.cpp:473
std::pair< uint32_t, uint32_t > URational
8 byte unsigned rational type.
Definition types.hpp:97
The details of an Exif group. Groups include IFDs and binary arrays.
Definition tags.hpp:57
The details of a section.
Definition tags_int.hpp:215
const char * name_
Section name (one word)
Definition tags_int.hpp:217
SectionId sectionId_
Section id.
Definition tags_int.hpp:216
const char * desc_
Section description.
Definition tags_int.hpp:218
Helper structure for lookup tables for translations of bitmask values to human readable labels.
Definition tags_int.hpp:237
uint32_t mask_
Bitmask value.
Definition tags_int.hpp:238
const char * label_
Description of the tag value.
Definition tags_int.hpp:239
Helper structure for lookup tables for translations of numeric tag values to human readable labels.
Definition tags_int.hpp:225
const char * label_
Translation of the tag value.
Definition tags_int.hpp:227
int64_t val_
Tag value.
Definition tags_int.hpp:226
bool operator==(long key) const
Comparison operator for use with the find template.
Definition tags_int.hpp:230
Helper structure for lookup tables for translations of controlled vocabulary strings to their descrip...
Definition tags_int.hpp:246
const char * voc_
Vocabulary string.
Definition tags_int.hpp:247
const char * label_
Description of the vocabulary string.
Definition tags_int.hpp:248
bool operator==(const std::string &key) const
Comparison operator for use with the find template.
Definition tags.cpp:90
Tag information.
Definition tags.hpp:74