|
Packit |
01d647 |
// ***************************************************************** -*- C++ -*-
|
|
Packit |
01d647 |
/*
|
|
Packit |
01d647 |
* Copyright (C) 2004-2018 Exiv2 authors
|
|
Packit |
01d647 |
* This program is part of the Exiv2 distribution.
|
|
Packit |
01d647 |
*
|
|
Packit |
01d647 |
* This program is free software; you can redistribute it and/or
|
|
Packit |
01d647 |
* modify it under the terms of the GNU General Public License
|
|
Packit |
01d647 |
* as published by the Free Software Foundation; either version 2
|
|
Packit |
01d647 |
* of the License, or (at your option) any later version.
|
|
Packit |
01d647 |
*
|
|
Packit |
01d647 |
* This program is distributed in the hope that it will be useful,
|
|
Packit |
01d647 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
01d647 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Packit |
01d647 |
* GNU General Public License for more details.
|
|
Packit |
01d647 |
*
|
|
Packit |
01d647 |
* You should have received a copy of the GNU General Public License
|
|
Packit |
01d647 |
* along with this program; if not, write to the Free Software
|
|
Packit |
01d647 |
* Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.
|
|
Packit |
01d647 |
*/
|
|
Packit |
01d647 |
/*!
|
|
Packit |
01d647 |
@file tags_int.hpp
|
|
Packit |
01d647 |
@brief Internal Exif tag and type information
|
|
Packit |
01d647 |
@author Andreas Huggel (ahu)
|
|
Packit |
01d647 |
ahuggel@gmx.net
|
|
Packit |
01d647 |
@date 15-Jan-04, ahu: created
|
|
Packit |
01d647 |
11-Feb-04, ahu: isolated as a component
|
|
Packit |
01d647 |
*/
|
|
Packit |
01d647 |
#ifndef TAGS_INT_HPP_
|
|
Packit |
01d647 |
#define TAGS_INT_HPP_
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// *****************************************************************************
|
|
Packit |
01d647 |
// included header files
|
|
Packit |
01d647 |
#include "types.hpp"
|
|
Packit |
01d647 |
#include "tags.hpp"
|
|
Packit |
01d647 |
#include "value.hpp"
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// + standard includes
|
|
Packit |
01d647 |
#include <string>
|
|
Packit |
01d647 |
#include <iostream>
|
|
Packit |
01d647 |
#include <memory>
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// *****************************************************************************
|
|
Packit |
01d647 |
// namespace extensions
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
namespace Exiv2 {
|
|
Packit |
01d647 |
class ExifData;
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
namespace Internal {
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// *****************************************************************************
|
|
Packit |
01d647 |
// class definitions
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
//! Type to specify the IFD to which a metadata belongs
|
|
Packit |
01d647 |
enum IfdId {
|
|
Packit |
01d647 |
ifdIdNotSet,
|
|
Packit |
01d647 |
ifd0Id,
|
|
Packit |
01d647 |
ifd1Id,
|
|
Packit |
01d647 |
ifd2Id,
|
|
Packit |
01d647 |
ifd3Id,
|
|
Packit |
01d647 |
exifId,
|
|
Packit |
01d647 |
gpsId,
|
|
Packit |
01d647 |
iopId,
|
|
Packit |
01d647 |
mpfId,
|
|
Packit |
01d647 |
subImage1Id,
|
|
Packit |
01d647 |
subImage2Id,
|
|
Packit |
01d647 |
subImage3Id,
|
|
Packit |
01d647 |
subImage4Id,
|
|
Packit |
01d647 |
subImage5Id,
|
|
Packit |
01d647 |
subImage6Id,
|
|
Packit |
01d647 |
subImage7Id,
|
|
Packit |
01d647 |
subImage8Id,
|
|
Packit |
01d647 |
subImage9Id,
|
|
Packit |
01d647 |
subThumb1Id,
|
|
Packit |
01d647 |
panaRawId,
|
|
Packit |
01d647 |
mnId,
|
|
Packit |
01d647 |
canonId,
|
|
Packit |
01d647 |
canonCsId,
|
|
Packit |
01d647 |
canonSiId,
|
|
Packit |
01d647 |
canonCfId,
|
|
Packit |
01d647 |
canonPiId,
|
|
Packit |
01d647 |
canonPaId,
|
|
Packit |
01d647 |
canonTiId,
|
|
Packit |
01d647 |
canonFiId,
|
|
Packit |
01d647 |
canonPrId,
|
|
Packit |
01d647 |
casioId,
|
|
Packit |
01d647 |
casio2Id,
|
|
Packit |
01d647 |
fujiId,
|
|
Packit |
01d647 |
minoltaId,
|
|
Packit |
01d647 |
minoltaCs5DId,
|
|
Packit |
01d647 |
minoltaCs7DId,
|
|
Packit |
01d647 |
minoltaCsOldId,
|
|
Packit |
01d647 |
minoltaCsNewId,
|
|
Packit |
01d647 |
nikon1Id,
|
|
Packit |
01d647 |
nikon2Id,
|
|
Packit |
01d647 |
nikon3Id,
|
|
Packit |
01d647 |
nikonPvId,
|
|
Packit |
01d647 |
nikonVrId,
|
|
Packit |
01d647 |
nikonPcId,
|
|
Packit |
01d647 |
nikonWtId,
|
|
Packit |
01d647 |
nikonIiId,
|
|
Packit |
01d647 |
nikonAfId,
|
|
Packit |
01d647 |
nikonAf21Id,
|
|
Packit |
01d647 |
nikonAf22Id,
|
|
Packit |
01d647 |
nikonAFTId,
|
|
Packit |
01d647 |
nikonFiId,
|
|
Packit |
01d647 |
nikonMeId,
|
|
Packit |
01d647 |
nikonFl1Id,
|
|
Packit |
01d647 |
nikonFl2Id,
|
|
Packit |
01d647 |
nikonFl3Id,
|
|
Packit |
01d647 |
nikonSi1Id,
|
|
Packit |
01d647 |
nikonSi2Id,
|
|
Packit |
01d647 |
nikonSi3Id,
|
|
Packit |
01d647 |
nikonSi4Id,
|
|
Packit |
01d647 |
nikonSi5Id,
|
|
Packit |
01d647 |
nikonSi6Id,
|
|
Packit |
01d647 |
nikonLd1Id,
|
|
Packit |
01d647 |
nikonLd2Id,
|
|
Packit |
01d647 |
nikonLd3Id,
|
|
Packit |
01d647 |
nikonCb1Id,
|
|
Packit |
01d647 |
nikonCb2Id,
|
|
Packit |
01d647 |
nikonCb2aId,
|
|
Packit |
01d647 |
nikonCb2bId,
|
|
Packit |
01d647 |
nikonCb3Id,
|
|
Packit |
01d647 |
nikonCb4Id,
|
|
Packit |
01d647 |
olympusId,
|
|
Packit |
01d647 |
olympus2Id,
|
|
Packit |
01d647 |
olympusCsId,
|
|
Packit |
01d647 |
olympusEqId,
|
|
Packit |
01d647 |
olympusRdId,
|
|
Packit |
01d647 |
olympusRd2Id,
|
|
Packit |
01d647 |
olympusIpId,
|
|
Packit |
01d647 |
olympusFiId,
|
|
Packit |
01d647 |
olympusFe1Id,
|
|
Packit |
01d647 |
olympusFe2Id,
|
|
Packit |
01d647 |
olympusFe3Id,
|
|
Packit |
01d647 |
olympusFe4Id,
|
|
Packit |
01d647 |
olympusFe5Id,
|
|
Packit |
01d647 |
olympusFe6Id,
|
|
Packit |
01d647 |
olympusFe7Id,
|
|
Packit |
01d647 |
olympusFe8Id,
|
|
Packit |
01d647 |
olympusFe9Id,
|
|
Packit |
01d647 |
olympusRiId,
|
|
Packit |
01d647 |
panasonicId,
|
|
Packit |
01d647 |
pentaxId,
|
|
Packit |
01d647 |
pentaxDngId,
|
|
Packit |
01d647 |
samsung2Id,
|
|
Packit |
01d647 |
samsungPvId,
|
|
Packit |
01d647 |
samsungPwId,
|
|
Packit |
01d647 |
sigmaId,
|
|
Packit |
01d647 |
sony1Id,
|
|
Packit |
01d647 |
sony2Id,
|
|
Packit |
01d647 |
sonyMltId,
|
|
Packit |
01d647 |
sony1CsId,
|
|
Packit |
01d647 |
sony1Cs2Id,
|
|
Packit |
01d647 |
sony2CsId,
|
|
Packit |
01d647 |
sony2Cs2Id,
|
|
Packit |
01d647 |
sony2FpId,
|
|
Packit Service |
fb147c |
sony2010eId,
|
|
Packit |
01d647 |
sony1MltCs7DId,
|
|
Packit |
01d647 |
sony1MltCsOldId,
|
|
Packit |
01d647 |
sony1MltCsNewId,
|
|
Packit |
01d647 |
sony1MltCsA100Id,
|
|
Packit |
01d647 |
lastId,
|
|
Packit |
01d647 |
ignoreId = lastId
|
|
Packit |
01d647 |
};
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
/*!
|
|
Packit |
01d647 |
@brief Section identifiers to logically group tags. A section consists
|
|
Packit |
01d647 |
of nothing more than a name, based on the Exif standard.
|
|
Packit |
01d647 |
*/
|
|
Packit |
01d647 |
enum SectionId { sectionIdNotSet,
|
|
Packit |
01d647 |
imgStruct, recOffset, imgCharacter, otherTags, exifFormat,
|
|
Packit |
01d647 |
exifVersion, imgConfig, userInfo, relatedFile, dateTime,
|
|
Packit |
01d647 |
captureCond, gpsTags, iopTags, mpfTags, makerTags, dngTags, panaRaw,
|
|
Packit |
01d647 |
tiffEp, tiffPm6, adobeOpi,
|
|
Packit |
01d647 |
lastSectionId };
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
//! The details of a section.
|
|
Packit |
01d647 |
struct SectionInfo {
|
|
Packit |
01d647 |
SectionId sectionId_; //!< Section id
|
|
Packit |
01d647 |
const char* name_; //!< Section name (one word)
|
|
Packit |
01d647 |
const char* desc_; //!< Section description
|
|
Packit |
01d647 |
};
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
/*!
|
|
Packit |
01d647 |
@brief Helper structure for lookup tables for translations of numeric
|
|
Packit |
01d647 |
tag values to human readable labels.
|
|
Packit |
01d647 |
*/
|
|
Packit |
01d647 |
struct TagDetails {
|
|
Packit |
01d647 |
int64_t val_; //!< Tag value
|
|
Packit |
01d647 |
const char* label_; //!< Translation of the tag value
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
//! Comparison operator for use with the find template
|
|
Packit |
01d647 |
bool operator==(long key) const { return val_ == key; }
|
|
Packit |
01d647 |
}; // struct TagDetails
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
/*!
|
|
Packit |
01d647 |
@brief Helper structure for lookup tables for translations of bitmask
|
|
Packit |
01d647 |
values to human readable labels.
|
|
Packit |
01d647 |
*/
|
|
Packit |
01d647 |
struct TagDetailsBitmask {
|
|
Packit |
01d647 |
uint32_t mask_; //!< Bitmask value
|
|
Packit |
01d647 |
const char* label_; //!< Description of the tag value
|
|
Packit |
01d647 |
}; // struct TagDetailsBitmask
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
/*!
|
|
Packit |
01d647 |
@brief Helper structure for lookup tables for translations of controlled
|
|
Packit |
01d647 |
vocabulary strings to their descriptions.
|
|
Packit |
01d647 |
*/
|
|
Packit |
01d647 |
struct TagVocabulary {
|
|
Packit |
01d647 |
const char* voc_; //!< Vocabulary string
|
|
Packit |
01d647 |
const char* label_; //!< Description of the vocabulary string
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
/*!
|
|
Packit |
01d647 |
@brief Comparison operator for use with the find template
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Compare vocabulary strings like "PR-NON" with keys like
|
|
Packit |
01d647 |
"http://ns.useplus.org/ldf/vocab/PR-NON" and return true if the vocabulary
|
|
Packit |
01d647 |
string matches the end of the key.
|
|
Packit |
01d647 |
*/
|
|
Packit |
01d647 |
bool operator==(const std::string& key) const;
|
|
Packit |
01d647 |
}; // struct TagDetails
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
/*!
|
|
Packit |
01d647 |
@brief Generic pretty-print function to translate a long value to a description
|
|
Packit |
01d647 |
by looking up a reference table.
|
|
Packit |
01d647 |
*/
|
|
Packit |
01d647 |
template <int N, const TagDetails (&array)[N]>
|
|
Packit |
01d647 |
std::ostream& printTag(std::ostream& os, const Value& value, const ExifData*)
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
const TagDetails* td = find(array, value.toLong());
|
|
Packit |
01d647 |
if (td) {
|
|
Packit |
01d647 |
os << exvGettext(td->label_);
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
else {
|
|
Packit |
01d647 |
os << "(" << value << ")";
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
return os;
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
//! Shortcut for the printTag template which requires typing the array name only once.
|
|
Packit |
01d647 |
#define EXV_PRINT_TAG(array) printTag<EXV_COUNTOF(array), array>
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
/*!
|
|
Packit |
01d647 |
@brief Generic print function to translate a long value to a description
|
|
Packit |
01d647 |
by looking up bitmasks in a reference table.
|
|
Packit |
01d647 |
*/
|
|
Packit |
01d647 |
template <int N, const TagDetailsBitmask (&array)[N]>
|
|
Packit |
01d647 |
std::ostream& printTagBitmask(std::ostream& os, const Value& value, const ExifData*)
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
const uint32_t val = static_cast<uint32_t>(value.toLong());
|
|
Packit |
01d647 |
if (val == 0 && N > 0) {
|
|
Packit |
01d647 |
const TagDetailsBitmask* td = *(&array);
|
|
Packit |
01d647 |
if (td->mask_ == 0) return os << exvGettext(td->label_);
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
bool sep = false;
|
|
Packit |
01d647 |
for (int i = 0; i < N; ++i) {
|
|
Packit |
01d647 |
// *& acrobatics is a workaround for a MSVC 7.1 bug
|
|
Packit |
01d647 |
const TagDetailsBitmask* td = *(&array) + i;
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if (val & td->mask_) {
|
|
Packit |
01d647 |
if (sep) {
|
|
Packit |
01d647 |
os << ", " << exvGettext(td->label_);
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
else {
|
|
Packit |
01d647 |
os << exvGettext(td->label_);
|
|
Packit |
01d647 |
sep = true;
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
return os;
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
//! Shortcut for the printTagBitmask template which requires typing the array name only once.
|
|
Packit |
01d647 |
#define EXV_PRINT_TAG_BITMASK(array) printTagBitmask<EXV_COUNTOF(array), array>
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
/*!
|
|
Packit |
01d647 |
@brief Generic pretty-print function to translate a controlled vocabulary value (string)
|
|
Packit |
01d647 |
to a description by looking up a reference table.
|
|
Packit |
01d647 |
*/
|
|
Packit |
01d647 |
template <int N, const TagVocabulary (&array)[N]>
|
|
Packit |
01d647 |
std::ostream& printTagVocabulary(std::ostream& os, const Value& value, const ExifData*)
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
const TagVocabulary* td = find(array, value.toString());
|
|
Packit |
01d647 |
if (td) {
|
|
Packit |
01d647 |
os << exvGettext(td->label_);
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
else {
|
|
Packit |
01d647 |
os << "(" << value << ")";
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
return os;
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
//! Shortcut for the printTagVocabulary template which requires typing the array name only once.
|
|
Packit |
01d647 |
#define EXV_PRINT_VOCABULARY(array) printTagVocabulary<EXV_COUNTOF(array), array>
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// *****************************************************************************
|
|
Packit |
01d647 |
// free functions
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
//! Return read-only list of built-in IFD0/1 tags
|
|
Packit |
01d647 |
const TagInfo* ifdTagList();
|
|
Packit |
01d647 |
//! Return read-only list of built-in Exif IFD tags
|
|
Packit |
01d647 |
const TagInfo* exifTagList();
|
|
Packit |
01d647 |
//! Return read-only list of built-in IOP tags
|
|
Packit |
01d647 |
const TagInfo* iopTagList();
|
|
Packit |
01d647 |
//! Return read-only list of built-in GPS tags
|
|
Packit |
01d647 |
const TagInfo* gpsTagList();
|
|
Packit |
01d647 |
//! Return read-only list of built-in Exiv2 Makernote info tags
|
|
Packit |
01d647 |
const TagInfo* mnTagList();
|
|
Packit |
01d647 |
//! Return read-only list of built-in mfp Tags http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/MPF.html
|
|
Packit |
01d647 |
const TagInfo* mpfTagList();
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
const GroupInfo* groupList();
|
|
Packit |
01d647 |
const TagInfo* tagList(const std::string& groupName);
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
//! Return the group id for a group name
|
|
Packit |
01d647 |
IfdId groupId(const std::string& groupName);
|
|
Packit |
01d647 |
//! Return the name of the IFD
|
|
Packit |
01d647 |
const char* ifdName(IfdId ifdId);
|
|
Packit |
01d647 |
//! Return the group name for a group id
|
|
Packit |
01d647 |
const char* groupName(IfdId ifdId);
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
//! Return true if \em ifdId is a makernote IFD id. (Note: returns false for makerIfd)
|
|
Packit |
01d647 |
bool isMakerIfd(IfdId ifdId);
|
|
Packit |
01d647 |
//! Return true if \em ifdId is an %Exif IFD id.
|
|
Packit |
01d647 |
bool isExifIfd(IfdId ifdId);
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
//! Print the list of tags for \em ifdId to the output stream \em os
|
|
Packit |
01d647 |
void taglist(std::ostream& os, IfdId ifdId);
|
|
Packit |
01d647 |
//! Return the tag list for \em ifdId
|
|
Packit |
01d647 |
const TagInfo* tagList(IfdId ifdId);
|
|
Packit |
01d647 |
//! Return the tag info for \em tag and \em ifdId
|
|
Packit |
01d647 |
const TagInfo* tagInfo(uint16_t tag, IfdId ifdId);
|
|
Packit |
01d647 |
//! Return the tag info for \em tagName and \em ifdId
|
|
Packit |
01d647 |
const TagInfo* tagInfo(const std::string& tagName, IfdId ifdId);
|
|
Packit |
01d647 |
/*!
|
|
Packit |
01d647 |
@brief Return the tag number for one combination of IFD id and tagName.
|
|
Packit |
01d647 |
If the tagName is not known, it expects tag names in the
|
|
Packit |
01d647 |
form "0x01ff" and converts them to unsigned integer.
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
@throw Error if the tagname or ifdId is invalid
|
|
Packit |
01d647 |
*/
|
|
Packit |
01d647 |
uint16_t tagNumber(const std::string& tagName, IfdId ifdId);
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
//! @name Functions printing interpreted tag values
|
|
Packit |
01d647 |
//@{
|
|
Packit |
01d647 |
//! Default print function, using the Value output operator
|
|
Packit |
01d647 |
std::ostream& printValue(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print the value converted to a long
|
|
Packit |
01d647 |
std::ostream& printLong(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print a Rational or URational value in floating point format
|
|
Packit |
01d647 |
std::ostream& printFloat(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print a longitude or latitude value
|
|
Packit |
01d647 |
std::ostream& printDegrees(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print function converting from UCS-2LE to UTF-8
|
|
Packit |
01d647 |
std::ostream& printUcs2(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print function for Exif units
|
|
Packit |
01d647 |
std::ostream& printExifUnit(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print GPS version
|
|
Packit |
01d647 |
std::ostream& print0x0000(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print GPS altitude ref
|
|
Packit |
01d647 |
std::ostream& print0x0005(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print GPS altitude
|
|
Packit |
01d647 |
std::ostream& print0x0006(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print GPS timestamp
|
|
Packit |
01d647 |
std::ostream& print0x0007(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print GPS status
|
|
Packit |
01d647 |
std::ostream& print0x0009(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print GPS measurement mode
|
|
Packit |
01d647 |
std::ostream& print0x000a(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print GPS speed ref
|
|
Packit |
01d647 |
std::ostream& print0x000c(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print GPS destination distance ref
|
|
Packit |
01d647 |
std::ostream& print0x0019(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print GPS differential correction
|
|
Packit |
01d647 |
std::ostream& print0x001e(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print orientation
|
|
Packit |
01d647 |
std::ostream& print0x0112(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print YCbCrPositioning
|
|
Packit |
01d647 |
std::ostream& print0x0213(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print the copyright
|
|
Packit |
01d647 |
std::ostream& print0x8298(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print the exposure time
|
|
Packit |
01d647 |
std::ostream& print0x829a(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print the f-number
|
|
Packit |
01d647 |
std::ostream& print0x829d(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print exposure program
|
|
Packit |
01d647 |
std::ostream& print0x8822(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print ISO speed ratings
|
|
Packit |
01d647 |
std::ostream& print0x8827(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print components configuration specific to compressed data
|
|
Packit |
01d647 |
std::ostream& print0x9101(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print exposure time converted from APEX shutter speed value
|
|
Packit |
01d647 |
std::ostream& print0x9201(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print f-number converted from APEX aperture value
|
|
Packit |
01d647 |
std::ostream& print0x9202(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print the exposure bias value
|
|
Packit |
01d647 |
std::ostream& print0x9204(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print the subject distance
|
|
Packit |
01d647 |
std::ostream& print0x9206(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print metering mode
|
|
Packit |
01d647 |
std::ostream& print0x9207(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print light source
|
|
Packit |
01d647 |
std::ostream& print0x9208(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print the actual focal length of the lens
|
|
Packit |
01d647 |
std::ostream& print0x920a(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print color space
|
|
Packit |
01d647 |
std::ostream& print0xa001(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print sensing method
|
|
Packit |
01d647 |
std::ostream& print0xa217(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print file source
|
|
Packit |
01d647 |
std::ostream& print0xa300(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print scene type
|
|
Packit |
01d647 |
std::ostream& print0xa301(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print custom rendered
|
|
Packit |
01d647 |
std::ostream& print0xa401(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print exposure mode
|
|
Packit |
01d647 |
std::ostream& print0xa402(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print white balance
|
|
Packit |
01d647 |
std::ostream& print0xa403(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print digital zoom ratio
|
|
Packit |
01d647 |
std::ostream& print0xa404(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print 35mm equivalent focal length
|
|
Packit |
01d647 |
std::ostream& print0xa405(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print scene capture type
|
|
Packit |
01d647 |
std::ostream& print0xa406(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print gain control
|
|
Packit |
01d647 |
std::ostream& print0xa407(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print saturation
|
|
Packit |
01d647 |
std::ostream& print0xa409(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print subject distance range
|
|
Packit |
01d647 |
std::ostream& print0xa40c(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print GPS direction ref
|
|
Packit |
01d647 |
std::ostream& printGPSDirRef(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print contrast, sharpness (normal, soft, hard)
|
|
Packit |
01d647 |
std::ostream& printNormalSoftHard(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print any version packed in 4 Bytes format : major major minor minor
|
|
Packit |
01d647 |
std::ostream& printExifVersion(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print any version encoded in the ASCII string majormajorminorminor
|
|
Packit |
01d647 |
std::ostream& printXmpVersion(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//! Print a date following the format YYYY-MM-DDTHH:MM:SSZ
|
|
Packit |
01d647 |
std::ostream& printXmpDate(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit Service |
fb147c |
//! Print a bitmask as (none) | n | n,m... where: (none) = no bits set | n = bit n from left (0=left-most) | n,m.. = multiple bits "
|
|
Packit Service |
fb147c |
std::ostream& printBitmask(std::ostream& os, const Value& value, const ExifData*);
|
|
Packit |
01d647 |
//@}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
//! Calculate F number from an APEX aperture value
|
|
Packit |
01d647 |
float fnumber(float apertureValue);
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
//! Calculate the exposure time from an APEX shutter speed value
|
|
Packit |
01d647 |
URational exposureTime(float shutterSpeedValue);
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
}} // namespace Internal, Exiv2
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#endif // #ifndef TAGS_INT_HPP_
|