Exiv2
tags_int.hpp
Go to the documentation of this file.
1 // ***************************************************************** -*- C++ -*-
2 /*
3  * Copyright (C) 2004-2018 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  */
28 #ifndef TAGS_INT_HPP_
29 #define TAGS_INT_HPP_
30 
31 // *****************************************************************************
32 // included header files
33 #include "types.hpp"
34 #include "tags.hpp"
35 #include "value.hpp"
36 
37 // + standard includes
38 #include <string>
39 #include <iostream>
40 #include <memory>
41 
42 // *****************************************************************************
43 // namespace extensions
44 
45 namespace Exiv2 {
46  class ExifData;
47 
48  namespace Internal {
49 
50 // *****************************************************************************
51 // class definitions
52 
54  enum IfdId {
55  ifdIdNotSet,
56  ifd0Id,
57  ifd1Id,
58  ifd2Id,
59  ifd3Id,
60  exifId,
61  gpsId,
62  iopId,
63  mpfId,
64  subImage1Id,
65  subImage2Id,
66  subImage3Id,
67  subImage4Id,
68  subImage5Id,
69  subImage6Id,
70  subImage7Id,
71  subImage8Id,
72  subImage9Id,
73  subThumb1Id,
74  panaRawId,
75  mnId,
76  canonId,
77  canonCsId,
78  canonSiId,
79  canonCfId,
80  canonPiId,
81  canonPaId,
82  canonTiId,
83  canonFiId,
84  canonPrId,
85  casioId,
86  casio2Id,
87  fujiId,
88  minoltaId,
89  minoltaCs5DId,
90  minoltaCs7DId,
91  minoltaCsOldId,
92  minoltaCsNewId,
93  nikon1Id,
94  nikon2Id,
95  nikon3Id,
96  nikonPvId,
97  nikonVrId,
98  nikonPcId,
99  nikonWtId,
100  nikonIiId,
101  nikonAfId,
102  nikonAf21Id,
103  nikonAf22Id,
104  nikonAFTId,
105  nikonFiId,
106  nikonMeId,
107  nikonFl1Id,
108  nikonFl2Id,
109  nikonFl3Id,
110  nikonSi1Id,
111  nikonSi2Id,
112  nikonSi3Id,
113  nikonSi4Id,
114  nikonSi5Id,
115  nikonSi6Id,
116  nikonLd1Id,
117  nikonLd2Id,
118  nikonLd3Id,
119  nikonCb1Id,
120  nikonCb2Id,
121  nikonCb2aId,
122  nikonCb2bId,
123  nikonCb3Id,
124  nikonCb4Id,
125  olympusId,
126  olympus2Id,
127  olympusCsId,
128  olympusEqId,
129  olympusRdId,
130  olympusRd2Id,
131  olympusIpId,
132  olympusFiId,
133  olympusFe1Id,
134  olympusFe2Id,
135  olympusFe3Id,
136  olympusFe4Id,
137  olympusFe5Id,
138  olympusFe6Id,
139  olympusFe7Id,
140  olympusFe8Id,
141  olympusFe9Id,
142  olympusRiId,
143  panasonicId,
144  pentaxId,
145  pentaxDngId,
146  samsung2Id,
147  samsungPvId,
148  samsungPwId,
149  sigmaId,
150  sony1Id,
151  sony2Id,
152  sonyMltId,
153  sony1CsId,
154  sony1Cs2Id,
155  sony2CsId,
156  sony2Cs2Id,
157  sony2FpId,
158  sony1MltCs7DId,
159  sony1MltCsOldId,
160  sony1MltCsNewId,
161  sony1MltCsA100Id,
162  lastId,
163  ignoreId = lastId
164  };
165 
170  enum SectionId { sectionIdNotSet,
171  imgStruct, recOffset, imgCharacter, otherTags, exifFormat,
172  exifVersion, imgConfig, userInfo, relatedFile, dateTime,
173  captureCond, gpsTags, iopTags, mpfTags, makerTags, dngTags, panaRaw,
174  tiffEp, tiffPm6, adobeOpi,
175  lastSectionId };
176 
178  struct SectionInfo {
180  const char* name_;
181  const char* desc_;
182  };
183 
188  struct TagDetails {
189  int64_t val_;
190  const char* label_;
191 
193  bool operator==(long key) const { return val_ == key; }
194  }; // struct TagDetails
195 
201  uint32_t mask_;
202  const char* label_;
203  }; // struct TagDetailsBitmask
204 
209  struct TagVocabulary {
210  const char* voc_;
211  const char* label_;
212 
220  bool operator==(const std::string& key) const;
221  }; // struct TagDetails
222 
227  template <int N, const TagDetails (&array)[N]>
228  std::ostream& printTag(std::ostream& os, const Value& value, const ExifData*)
229  {
230  const TagDetails* td = find(array, value.toLong());
231  if (td) {
232  os << exvGettext(td->label_);
233  }
234  else {
235  os << "(" << value << ")";
236  }
237  return os;
238  }
239 
241 #define EXV_PRINT_TAG(array) printTag<EXV_COUNTOF(array), array>
242 
247  template <int N, const TagDetailsBitmask (&array)[N]>
248  std::ostream& printTagBitmask(std::ostream& os, const Value& value, const ExifData*)
249  {
250  const uint32_t val = static_cast<uint32_t>(value.toLong());
251  if (val == 0 && N > 0) {
252  const TagDetailsBitmask* td = *(&array);
253  if (td->mask_ == 0) return os << exvGettext(td->label_);
254  }
255  bool sep = false;
256  for (int i = 0; i < N; ++i) {
257  // *& acrobatics is a workaround for a MSVC 7.1 bug
258  const TagDetailsBitmask* td = *(&array) + i;
259 
260  if (val & td->mask_) {
261  if (sep) {
262  os << ", " << exvGettext(td->label_);
263  }
264  else {
265  os << exvGettext(td->label_);
266  sep = true;
267  }
268  }
269  }
270  return os;
271  }
272 
274 #define EXV_PRINT_TAG_BITMASK(array) printTagBitmask<EXV_COUNTOF(array), array>
275 
280  template <int N, const TagVocabulary (&array)[N]>
281  std::ostream& printTagVocabulary(std::ostream& os, const Value& value, const ExifData*)
282  {
283  const TagVocabulary* td = find(array, value.toString());
284  if (td) {
285  os << exvGettext(td->label_);
286  }
287  else {
288  os << "(" << value << ")";
289  }
290  return os;
291  }
292 
294 #define EXV_PRINT_VOCABULARY(array) printTagVocabulary<EXV_COUNTOF(array), array>
295 
296 // *****************************************************************************
297 // free functions
298 
300  const TagInfo* ifdTagList();
302  const TagInfo* exifTagList();
304  const TagInfo* iopTagList();
306  const TagInfo* gpsTagList();
308  const TagInfo* mnTagList();
310  const TagInfo* mpfTagList();
311 
312  const GroupInfo* groupList();
313  const TagInfo* tagList(const std::string& groupName);
314 
318  const char* ifdName(IfdId ifdId);
320  const char* groupName(IfdId ifdId);
321 
323  bool isMakerIfd(IfdId ifdId);
325  bool isExifIfd(IfdId ifdId);
326 
328  void taglist(std::ostream& os, IfdId ifdId);
330  const TagInfo* tagList(IfdId ifdId);
332  const TagInfo* tagInfo(uint16_t tag, IfdId ifdId);
334  const TagInfo* tagInfo(const std::string& tagName, IfdId ifdId);
342  uint16_t tagNumber(const std::string& tagName, IfdId ifdId);
343 
345 
346  std::ostream& printValue(std::ostream& os, const Value& value, const ExifData*);
349  std::ostream& printLong(std::ostream& os, const Value& value, const ExifData*);
351  std::ostream& printFloat(std::ostream& os, const Value& value, const ExifData*);
353  std::ostream& printDegrees(std::ostream& os, const Value& value, const ExifData*);
355  std::ostream& printUcs2(std::ostream& os, const Value& value, const ExifData*);
357  std::ostream& printExifUnit(std::ostream& os, const Value& value, const ExifData*);
359  std::ostream& print0x0000(std::ostream& os, const Value& value, const ExifData*);
361  std::ostream& print0x0005(std::ostream& os, const Value& value, const ExifData*);
363  std::ostream& print0x0006(std::ostream& os, const Value& value, const ExifData*);
365  std::ostream& print0x0007(std::ostream& os, const Value& value, const ExifData*);
367  std::ostream& print0x0009(std::ostream& os, const Value& value, const ExifData*);
369  std::ostream& print0x000a(std::ostream& os, const Value& value, const ExifData*);
371  std::ostream& print0x000c(std::ostream& os, const Value& value, const ExifData*);
373  std::ostream& print0x0019(std::ostream& os, const Value& value, const ExifData*);
375  std::ostream& print0x001e(std::ostream& os, const Value& value, const ExifData*);
377  std::ostream& print0x0112(std::ostream& os, const Value& value, const ExifData*);
379  std::ostream& print0x0213(std::ostream& os, const Value& value, const ExifData*);
381  std::ostream& print0x8298(std::ostream& os, const Value& value, const ExifData*);
383  std::ostream& print0x829a(std::ostream& os, const Value& value, const ExifData*);
385  std::ostream& print0x829d(std::ostream& os, const Value& value, const ExifData*);
387  std::ostream& print0x8822(std::ostream& os, const Value& value, const ExifData*);
389  std::ostream& print0x8827(std::ostream& os, const Value& value, const ExifData*);
391  std::ostream& print0x9101(std::ostream& os, const Value& value, const ExifData*);
393  std::ostream& print0x9201(std::ostream& os, const Value& value, const ExifData*);
395  std::ostream& print0x9202(std::ostream& os, const Value& value, const ExifData*);
397  std::ostream& print0x9204(std::ostream& os, const Value& value, const ExifData*);
399  std::ostream& print0x9206(std::ostream& os, const Value& value, const ExifData*);
401  std::ostream& print0x9207(std::ostream& os, const Value& value, const ExifData*);
403  std::ostream& print0x9208(std::ostream& os, const Value& value, const ExifData*);
405  std::ostream& print0x920a(std::ostream& os, const Value& value, const ExifData*);
407  std::ostream& print0x9286(std::ostream& os, const Value& value, const ExifData*);
409  std::ostream& print0xa001(std::ostream& os, const Value& value, const ExifData*);
411  std::ostream& print0xa217(std::ostream& os, const Value& value, const ExifData*);
413  std::ostream& print0xa300(std::ostream& os, const Value& value, const ExifData*);
415  std::ostream& print0xa301(std::ostream& os, const Value& value, const ExifData*);
417  std::ostream& print0xa401(std::ostream& os, const Value& value, const ExifData*);
419  std::ostream& print0xa402(std::ostream& os, const Value& value, const ExifData*);
421  std::ostream& print0xa403(std::ostream& os, const Value& value, const ExifData*);
423  std::ostream& print0xa404(std::ostream& os, const Value& value, const ExifData*);
425  std::ostream& print0xa405(std::ostream& os, const Value& value, const ExifData*);
427  std::ostream& print0xa406(std::ostream& os, const Value& value, const ExifData*);
429  std::ostream& print0xa407(std::ostream& os, const Value& value, const ExifData*);
431  std::ostream& print0xa409(std::ostream& os, const Value& value, const ExifData*);
433  std::ostream& print0xa40c(std::ostream& os, const Value& value, const ExifData*);
435  std::ostream& printGPSDirRef(std::ostream& os, const Value& value, const ExifData*);
437  std::ostream& printNormalSoftHard(std::ostream& os, const Value& value, const ExifData*);
439  std::ostream& printExifVersion(std::ostream& os, const Value& value, const ExifData*);
441  std::ostream& printXmpVersion(std::ostream& os, const Value& value, const ExifData*);
443  std::ostream& printXmpDate(std::ostream& os, const Value& value, const ExifData*);
445 
447  float fnumber(float apertureValue);
448 
450  URational exposureTime(float shutterSpeedValue);
451 
452 }} // namespace Internal, Exiv2
453 
454 #endif // #ifndef TAGS_INT_HPP_
const char * desc_
Section description.
Definition: tags_int.hpp:181
const char * ifdName(IfdId ifdId)
Return the name of the IFD.
Definition: tags_int.cpp:2148
std::ostream & print0x0009(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS status.
Definition: tags_int.cpp:2348
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:2185
Helper structure for lookup tables for translations of numeric tag values to human readable labels...
Definition: tags_int.hpp:188
A container for Exif data. This is a top-level class of the Exiv2 library. The container holds Exifda...
Definition: exif.hpp:434
const TagInfo * iopTagList()
Return read-only list of built-in IOP tags.
Definition: tags_int.cpp:2034
std::ostream & print0xa300(std::ostream &os, const Value &value, const ExifData *metadata)
Print file source.
Definition: tags_int.cpp:2678
uint32_t mask_
Bitmask value.
Definition: tags_int.hpp:201
const char * label_
Description of the tag value.
Definition: tags_int.hpp:202
std::ostream & printValue(std::ostream &os, const Value &value, const ExifData *)
Default print function, using the Value output operator.
Definition: tags_int.cpp:2162
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:281
int64_t val_
Tag value.
Definition: tags_int.hpp:189
std::ostream & print0xa403(std::ostream &os, const Value &value, const ExifData *metadata)
Print white balance.
Definition: tags_int.cpp:2722
std::ostream & print0xa404(std::ostream &os, const Value &value, const ExifData *)
Print digital zoom ratio.
Definition: tags_int.cpp:2727
IfdId groupId(const std::string &groupName)
Return the group id for a group name.
Definition: tags_int.cpp:2140
std::ostream & print0xa406(std::ostream &os, const Value &value, const ExifData *metadata)
Print scene capture type.
Definition: tags_int.cpp:2766
std::ostream & print0x0007(std::ostream &os, const Value &value, const ExifData *)
Print GPS timestamp.
Definition: tags_int.cpp:2312
const char * label_
Translation of the tag value.
Definition: tags_int.hpp:190
std::ostream & print0x9101(std::ostream &os, const Value &value, const ExifData *)
Print components configuration specific to compressed data.
Definition: tags_int.cpp:2472
const TagInfo * tagInfo(uint16_t tag, IfdId ifdId)
Return the tag info for tag and ifdId.
Definition: tags_int.cpp:2115
const TagInfo * tagList(IfdId ifdId)
Return the tag list for ifdId.
Definition: tags_int.cpp:2108
std::ostream & print0x8827(std::ostream &os, const Value &value, const ExifData *)
Print ISO speed ratings.
Definition: tags_int.cpp:2467
std::ostream & print0xa402(std::ostream &os, const Value &value, const ExifData *metadata)
Print exposure mode.
Definition: tags_int.cpp:2711
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:2203
The details of a section.
Definition: tags_int.hpp:178
std::ostream & printDegrees(std::ostream &os, const Value &value, const ExifData *)
Print a longitude or latitude value.
Definition: tags_int.cpp:2210
std::ostream & print0x0000(std::ostream &os, const Value &value, const ExifData *)
Print GPS version.
Definition: tags_int.cpp:2277
std::ostream & print0x9286(std::ostream &os, const Value &value, const ExifData *)
Print the user comment.
Definition: tags_int.cpp:2631
const char * name_
Section name (one word)
Definition: tags_int.hpp:180
Type definitions for Exiv2 and related functionality.
std::ostream & print0x9208(std::ostream &os, const Value &value, const ExifData *metadata)
Print light source.
Definition: tags_int.cpp:2607
std::ostream & print0x9206(std::ostream &os, const Value &value, const ExifData *)
Print the subject distance.
Definition: tags_int.cpp:2539
std::ostream & print0x8298(std::ostream &os, const Value &value, const ExifData *)
Print the copyright.
Definition: tags_int.cpp:2388
std::ostream & print0xa401(std::ostream &os, const Value &value, const ExifData *metadata)
Print custom rendered.
Definition: tags_int.cpp:2699
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:228
URational exposureTime(float shutterSpeedValue)
Calculate the exposure time from an APEX shutter speed value.
Definition: tags_int.cpp:2172
const T * find(T(&src)[N], const K &key)
Find an element that matches key in the array src.
Definition: types.hpp:508
std::ostream & print0xa301(std::ostream &os, const Value &value, const ExifData *metadata)
Print scene type.
Definition: tags_int.cpp:2688
bool operator==(const std::string &key) const
Comparison operator for use with the find template.
Definition: tags.cpp:98
std::ostream & print0x001e(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS differential correction.
Definition: tags_int.cpp:2368
std::ostream & print0x9207(std::ostream &os, const Value &value, const ExifData *metadata)
Print metering mode.
Definition: tags_int.cpp:2577
std::ostream & print0xa217(std::ostream &os, const Value &value, const ExifData *metadata)
Print sensing method.
Definition: tags_int.cpp:2666
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:248
Exif tag and type information.
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:576
Helper structure for lookup tables for translations of bitmask values to human readable labels...
Definition: tags_int.hpp:200
std::ostream & printUcs2(std::ostream &os, const Value &value, const ExifData *)
Print function converting from UCS-2LE to UTF-8.
Definition: tags_int.cpp:2246
std::ostream & print0x0005(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS altitude ref.
Definition: tags_int.cpp:2292
const TagInfo * mnTagList()
Return read-only list of built-in Exiv2 Makernote info tags.
Definition: tags_int.cpp:2053
bool operator==(long key) const
Comparison operator for use with the find template.
Definition: tags_int.hpp:193
std::ostream & print0x9202(std::ostream &os, const Value &value, const ExifData *)
Print f-number converted from APEX aperture value.
Definition: tags_int.cpp:2503
std::ostream & print0x0112(std::ostream &os, const Value &value, const ExifData *metadata)
Print orientation.
Definition: tags_int.cpp:2373
std::ostream & printExifUnit(std::ostream &os, const Value &value, const ExifData *metadata)
Print function for Exif units.
Definition: tags_int.cpp:2272
std::ostream & print0xa409(std::ostream &os, const Value &value, const ExifData *metadata)
Print saturation.
Definition: tags_int.cpp:2792
std::ostream & print0x0019(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS destination distance ref.
Definition: tags_int.cpp:2363
const TagInfo * ifdTagList()
Return read-only list of built-in IFD0/1 tags.
Definition: tags_int.cpp:1428
std::ostream & print0x0213(std::ostream &os, const Value &value, const ExifData *metadata)
Print YCbCrPositioning.
Definition: tags_int.cpp:2383
std::ostream & print0x829d(std::ostream &os, const Value &value, const ExifData *)
Print the f-number.
Definition: tags_int.cpp:2431
std::pair< uint32_t, uint32_t > URational
8 byte unsigned rational type.
Definition: types.hpp:108
const char * voc_
Vocabulary string.
Definition: tags_int.hpp:210
const char * groupName(IfdId ifdId)
Return the group name for a group id.
Definition: tags_int.cpp:2155
std::ostream & print0x829a(std::ostream &os, const Value &value, const ExifData *)
Print the exposure time.
Definition: tags_int.cpp:2408
SectionId
Section identifiers to logically group tags. A section consists of nothing more than a name...
Definition: tags_int.hpp:170
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:2001
std::ostream & printLong(std::ostream &os, const Value &value, const ExifData *)
Print the value converted to a long.
Definition: tags_int.cpp:2196
IPTC string type.
Definition: types.hpp:147
std::ostream & print0x0006(std::ostream &os, const Value &value, const ExifData *)
Print GPS altitude.
Definition: tags_int.cpp:2297
Common interface for all types of values used with metadata.
Definition: value.hpp:60
std::ostream & printGPSDirRef(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS direction ref.
Definition: tags_int.cpp:2817
std::ostream & print0xa407(std::ostream &os, const Value &value, const ExifData *metadata)
Print gain control.
Definition: tags_int.cpp:2780
Helper structure for lookup tables for translations of controlled vocabulary strings to their descrip...
Definition: tags_int.hpp:209
std::ostream & print0xa001(std::ostream &os, const Value &value, const ExifData *metadata)
Print color space.
Definition: tags_int.cpp:2650
const TagInfo * exifTagList()
Return read-only list of built-in Exif IFD tags.
Definition: tags_int.cpp:1757
std::ostream & print0x8822(std::ostream &os, const Value &value, const ExifData *metadata)
Print exposure program.
Definition: tags_int.cpp:2462
Provides classes and functions to encode and decode Exif and Iptc data. The libexiv2 API consists of ...
Definition: asfvideo.hpp:36
float fnumber(float apertureValue)
Calculate F number from an APEX aperture value.
Definition: tags_int.cpp:2167
std::ostream & print0x000c(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS speed ref.
Definition: tags_int.cpp:2358
std::ostream & print0x000a(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS measurement mode.
Definition: tags_int.cpp:2353
std::ostream & print0x9204(std::ostream &os, const Value &value, const ExifData *)
Print the exposure bias value.
Definition: tags_int.cpp:2518
bool isMakerIfd(IfdId ifdId)
Return true if ifdId is a makernote IFD id. (Note: returns false for makerIfd)
Definition: tags_int.cpp:2060
std::ostream & printXmpVersion(std::ostream &os, const Value &value, const ExifData *)
Print any version encoded in the ASCII string majormajorminorminor.
Definition: tags_int.cpp:2849
SectionId sectionId_
Section id.
Definition: tags_int.hpp:179
void taglist(std::ostream &os, IfdId ifdId)
Print the list of tags for ifdId to the output stream os.
Definition: tags_int.cpp:2098
std::ostream & printNormalSoftHard(std::ostream &os, const Value &value, const ExifData *metadata)
Print contrast, sharpness (normal, soft, hard)
Definition: tags_int.cpp:2829
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:175
const char * label_
Description of the vocabulary string.
Definition: tags_int.hpp:211
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::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:2834
std::ostream & print0x920a(std::ostream &os, const Value &value, const ExifData *)
Print the actual focal length of the lens.
Definition: tags_int.cpp:2612
const TagInfo * gpsTagList()
Return read-only list of built-in GPS tags.
Definition: tags_int.cpp:1931
IfdId
Type to specify the IFD to which a metadata belongs.
Definition: tags_int.hpp:54
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:2858
std::ostream & print0xa40c(std::ostream &os, const Value &value, const ExifData *metadata)
Print subject distance range.
Definition: tags_int.cpp:2806
bool isExifIfd(IfdId ifdId)
Return true if ifdId is an Exif IFD id.
Definition: tags_int.cpp:2070
std::ostream & print0x9201(std::ostream &os, const Value &value, const ExifData *)
Print exposure time converted from APEX shutter speed value.
Definition: tags_int.cpp:2490
Value interface and concrete subclasses.
std::ostream & print0xa405(std::ostream &os, const Value &value, const ExifData *)
Print 35mm equivalent focal length.
Definition: tags_int.cpp:2745