Exiv2
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 
37 namespace 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 
246  struct TagVocabulary {
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  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:2540
std::ostream & print0xa405(std::ostream &os, const Value &value, const ExifData *)
Print 35mm equivalent focal length.
Definition: tags_int.cpp:3116
std::ostream & print0xa407(std::ostream &os, const Value &value, const ExifData *metadata)
Print gain control.
Definition: tags_int.cpp:3151
std::ostream & print0x9206(std::ostream &os, const Value &value, const ExifData *)
Print the subject distance.
Definition: tags_int.cpp:2947
bool isMakerIfd(IfdId ifdId)
Return true if ifdId is a makernote IFD id. (Note: returns false for makerIfd)
Definition: tags_int.cpp:2445
std::ostream & printUcs2(std::ostream &os, const Value &value, const ExifData *)
Print function converting from UCS-2LE to UTF-8.
Definition: tags_int.cpp:2654
std::ostream & print0xa001(std::ostream &os, const Value &value, const ExifData *metadata)
Print color space.
Definition: tags_int.cpp:3021
std::ostream & print0xa300(std::ostream &os, const Value &value, const ExifData *metadata)
Print file source.
Definition: tags_int.cpp:3049
std::ostream & print0x9202(std::ostream &os, const Value &value, const ExifData *)
Print f-number converted from APEX aperture value.
Definition: tags_int.cpp:2911
std::ostream & printDegrees(std::ostream &os, const Value &value, const ExifData *)
Print a longitude or latitude value.
Definition: tags_int.cpp:2637
std::ostream & print0x8827(std::ostream &os, const Value &value, const ExifData *)
Print ISO speed ratings.
Definition: tags_int.cpp:2875
URational exposureTime(float shutterSpeedValue)
Calculate the exposure time from an APEX shutter speed value.
Definition: tags_int.cpp:2585
std::ostream & print0xa409(std::ostream &os, const Value &value, const ExifData *metadata)
Print saturation.
Definition: tags_int.cpp:3163
std::ostream & print0x0009(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS status.
Definition: tags_int.cpp:2756
std::ostream & print0xa217(std::ostream &os, const Value &value, const ExifData *metadata)
Print sensing method.
Definition: tags_int.cpp:3037
std::ostream & print0x000c(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS speed ref.
Definition: tags_int.cpp:2766
std::ostream & print0xa40c(std::ostream &os, const Value &value, const ExifData *metadata)
Print subject distance range.
Definition: tags_int.cpp:3177
std::ostream & print0x829a(std::ostream &os, const Value &value, const ExifData *)
Print the exposure time.
Definition: tags_int.cpp:2816
std::ostream & print0x829d(std::ostream &os, const Value &value, const ExifData *)
Print the f-number.
Definition: tags_int.cpp:2839
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:2386
std::ostream & print0x0019(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS destination distance ref.
Definition: tags_int.cpp:2771
std::ostream & printExifUnit(std::ostream &os, const Value &value, const ExifData *metadata)
Print function for Exif units.
Definition: tags_int.cpp:2680
void taglist(std::ostream &os, IfdId ifdId)
Print the list of tags for ifdId to the output stream os.
Definition: tags_int.cpp:2483
std::ostream & print0xa403(std::ostream &os, const Value &value, const ExifData *metadata)
Print white balance.
Definition: tags_int.cpp:3093
std::ostream & print0x0005(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS altitude ref.
Definition: tags_int.cpp:2700
const TagInfo * tagList(IfdId ifdId)
Return the tag list for ifdId.
Definition: tags_int.cpp:2493
std::ostream & print0x9201(std::ostream &os, const Value &value, const ExifData *)
Print exposure time converted from APEX shutter speed value.
Definition: tags_int.cpp:2898
std::ostream & print0x000a(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS measurement mode.
Definition: tags_int.cpp:2761
const TagInfo * iopTagList()
Return read-only list of built-in IOP tags.
Definition: tags_int.cpp:2419
std::ostream & print0x0112(std::ostream &os, const Value &value, const ExifData *metadata)
Print orientation.
Definition: tags_int.cpp:2781
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:3199
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:2552
const char * ifdName(IfdId ifdId)
Return the name of the IFD.
Definition: tags_int.cpp:2533
std::ostream & printNormalSoftHard(std::ostream &os, const Value &value, const ExifData *metadata)
Print contrast, sharpness (normal, soft, hard)
Definition: tags_int.cpp:3194
std::ostream & print0x0213(std::ostream &os, const Value &value, const ExifData *metadata)
Print YCbCrPositioning.
Definition: tags_int.cpp:2791
std::ostream & print0x920a(std::ostream &os, const Value &value, const ExifData *)
Print the actual focal length of the lens.
Definition: tags_int.cpp:2995
const TagInfo * tagInfo(uint16_t tag, IfdId ifdId)
Return the tag info for tag and ifdId.
Definition: tags_int.cpp:2500
std::ostream & print0xa401(std::ostream &os, const Value &value, const ExifData *metadata)
Print custom rendered.
Definition: tags_int.cpp:3070
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:2608
float fnumber(float apertureValue)
Calculate F number from an APEX aperture value.
Definition: tags_int.cpp:2580
std::ostream & printGPSDirRef(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS direction ref.
Definition: tags_int.cpp:3182
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 & printXmpVersion(std::ostream &os, const Value &value, const ExifData *)
Print any version encoded in the ASCII string majormajorminorminor.
Definition: tags_int.cpp:3214
const TagInfo * gpsTagList()
Return read-only list of built-in GPS tags.
Definition: tags_int.cpp:2316
std::ostream & print0x9101(std::ostream &os, const Value &value, const ExifData *)
Print components configuration specific to compressed data.
Definition: tags_int.cpp:2880
std::ostream & print0x0000(std::ostream &os, const Value &value, const ExifData *)
Print GPS version.
Definition: tags_int.cpp:2685
std::ostream & print0xa402(std::ostream &os, const Value &value, const ExifData *metadata)
Print exposure mode.
Definition: tags_int.cpp:3082
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 & print0xa404(std::ostream &os, const Value &value, const ExifData *)
Print digital zoom ratio.
Definition: tags_int.cpp:3098
IfdId groupId(const std::string &groupName)
Return the group id for a group name.
Definition: tags_int.cpp:2525
std::ostream & print0x8298(std::ostream &os, const Value &value, const ExifData *)
Print the copyright.
Definition: tags_int.cpp:2796
std::ostream & print0x0006(std::ostream &os, const Value &value, const ExifData *)
Print GPS altitude.
Definition: tags_int.cpp:2705
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:2626
const TagInfo * exifTagList()
Return read-only list of built-in Exif IFD tags.
Definition: tags_int.cpp:2096
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:1709
std::ostream & print0x9204(std::ostream &os, const Value &value, const ExifData *)
Print the exposure bias value.
Definition: tags_int.cpp:2926
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:3223
std::ostream & print0xa406(std::ostream &os, const Value &value, const ExifData *metadata)
Print scene capture type.
Definition: tags_int.cpp:3137
std::ostream & printValue(std::ostream &os, const Value &value, const ExifData *)
Default print function, using the Value output operator.
Definition: tags_int.cpp:2547
bool isExifIfd(IfdId ifdId)
Return true if ifdId is an Exif IFD id.
Definition: tags_int.cpp:2455
const TagInfo * mnTagList()
Return read-only list of built-in Exiv2 Makernote info tags.
Definition: tags_int.cpp:2438
std::ostream & print0x9208(std::ostream &os, const Value &value, const ExifData *metadata)
Print light source.
Definition: tags_int.cpp:2990
std::ostream & print0x8822(std::ostream &os, const Value &value, const ExifData *metadata)
Print exposure program.
Definition: tags_int.cpp:2870
std::ostream & print0x001e(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS differential correction.
Definition: tags_int.cpp:2776
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 & printLong(std::ostream &os, const Value &value, const ExifData *)
Print the value converted to a long.
Definition: tags_int.cpp:2619
std::ostream & print0x9207(std::ostream &os, const Value &value, const ExifData *metadata)
Print metering mode.
Definition: tags_int.cpp:2985
std::ostream & print0xa301(std::ostream &os, const Value &value, const ExifData *metadata)
Print scene type.
Definition: tags_int.cpp:3059
std::ostream & print0x0007(std::ostream &os, const Value &value, const ExifData *)
Print GPS timestamp.
Definition: tags_int.cpp:2720
Provides classes and functions to encode and decode Exif and Iptc data. The libexiv2 API consists of ...
Definition: asfvideo.hpp:36
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
const T * find(T(&src)[N], const K &key)
Find an element that matches key in the array src.
Definition: types.hpp:497
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