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  sony2010eId,
159  sony1MltCs7DId,
160  sony1MltCsOldId,
161  sony1MltCsNewId,
162  sony1MltCsA100Id,
163  lastId,
164  ignoreId = lastId
165  };
166 
171  enum SectionId { sectionIdNotSet,
172  imgStruct, recOffset, imgCharacter, otherTags, exifFormat,
173  exifVersion, imgConfig, userInfo, relatedFile, dateTime,
174  captureCond, gpsTags, iopTags, mpfTags, makerTags, dngTags, panaRaw,
175  tiffEp, tiffPm6, adobeOpi,
176  lastSectionId };
177 
179  struct SectionInfo {
181  const char* name_;
182  const char* desc_;
183  };
184 
189  struct TagDetails {
190  int64_t val_;
191  const char* label_;
192 
194  bool operator==(long key) const { return val_ == key; }
195  }; // struct TagDetails
196 
202  uint32_t mask_;
203  const char* label_;
204  }; // struct TagDetailsBitmask
205 
210  struct TagVocabulary {
211  const char* voc_;
212  const char* label_;
213 
221  bool operator==(const std::string& key) const;
222  }; // struct TagDetails
223 
228  template <int N, const TagDetails (&array)[N]>
229  std::ostream& printTag(std::ostream& os, const Value& value, const ExifData*)
230  {
231  const TagDetails* td = find(array, value.toLong());
232  if (td) {
233  os << exvGettext(td->label_);
234  }
235  else {
236  os << "(" << value << ")";
237  }
238  return os;
239  }
240 
242 #define EXV_PRINT_TAG(array) printTag<EXV_COUNTOF(array), array>
243 
248  template <int N, const TagDetailsBitmask (&array)[N]>
249  std::ostream& printTagBitmask(std::ostream& os, const Value& value, const ExifData*)
250  {
251  const uint32_t val = static_cast<uint32_t>(value.toLong());
252  if (val == 0 && N > 0) {
253  const TagDetailsBitmask* td = *(&array);
254  if (td->mask_ == 0) return os << exvGettext(td->label_);
255  }
256  bool sep = false;
257  for (int i = 0; i < N; ++i) {
258  // *& acrobatics is a workaround for a MSVC 7.1 bug
259  const TagDetailsBitmask* td = *(&array) + i;
260 
261  if (val & td->mask_) {
262  if (sep) {
263  os << ", " << exvGettext(td->label_);
264  }
265  else {
266  os << exvGettext(td->label_);
267  sep = true;
268  }
269  }
270  }
271  return os;
272  }
273 
275 #define EXV_PRINT_TAG_BITMASK(array) printTagBitmask<EXV_COUNTOF(array), array>
276 
281  template <int N, const TagVocabulary (&array)[N]>
282  std::ostream& printTagVocabulary(std::ostream& os, const Value& value, const ExifData*)
283  {
284  const TagVocabulary* td = find(array, value.toString());
285  if (td) {
286  os << exvGettext(td->label_);
287  }
288  else {
289  os << "(" << value << ")";
290  }
291  return os;
292  }
293 
295 #define EXV_PRINT_VOCABULARY(array) printTagVocabulary<EXV_COUNTOF(array), array>
296 
297 // *****************************************************************************
298 // free functions
299 
301  const TagInfo* ifdTagList();
303  const TagInfo* exifTagList();
305  const TagInfo* iopTagList();
307  const TagInfo* gpsTagList();
309  const TagInfo* mnTagList();
311  const TagInfo* mpfTagList();
312 
313  const GroupInfo* groupList();
314  const TagInfo* tagList(const std::string& groupName);
315 
319  const char* ifdName(IfdId ifdId);
321  const char* groupName(IfdId ifdId);
322 
324  bool isMakerIfd(IfdId ifdId);
326  bool isExifIfd(IfdId ifdId);
327 
329  void taglist(std::ostream& os, IfdId ifdId);
331  const TagInfo* tagList(IfdId ifdId);
333  const TagInfo* tagInfo(uint16_t tag, IfdId ifdId);
335  const TagInfo* tagInfo(const std::string& tagName, IfdId ifdId);
343  uint16_t tagNumber(const std::string& tagName, IfdId ifdId);
344 
346 
347  std::ostream& printValue(std::ostream& os, const Value& value, const ExifData*);
350  std::ostream& printLong(std::ostream& os, const Value& value, const ExifData*);
352  std::ostream& printFloat(std::ostream& os, const Value& value, const ExifData*);
354  std::ostream& printDegrees(std::ostream& os, const Value& value, const ExifData*);
356  std::ostream& printUcs2(std::ostream& os, const Value& value, const ExifData*);
358  std::ostream& printExifUnit(std::ostream& os, const Value& value, const ExifData*);
360  std::ostream& print0x0000(std::ostream& os, const Value& value, const ExifData*);
362  std::ostream& print0x0005(std::ostream& os, const Value& value, const ExifData*);
364  std::ostream& print0x0006(std::ostream& os, const Value& value, const ExifData*);
366  std::ostream& print0x0007(std::ostream& os, const Value& value, const ExifData*);
368  std::ostream& print0x0009(std::ostream& os, const Value& value, const ExifData*);
370  std::ostream& print0x000a(std::ostream& os, const Value& value, const ExifData*);
372  std::ostream& print0x000c(std::ostream& os, const Value& value, const ExifData*);
374  std::ostream& print0x0019(std::ostream& os, const Value& value, const ExifData*);
376  std::ostream& print0x001e(std::ostream& os, const Value& value, const ExifData*);
378  std::ostream& print0x0112(std::ostream& os, const Value& value, const ExifData*);
380  std::ostream& print0x0213(std::ostream& os, const Value& value, const ExifData*);
382  std::ostream& print0x8298(std::ostream& os, const Value& value, const ExifData*);
384  std::ostream& print0x829a(std::ostream& os, const Value& value, const ExifData*);
386  std::ostream& print0x829d(std::ostream& os, const Value& value, const ExifData*);
388  std::ostream& print0x8822(std::ostream& os, const Value& value, const ExifData*);
390  std::ostream& print0x8827(std::ostream& os, const Value& value, const ExifData*);
392  std::ostream& print0x9101(std::ostream& os, const Value& value, const ExifData*);
394  std::ostream& print0x9201(std::ostream& os, const Value& value, const ExifData*);
396  std::ostream& print0x9202(std::ostream& os, const Value& value, const ExifData*);
398  std::ostream& print0x9204(std::ostream& os, const Value& value, const ExifData*);
400  std::ostream& print0x9206(std::ostream& os, const Value& value, const ExifData*);
402  std::ostream& print0x9207(std::ostream& os, const Value& value, const ExifData*);
404  std::ostream& print0x9208(std::ostream& os, const Value& value, const ExifData*);
406  std::ostream& print0x920a(std::ostream& os, const Value& value, const ExifData*);
408  std::ostream& print0xa001(std::ostream& os, const Value& value, const ExifData*);
410  std::ostream& print0xa217(std::ostream& os, const Value& value, const ExifData*);
412  std::ostream& print0xa300(std::ostream& os, const Value& value, const ExifData*);
414  std::ostream& print0xa301(std::ostream& os, const Value& value, const ExifData*);
416  std::ostream& print0xa401(std::ostream& os, const Value& value, const ExifData*);
418  std::ostream& print0xa402(std::ostream& os, const Value& value, const ExifData*);
420  std::ostream& print0xa403(std::ostream& os, const Value& value, const ExifData*);
422  std::ostream& print0xa404(std::ostream& os, const Value& value, const ExifData*);
424  std::ostream& print0xa405(std::ostream& os, const Value& value, const ExifData*);
426  std::ostream& print0xa406(std::ostream& os, const Value& value, const ExifData*);
428  std::ostream& print0xa407(std::ostream& os, const Value& value, const ExifData*);
430  std::ostream& print0xa409(std::ostream& os, const Value& value, const ExifData*);
432  std::ostream& print0xa40c(std::ostream& os, const Value& value, const ExifData*);
434  std::ostream& printGPSDirRef(std::ostream& os, const Value& value, const ExifData*);
436  std::ostream& printNormalSoftHard(std::ostream& os, const Value& value, const ExifData*);
438  std::ostream& printExifVersion(std::ostream& os, const Value& value, const ExifData*);
440  std::ostream& printXmpVersion(std::ostream& os, const Value& value, const ExifData*);
442  std::ostream& printXmpDate(std::ostream& os, const Value& value, const ExifData*);
444  std::ostream& printBitmask(std::ostream& os, const Value& value, const ExifData*);
446 
448  float fnumber(float apertureValue);
449 
451  URational exposureTime(float shutterSpeedValue);
452 
453 }} // namespace Internal, Exiv2
454 
455 #endif // #ifndef TAGS_INT_HPP_
const char * desc_
Section description.
Definition: tags_int.hpp:182
const char * ifdName(IfdId ifdId)
Return the name of the IFD.
Definition: tags_int.cpp:2151
std::ostream & print0x0009(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS status.
Definition: tags_int.cpp:2362
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:2214
Helper structure for lookup tables for translations of numeric tag values to human readable labels...
Definition: tags_int.hpp:189
A container for Exif data. This is a top-level class of the Exiv2 library. The container holds Exifda...
Definition: exif.hpp:434
bool operator==(const TagDetails &td, const LensTypeAndFocalLengthAndMaxAperture &ltfl)
Compare tag details with a lens entry.
Definition: canonmn_int.cpp:1991
const TagInfo * iopTagList()
Return read-only list of built-in IOP tags.
Definition: tags_int.cpp:2037
std::ostream & print0xa300(std::ostream &os, const Value &value, const ExifData *metadata)
Print file source.
Definition: tags_int.cpp:2680
uint32_t mask_
Bitmask value.
Definition: tags_int.hpp:202
const char * label_
Description of the tag value.
Definition: tags_int.hpp:203
std::ostream & printValue(std::ostream &os, const Value &value, const ExifData *)
Default print function, using the Value output operator.
Definition: tags_int.cpp:2165
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:282
int64_t val_
Tag value.
Definition: tags_int.hpp:190
std::ostream & print0xa403(std::ostream &os, const Value &value, const ExifData *metadata)
Print white balance.
Definition: tags_int.cpp:2724
std::ostream & print0xa404(std::ostream &os, const Value &value, const ExifData *)
Print digital zoom ratio.
Definition: tags_int.cpp:2729
IfdId groupId(const std::string &groupName)
Return the group id for a group name.
Definition: tags_int.cpp:2143
std::ostream & print0xa406(std::ostream &os, const Value &value, const ExifData *metadata)
Print scene capture type.
Definition: tags_int.cpp:2768
std::ostream & print0x0007(std::ostream &os, const Value &value, const ExifData *)
Print GPS timestamp.
Definition: tags_int.cpp:2326
const char * label_
Translation of the tag value.
Definition: tags_int.hpp:191
std::ostream & print0x9101(std::ostream &os, const Value &value, const ExifData *)
Print components configuration specific to compressed data.
Definition: tags_int.cpp:2486
const TagInfo * tagInfo(uint16_t tag, IfdId ifdId)
Return the tag info for tag and ifdId.
Definition: tags_int.cpp:2118
const TagInfo * tagList(IfdId ifdId)
Return the tag list for ifdId.
Definition: tags_int.cpp:2111
std::ostream & print0x8827(std::ostream &os, const Value &value, const ExifData *)
Print ISO speed ratings.
Definition: tags_int.cpp:2481
std::ostream & print0xa402(std::ostream &os, const Value &value, const ExifData *metadata)
Print exposure mode.
Definition: tags_int.cpp:2713
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:2232
The details of a section.
Definition: tags_int.hpp:179
std::ostream & printDegrees(std::ostream &os, const Value &value, const ExifData *)
Print a longitude or latitude value.
Definition: tags_int.cpp:2243
std::ostream & print0x0000(std::ostream &os, const Value &value, const ExifData *)
Print GPS version.
Definition: tags_int.cpp:2291
const char * name_
Section name (one word)
Definition: tags_int.hpp:181
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:2621
std::ostream & print0x9206(std::ostream &os, const Value &value, const ExifData *)
Print the subject distance.
Definition: tags_int.cpp:2553
std::ostream & print0x8298(std::ostream &os, const Value &value, const ExifData *)
Print the copyright.
Definition: tags_int.cpp:2402
std::ostream & print0xa401(std::ostream &os, const Value &value, const ExifData *metadata)
Print custom rendered.
Definition: tags_int.cpp:2701
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:229
URational exposureTime(float shutterSpeedValue)
Calculate the exposure time from an APEX shutter speed value.
Definition: tags_int.cpp:2201
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:2690
std::ostream & print0x001e(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS differential correction.
Definition: tags_int.cpp:2382
std::ostream & print0x9207(std::ostream &os, const Value &value, const ExifData *metadata)
Print metering mode.
Definition: tags_int.cpp:2591
std::ostream & print0xa217(std::ostream &os, const Value &value, const ExifData *metadata)
Print sensing method.
Definition: tags_int.cpp:2668
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:249
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:201
std::ostream & printUcs2(std::ostream &os, const Value &value, const ExifData *)
Print function converting from UCS-2LE to UTF-8.
Definition: tags_int.cpp:2260
std::ostream & print0x0005(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS altitude ref.
Definition: tags_int.cpp:2306
const TagInfo * mnTagList()
Return read-only list of built-in Exiv2 Makernote info tags.
Definition: tags_int.cpp:2056
bool operator==(long key) const
Comparison operator for use with the find template.
Definition: tags_int.hpp:194
std::ostream & print0x9202(std::ostream &os, const Value &value, const ExifData *)
Print f-number converted from APEX aperture value.
Definition: tags_int.cpp:2517
std::ostream & print0x0112(std::ostream &os, const Value &value, const ExifData *metadata)
Print orientation.
Definition: tags_int.cpp:2387
std::ostream & printExifUnit(std::ostream &os, const Value &value, const ExifData *metadata)
Print function for Exif units.
Definition: tags_int.cpp:2286
std::ostream & print0xa409(std::ostream &os, const Value &value, const ExifData *metadata)
Print saturation.
Definition: tags_int.cpp:2794
std::ostream & print0x0019(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS destination distance ref.
Definition: tags_int.cpp:2377
const TagInfo * ifdTagList()
Return read-only list of built-in IFD0/1 tags.
Definition: tags_int.cpp:1429
std::ostream & print0x0213(std::ostream &os, const Value &value, const ExifData *metadata)
Print YCbCrPositioning.
Definition: tags_int.cpp:2397
std::ostream & print0x829d(std::ostream &os, const Value &value, const ExifData *)
Print the f-number.
Definition: tags_int.cpp:2445
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:211
const char * groupName(IfdId ifdId)
Return the group name for a group id.
Definition: tags_int.cpp:2158
std::ostream & print0x829a(std::ostream &os, const Value &value, const ExifData *)
Print the exposure time.
Definition: tags_int.cpp:2422
SectionId
Section identifiers to logically group tags. A section consists of nothing more than a name...
Definition: tags_int.hpp:171
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:2004
std::ostream & printLong(std::ostream &os, const Value &value, const ExifData *)
Print the value converted to a long.
Definition: tags_int.cpp:2225
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:2311
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:2819
std::ostream & print0xa407(std::ostream &os, const Value &value, const ExifData *metadata)
Print gain control.
Definition: tags_int.cpp:2782
Helper structure for lookup tables for translations of controlled vocabulary strings to their descrip...
Definition: tags_int.hpp:210
std::ostream & print0xa001(std::ostream &os, const Value &value, const ExifData *metadata)
Print color space.
Definition: tags_int.cpp:2652
const TagInfo * exifTagList()
Return read-only list of built-in Exif IFD tags.
Definition: tags_int.cpp:1761
std::ostream & print0x8822(std::ostream &os, const Value &value, const ExifData *metadata)
Print exposure program.
Definition: tags_int.cpp:2476
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:2196
std::ostream & print0x000c(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS speed ref.
Definition: tags_int.cpp:2372
std::ostream & print0x000a(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS measurement mode.
Definition: tags_int.cpp:2367
std::ostream & print0x9204(std::ostream &os, const Value &value, const ExifData *)
Print the exposure bias value.
Definition: tags_int.cpp:2532
bool isMakerIfd(IfdId ifdId)
Return true if ifdId is a makernote IFD id. (Note: returns false for makerIfd)
Definition: tags_int.cpp:2063
std::ostream & printXmpVersion(std::ostream &os, const Value &value, const ExifData *)
Print any version encoded in the ASCII string majormajorminorminor.
Definition: tags_int.cpp:2851
SectionId sectionId_
Section id.
Definition: tags_int.hpp:180
void taglist(std::ostream &os, IfdId ifdId)
Print the list of tags for ifdId to the output stream os.
Definition: tags_int.cpp:2101
std::ostream & printNormalSoftHard(std::ostream &os, const Value &value, const ExifData *metadata)
Print contrast, sharpness (normal, soft, hard)
Definition: tags_int.cpp:2831
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:2170
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:212
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:2836
std::ostream & print0x920a(std::ostream &os, const Value &value, const ExifData *)
Print the actual focal length of the lens.
Definition: tags_int.cpp:2626
const TagInfo * gpsTagList()
Return read-only list of built-in GPS tags.
Definition: tags_int.cpp:1934
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:2860
std::ostream & print0xa40c(std::ostream &os, const Value &value, const ExifData *metadata)
Print subject distance range.
Definition: tags_int.cpp:2808
bool isExifIfd(IfdId ifdId)
Return true if ifdId is an Exif IFD id.
Definition: tags_int.cpp:2073
std::ostream & print0x9201(std::ostream &os, const Value &value, const ExifData *)
Print exposure time converted from APEX shutter speed value.
Definition: tags_int.cpp:2504
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:2747