Exiv2
convert.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  */
30 #ifndef CONVERT_HPP_
31 #define CONVERT_HPP_
32 
33 #include "exiv2lib_export.h"
34 
35 // included header files
36 #include "config.h"
37 
38 // + standard includes
39 #include <string>
40 
41 // *****************************************************************************
42 // namespace extensions
43 namespace Exiv2 {
44 
45 // *****************************************************************************
46 // class declarations
47  class ExifData;
48  class IptcData;
49  class XmpData;
50 
51 // *****************************************************************************
52 // free functions, template and inline definitions
53 
55  EXIV2API void copyExifToXmp(const ExifData& exifData, XmpData& xmpData);
57  EXIV2API void moveExifToXmp(ExifData& exifData, XmpData& xmpData);
58 
60  EXIV2API void copyXmpToExif(const XmpData& xmpData, ExifData& exifData);
62  EXIV2API void moveXmpToExif(XmpData& xmpData, ExifData& exifData);
63 
65  EXIV2API void syncExifWithXmp(ExifData& exifData, XmpData& xmpData);
66 
68  EXIV2API void copyIptcToXmp(const IptcData& iptcData, XmpData& xmpData, const char *iptcCharset = 0);
70  EXIV2API void moveIptcToXmp(IptcData& iptcData, XmpData& xmpData, const char *iptcCharset = 0);
71 
73  EXIV2API void copyXmpToIptc(const XmpData& xmpData, IptcData& iptcData);
75  EXIV2API void moveXmpToIptc(XmpData& xmpData, IptcData& iptcData);
76 
111  EXIV2API bool convertStringCharset(std::string& str, const char* from, const char* to);
112 
113 } // namespace Exiv2
114 
115 #endif // #ifndef CONVERT_HPP_
Exiv2::Converter::overwrite
bool overwrite() const
Get the value of the overwrite flag, see also setOverwrite(bool on).
Definition: convert.cpp:291
Exiv2::Converter::cnvNone
void cnvNone(const char *, const char *)
Do nothing conversion function.
Definition: convert.cpp:476
Exiv2::IptcData::detectCharset
const char * detectCharset() const
Return the metadata charset name or 0.
Definition: iptc.cpp:377
Exiv2::Converter::setOverwrite
void setOverwrite(bool onoff=true)
Set the overwrite flag.
Definition: convert.cpp:142
Exiv2::DataBuf::pData_
byte * pData_
Pointer to the buffer, 0 if none has been allocated.
Definition: types.hpp:269
exif.hpp
Encoding and decoding of Exif data.
Exiv2::ExifData::findKey
iterator findKey(const ExifKey &key)
Find the first Exifdatum with the given key, return an iterator to it.
Definition: exif.cpp:581
Exiv2::Converter::cnvExifArray
void cnvExifArray(const char *from, const char *to)
Converts Exif tag with multiple components to XMP array.
Definition: convert.cpp:543
Exiv2::ExifData::add
void add(const ExifKey &key, const Value *pValue)
Add an Exifdatum from the supplied key and value pair. This method copies (clones) key and value....
Definition: exif.cpp:564
EXV_DEBUG
#define EXV_DEBUG
Shorthand to create a temp debug log message object and return its ostringstream.
Definition: error.hpp:144
Exiv2::Exifdatum
An Exif metadatum, consisting of an ExifKey and a Value and methods to manipulate these.
Definition: exif.hpp:59
Exiv2::Converter::Conversion::metadataId_
MetadataId metadataId_
Type of metadata for the first key.
Definition: convert.cpp:110
types.hpp
Type definitions for Exiv2 and related functionality.
Exiv2::Converter
Metadata conversions.
Definition: convert.cpp:98
Exiv2::Converter::cnvExifValue
void cnvExifValue(const char *from, const char *to)
Simple Exif to XMP conversion function.
Definition: convert.cpp:510
Exiv2::Converter::cnvXmpGPSCoord
void cnvXmpGPSCoord(const char *from, const char *to)
XMP to Exif GPS coordinate conversion function.
Definition: convert.cpp:1044
Exiv2::ExifData::erase
iterator erase(iterator pos)
Delete the Exifdatum at iterator position pos, return the position of the next exifdatum....
Definition: exif.cpp:607
Exiv2::moveXmpToExif
EXIV2API void moveXmpToExif(XmpData &xmpData, ExifData &exifData)
Convert (move) XMP properties to Exif tags, remove converted XMP properties.
Definition: convert.cpp:1304
Exiv2::Converter::ConvertFct
void(Converter::* ConvertFct)(const char *from, const char *to)
Type for metadata converter functions, taking two key strings, from and to.
Definition: convert.cpp:107
Exiv2::XmpData::iterator
XmpMetadata::iterator iterator
XmpMetadata iterator type.
Definition: xmp_exiv2.hpp:179
Exiv2::asciiString
Exif ASCII type, 8-bit byte.
Definition: types.hpp:132
Exiv2::Converter::writeExifDigest
void writeExifDigest()
Write exif:NativeDigest and tiff:NativeDigest properties to XMP.
Definition: convert.cpp:1214
Exiv2::Iptcdatum
An IPTC metadatum ("dataset"), consisting of an IptcKey and a Value and methods to manipulate these.
Definition: iptc.hpp:52
Exiv2::strError
EXIV2API std::string strError()
Return a system error message and the error code (errno). See strerror(3).
Definition: futils.cpp:352
EXV_COUNTOF
#define EXV_COUNTOF(a)
Macro to determine the size of an array.
Definition: types.hpp:517
Exiv2::ExifData::end
iterator end()
End of the metadata.
Definition: exif.hpp:492
Exiv2::copyIptcToXmp
EXIV2API void copyIptcToXmp(const IptcData &iptcData, XmpData &xmpData, const char *iptcCharset=0)
Convert (copy) IPTC datasets to XMP properties.
Definition: convert.cpp:1317
Exiv2::Converter::cnvFromXmp
void cnvFromXmp()
Convert XMP properties to Exif tags or IPTC datasets according to the conversion table.
Definition: convert.cpp:465
Exiv2::XmpKey
Concrete keys for XMP metadata.
Definition: properties.hpp:241
Exiv2::Converter::Conversion::key2_
const char * key2_
Second metadata key (always an XMP key for now).
Definition: convert.cpp:112
Exiv2::moveXmpToIptc
EXIV2API void moveXmpToIptc(XmpData &xmpData, IptcData &iptcData)
Convert (move) XMP properties to IPTC tags, remove converted XMP properties.
Definition: convert.cpp:1341
Exiv2::XmpData::findKey
iterator findKey(const XmpKey &key)
Find the first Xmpdatum with the given key, return an iterator to it.
Definition: xmp.cpp:339
Exiv2::IptcData::end
iterator end()
End of the metadata.
Definition: iptc.hpp:226
Exiv2::Converter::cnvXmpFlash
void cnvXmpFlash(const char *from, const char *to)
XMP to Exif Flash conversion function.
Definition: convert.cpp:983
Exiv2::Converter::cnvXmpArray
void cnvXmpArray(const char *from, const char *to)
Converts XMP array to Exif tag with multiple components.
Definition: convert.cpp:820
Exiv2::Converter::Conversion
Structure to define conversions between two keys.
Definition: convert.cpp:109
Exiv2::MetadataId
MetadataId
An identifier for each type of metadata.
Definition: types.hpp:119
Exiv2::Converter::cnvXmpGPSVersion
void cnvXmpGPSVersion(const char *from, const char *to)
XMP to Exif GPS version conversion function.
Definition: convert.cpp:962
Exiv2::Converter::cnvIptcValue
void cnvIptcValue(const char *from, const char *to)
IPTC dataset to XMP conversion function.
Definition: convert.cpp:1108
Exiv2::convertStringCharset
EXIV2API bool convertStringCharset(std::string &str, const char *from, const char *to)
Convert character encoding of str from from to to. If the function succeeds, str contains the result ...
Definition: convert.cpp:1348
Exiv2::Converter::erase
bool erase() const
Get the value of the erase flag, see also setErase(bool on).
Definition: convert.cpp:289
Exiv2::Exifdatum::setValue
friend Exifdatum & setValue(Exifdatum &, const T &)
Set the value of exifDatum to value. If the object already has a value, it is replaced....
Definition: exif.cpp:193
Exiv2::DataBuf
Utility class containing a character array. All it does is to take care of memory allocation and dele...
Definition: types.hpp:204
Exiv2::IptcData::findKey
iterator findKey(const IptcKey &key)
Find the first Iptcdatum with the given key, return an iterator to it.
Definition: iptc.cpp:318
Exiv2::moveIptcToXmp
EXIV2API void moveIptcToXmp(IptcData &iptcData, XmpData &xmpData, const char *iptcCharset=0)
Convert (move) IPTC datasets to XMP properties, remove converted IPTC datasets.
Definition: convert.cpp:1326
Exiv2::Converter::cnvExifFlash
void cnvExifFlash(const char *from, const char *to)
Exif Flash to XMP conversion function.
Definition: convert.cpp:716
Exiv2::copyXmpToExif
EXIV2API void copyXmpToExif(const XmpData &xmpData, ExifData &exifData)
Convert (copy) XMP properties to Exif tags.
Definition: convert.cpp:1298
Exiv2::ExifKey
Concrete keys for Exif metadata and access to Exif tag reference data.
Definition: tags.hpp:148
Exiv2::Converter::cnvExifGPSVersion
void cnvExifGPSVersion(const char *from, const char *to)
Exif GPS version to XMP conversion function.
Definition: convert.cpp:702
Exiv2::DataBuf::size_
long size_
The current size of the buffer.
Definition: types.hpp:271
Exiv2::find
const T * find(T(&src)[N], const K &key)
Find an element that matches key in the array src.
Definition: types.hpp:508
Exiv2::IptcData::erase
iterator erase(iterator pos)
Delete the Iptcdatum at iterator position pos, return the position of the next Iptcdatum....
Definition: iptc.cpp:346
Exiv2::langAlt
XMP language alternative type.
Definition: types.hpp:156
Exiv2::Converter::cnvExifComment
void cnvExifComment(const char *from, const char *to)
Convert the tag Exif.Photo.UserComment to XMP.
Definition: convert.cpp:526
Exiv2::Converter::setErase
void setErase(bool onoff=true)
Set the erase flag.
Definition: convert.cpp:136
Exiv2::CommentValue::comment
std::string comment(const char *encoding=0) const
Return the comment (without a charset="..." prefix)
Definition: value.cpp:558
Exiv2::CommentValue
Value for an Exif comment.
Definition: value.hpp:509
Exiv2::Converter::cnvExifGPSCoord
void cnvExifGPSCoord(const char *from, const char *to)
Exif GPS coordinate to XMP conversion function.
Definition: convert.cpp:738
Exiv2::copyExifToXmp
EXIV2API void copyExifToXmp(const ExifData &exifData, XmpData &xmpData)
Convert (copy) Exif tags to XMP properties.
Definition: convert.cpp:1285
Exiv2
Provides classes and functions to encode and decode Exif and Iptc data. The libexiv2 API consists of ...
Definition: asfvideo.hpp:36
Exiv2::XmpData
A container for XMP data. This is a top-level class of the Exiv2 library.
Definition: xmp_exiv2.hpp:173
Exiv2::Rational
std::pair< int32_t, int32_t > Rational
8 byte signed rational type.
Definition: types.hpp:110
convert.hpp
Exif and IPTC conversions to and from XMP.
EXV_CALL_MEMBER_FN
#define EXV_CALL_MEMBER_FN(object, ptrToMember)
Macro to make calls to member functions through a pointer more readable. See the C++ FAQ LITE,...
Definition: types.hpp:77
EXV_WARNING
#define EXV_WARNING
Shorthand for a temp warning log message object and return its ostringstream.
Definition: error.hpp:148
Exiv2::Internal::operator==
bool operator==(const TagDetails &td, const LensTypeAndFocalLengthAndMaxAperture &ltfl)
Compare tag details with a lens entry.
Definition: canonmn_int.cpp:1809
Exiv2::IptcData::add
int add(const IptcKey &key, Value *value)
Add an Iptcdatum from the supplied key and value pair. This method copies (clones) the value....
Definition: iptc.cpp:295
Exiv2::IptcData::iterator
IptcMetadata::iterator iterator
IptcMetadata iterator type.
Definition: iptc.hpp:176
Exiv2::Converter::cnvExifDate
void cnvExifDate(const char *from, const char *to)
Exif date to XMP conversion function.
Definition: convert.cpp:561
Exiv2::Converter::Converter
Converter(ExifData &exifData, XmpData &xmpData)
Constructor for Exif tags and XMP properties.
Definition: convert.cpp:444
Exiv2::Converter::Conversion::key1ToKey2_
ConvertFct key1ToKey2_
Conversion from first to second key.
Definition: convert.cpp:113
Exiv2::Converter::cnvXmpComment
void cnvXmpComment(const char *from, const char *to)
Convert the tag Xmp.exif.UserComment to Exif.
Definition: convert.cpp:803
Exiv2::copyXmpToIptc
EXIV2API void copyXmpToIptc(const XmpData &xmpData, IptcData &iptcData)
Convert (copy) XMP properties to IPTC datasets.
Definition: convert.cpp:1335
Exiv2::URational
std::pair< uint32_t, uint32_t > URational
8 byte unsigned rational type.
Definition: types.hpp:108
Exiv2::IptcKey
Concrete keys for IPTC metadata.
Definition: datasets.hpp:275
Exiv2::xmpText
XMP text type.
Definition: types.hpp:152
Exiv2::IptcData
A container for IPTC data. This is a top-level class of the Exiv2 library.
Definition: iptc.hpp:173
Exiv2::IptcParser::encode
static DataBuf encode(const IptcData &iptcData)
Encode the IPTC datasets from iptcData to a binary representation in IPTC IIM4 format.
Definition: iptc.cpp:509
Exiv2::string
IPTC string type.
Definition: types.hpp:147
Exiv2::Converter::Conversion::key2ToKey1_
ConvertFct key2ToKey1_
Conversion from second to first key.
Definition: convert.cpp:114
Exiv2::toString
std::string toString(const T &arg)
Utility function to convert the argument of any type to a string.
Definition: types.hpp:521
Exiv2::floatToRationalCast
EXIV2API Rational floatToRationalCast(float f)
Very simple conversion of a float to a Rational.
Definition: types.cpp:694
Exiv2::ExifData::iterator
ExifMetadata::iterator iterator
ExifMetadata iterator type.
Definition: exif.hpp:437
Exiv2::Converter::cnvToXmp
void cnvToXmp()
Convert Exif tags or IPTC datasets to XMP properties according to the conversion table.
Definition: convert.cpp:454
Exiv2::Converter::syncExifWithXmp
void syncExifWithXmp()
Copies metadata in appropriate direction.
Definition: convert.cpp:1222
Exiv2::Converter::cnvExifVersion
void cnvExifVersion(const char *from, const char *to)
Exif version to XMP conversion function.
Definition: convert.cpp:689
Exiv2::Converter::cnvXmpValue
void cnvXmpValue(const char *from, const char *to)
Simple XMP to Exif conversion function.
Definition: convert.cpp:782
Exiv2::XmpData::end
iterator end()
End of the metadata.
Definition: xmp.cpp:380
Exiv2::Converter::Conversion::key1_
const char * key1_
First metadata key.
Definition: convert.cpp:111
Exiv2::Converter::cnvXmpDate
void cnvXmpDate(const char *from, const char *to)
XMP to Exif date conversion function.
Definition: convert.cpp:841
futils.hpp
Basic file utility functions required by Exiv2.
Exiv2::Converter::cnvXmpValueToIptc
void cnvXmpValueToIptc(const char *from, const char *to)
XMP to IPTC dataset conversion function.
Definition: convert.cpp:1134
Exiv2::Converter::cnvXmpVersion
void cnvXmpVersion(const char *from, const char *to)
XMP to Exif version conversion function.
Definition: convert.cpp:939
error.hpp
Error class for exceptions, log message class.
iptc.hpp
Encoding and decoding of IPTC data.
Exiv2::syncExifWithXmp
EXIV2API void syncExifWithXmp(ExifData &exifData, XmpData &xmpData)
Detect which metadata are newer and perform a copy in appropriate direction.
Definition: convert.cpp:1311
Exiv2::ExifData
A container for Exif data. This is a top-level class of the Exiv2 library. The container holds Exifda...
Definition: exif.hpp:434
Exiv2::moveExifToXmp
EXIV2API void moveExifToXmp(ExifData &exifData, XmpData &xmpData)
Convert (move) Exif tags to XMP properties, remove converted Exif tags.
Definition: convert.cpp:1291