Removed trailing whitespace.

v0.27.3
Andreas Huggel 17 years ago
parent 7cfdc74d48
commit b759193273

@ -261,7 +261,7 @@ namespace Action {
std::cout << buf.st_size << " " << _("Bytes") << std::endl; std::cout << buf.st_size << " " << _("Bytes") << std::endl;
} }
// MIME type // MIME type
printLabel(_("MIME type")); printLabel(_("MIME type"));
std::cout << image->mimeType() << "\n"; std::cout << image->mimeType() << "\n";
@ -1358,7 +1358,7 @@ namespace Action {
else { else {
std::cerr << _("Warning") << ": " << modifyCmd.key_ << ": " std::cerr << _("Warning") << ": " << modifyCmd.key_ << ": "
<< _("Failed to read") << " " << _("Failed to read") << " "
<< Exiv2::TypeInfo::typeName(value->typeId()) << Exiv2::TypeInfo::typeName(value->typeId())
<< " " << _("value") << " " << _("value")
<< " \"" << modifyCmd.value_ << "\"\n"; << " \"" << modifyCmd.value_ << "\"\n";
} }
@ -1399,7 +1399,7 @@ namespace Action {
void Modify::regNamespace(const ModifyCmd& modifyCmd) void Modify::regNamespace(const ModifyCmd& modifyCmd)
{ {
if (Params::instance().verbose_) { if (Params::instance().verbose_) {
std::cout << _("Reg ") << modifyCmd.key_ << "=\"" std::cout << _("Reg ") << modifyCmd.key_ << "=\""
<< modifyCmd.value_ << "\"" << std::endl; << modifyCmd.value_ << "\"" << std::endl;
} }
// Registration has been done immediately after parsing the command. // Registration has been done immediately after parsing the command.
@ -1888,11 +1888,11 @@ namespace {
return 0; return 0;
} // renameFile } // renameFile
std::string newFilePath(const std::string& path, const std::string& ext) std::string newFilePath(const std::string& path, const std::string& ext)
{ {
std::string directory = Params::instance().directory_; std::string directory = Params::instance().directory_;
if (directory.empty()) directory = Util::dirname(path); if (directory.empty()) directory = Util::dirname(path);
std::string newPath = directory + EXV_SEPERATOR_STR std::string newPath = directory + EXV_SEPERATOR_STR
+ Util::basename(path, true) + ext; + Util::basename(path, true) + ext;
return newPath; return newPath;
} }

@ -80,13 +80,13 @@ namespace Exiv2 {
#ifdef DEBUG #ifdef DEBUG
std::cerr << "Exiv2::BmpImage::readMetadata: Reading Windows bitmap file " << io_->path() << "\n"; std::cerr << "Exiv2::BmpImage::readMetadata: Reading Windows bitmap file " << io_->path() << "\n";
#endif #endif
if (io_->open() != 0) if (io_->open() != 0)
{ {
throw Error(9, io_->path(), strError()); throw Error(9, io_->path(), strError());
} }
IoCloser closer(*io_); IoCloser closer(*io_);
// Ensure that this is the correct image type // Ensure that this is the correct image type
if (!isBmpType(*io_, false)) if (!isBmpType(*io_, false))
{ {
if (io_->error() || io_->eof()) throw Error(14); if (io_->error() || io_->eof()) throw Error(14);
throw Error(3, "BMP"); throw Error(3, "BMP");
@ -95,7 +95,7 @@ namespace Exiv2 {
/* /*
The Windows bitmap header goes as follows -- all numbers are in little-endian byte order: The Windows bitmap header goes as follows -- all numbers are in little-endian byte order:
offset length name description offset length name description
====== ======= ===================== ======= ====== ======= ===================== =======
0 2 bytes signature always 'BM' 0 2 bytes signature always 'BM'
@ -133,7 +133,7 @@ namespace Exiv2 {
Image::AutoPtr newBmpInstance(BasicIo::AutoPtr io, bool /*create*/) Image::AutoPtr newBmpInstance(BasicIo::AutoPtr io, bool /*create*/)
{ {
Image::AutoPtr image(new BmpImage(io)); Image::AutoPtr image(new BmpImage(io));
if (!image->good()) if (!image->good())
{ {
image.reset(); image.reset();
} }
@ -146,12 +146,12 @@ namespace Exiv2 {
const unsigned char BmpImageId[2] = { 'B', 'M' }; const unsigned char BmpImageId[2] = { 'B', 'M' };
byte buf[len]; byte buf[len];
iIo.read(buf, len); iIo.read(buf, len);
if (iIo.error() || iIo.eof()) if (iIo.error() || iIo.eof())
{ {
return false; return false;
} }
bool matched = (memcmp(buf, BmpImageId, len) == 0); bool matched = (memcmp(buf, BmpImageId, len) == 0);
if (!advance || !matched) if (!advance || !matched)
{ {
iIo.seek(-len, BasicIo::cur); iIo.seek(-len, BasicIo::cur);
} }

@ -243,7 +243,7 @@ namespace Exiv2 {
{ 6, N_("Medium 2") }, { 6, N_("Medium 2") },
{ 7, N_("Medium 3") } { 7, N_("Medium 3") }
}; };
//! EasyMode, tag 0x000b //! EasyMode, tag 0x000b
extern const TagDetails canonCsEasyMode[] = { extern const TagDetails canonCsEasyMode[] = {
{ 0, N_("Full auto") }, { 0, N_("Full auto") },

@ -550,7 +550,7 @@ namespace Exiv2 {
else { // "Exif.GPSInfo.GPSTimeStamp" else { // "Exif.GPSInfo.GPSTimeStamp"
bool ok = true; bool ok = true;
if (pos->value().count() != 3) ok = false; if (pos->value().count() != 3) ok = false;
if (ok) { if (ok) {
for (int i = 0; i < 3; ++i) { for (int i = 0; i < 3; ++i) {
if (pos->value().toRational(i).second == 0) { if (pos->value().toRational(i).second == 0) {
@ -891,7 +891,7 @@ namespace Exiv2 {
} }
std::ostringstream array; std::ostringstream array;
array << static_cast<int>(value[0]) << " " array << static_cast<int>(value[0]) << " "
<< static_cast<int>(value[1]) << " " << static_cast<int>(value[1]) << " "
<< static_cast<int>(value[2]) << " " << static_cast<int>(value[2]) << " "
<< static_cast<int>(value[3]); << static_cast<int>(value[3]);
@ -1282,7 +1282,7 @@ namespace {
if ( pos->value().ok() if ( pos->value().ok()
&& value.length() > 5 && value.substr(0, 5) == "lang=") { && value.length() > 5 && value.substr(0, 5) == "lang=") {
std::string::size_type pos = value.find_first_of(' '); std::string::size_type pos = value.find_first_of(' ');
if (pos != std::string::npos) { if (pos != std::string::npos) {
value = value.substr(pos + 1); value = value.substr(pos + 1);
} }
else { else {

@ -85,12 +85,12 @@ namespace Exiv2 {
*/ */
void writeMetadata(); void writeMetadata();
/*! /*!
@brief Todo: Not supported yet, requires writeMetadata(). Calling @brief Todo: Not supported yet, requires writeMetadata(). Calling
this function will throw an Error(32). this function will throw an Error(32).
*/ */
void setExifData(const ExifData& exifData); void setExifData(const ExifData& exifData);
/*! /*!
@brief Todo: Not supported yet, requires writeMetadata(). Calling @brief Todo: Not supported yet, requires writeMetadata(). Calling
this function will throw an Error(32). this function will throw an Error(32).
*/ */
void setIptcData(const IptcData& iptcData); void setIptcData(const IptcData& iptcData);

@ -306,7 +306,7 @@ namespace Exiv2 {
void ExifThumb::setJpegThumbnail( void ExifThumb::setJpegThumbnail(
const std::string& path, const std::string& path,
URational xres, URational xres,
URational yres, URational yres,
uint16_t unit uint16_t unit
) )

@ -252,7 +252,7 @@ namespace Exiv2 {
of the Exif data. These methods do not write to the Exif metadata. of the Exif data. These methods do not write to the Exif metadata.
Manipulators are provided in subclass ExifThumb. Manipulators are provided in subclass ExifThumb.
@note Various other preview and thumbnail images may be contained in an @note Various other preview and thumbnail images may be contained in an
image, depending on its format and the camera make and model. This image, depending on its format and the camera make and model. This
class only provides access to the Exif thumbnail as specified in the class only provides access to the Exif thumbnail as specified in the
Exif standard. Exif standard.
@ -306,7 +306,7 @@ namespace Exiv2 {
embedded in IFD1 of the Exif data. Accessors are provided by the embedded in IFD1 of the Exif data. Accessors are provided by the
base class, ExifThumbC. base class, ExifThumbC.
@note Various other preview and thumbnail images may be contained in an @note Various other preview and thumbnail images may be contained in an
image, depending on its format and the camera make and model. This image, depending on its format and the camera make and model. This
class only provides access to the Exif thumbnail as specified in the class only provides access to the Exif thumbnail as specified in the
Exif standard. Exif standard.
@ -340,7 +340,7 @@ namespace Exiv2 {
*/ */
void setJpegThumbnail( void setJpegThumbnail(
const std::string& path, const std::string& path,
URational xres, URational xres,
URational yres, URational yres,
uint16_t unit uint16_t unit
); );

@ -144,7 +144,7 @@ int main(int argc, char* const argv[])
int n = 1; int n = 1;
int s = static_cast<int>(params.files_.size()); int s = static_cast<int>(params.files_.size());
int w = s > 9 ? s > 99 ? 3 : 2 : 1; int w = s > 9 ? s > 99 ? 3 : 2 : 1;
for (Params::Files::const_iterator i = params.files_.begin(); for (Params::Files::const_iterator i = params.files_.begin();
i != params.files_.end(); ++i) { i != params.files_.end(); ++i) {
if (params.verbose_) { if (params.verbose_) {
std::cout << _("File") << " " << std::setw(w) << std::right << n++ << "/" << s << ": " std::cout << _("File") << " " << std::setw(w) << std::right << n++ << "/" << s << ": "
@ -168,7 +168,7 @@ Params* Params::instance_ = 0;
const Params::YodAdjust Params::emptyYodAdjust_[] = { const Params::YodAdjust Params::emptyYodAdjust_[] = {
{ false, "-Y", 0 }, { false, "-Y", 0 },
{ false, "-O", 0 }, { false, "-O", 0 },
{ false, "-D", 0 }, { false, "-D", 0 },
}; };
Params& Params::instance() Params& Params::instance()
@ -356,8 +356,8 @@ int Params::evalRename(int opt, const std::string& optarg)
case Action::none: case Action::none:
action_ = Action::rename; action_ = Action::rename;
switch (opt) { switch (opt) {
case 'r': case 'r':
format_ = optarg; format_ = optarg;
formatSet_ = true; formatSet_ = true;
break; break;
case 't': timestamp_ = true; break; case 't': timestamp_ = true; break;
@ -370,7 +370,7 @@ int Params::evalRename(int opt, const std::string& optarg)
<< ": " << _("Ignoring surplus option") << " -r \"" << optarg << "\"\n"; << ": " << _("Ignoring surplus option") << " -r \"" << optarg << "\"\n";
} }
else { else {
format_ = optarg; format_ = optarg;
formatSet_ = true; formatSet_ = true;
} }
break; break;

@ -80,13 +80,13 @@ namespace Exiv2 {
#ifdef DEBUG #ifdef DEBUG
std::cerr << "Exiv2::GifImage::readMetadata: Reading GIF file " << io_->path() << "\n"; std::cerr << "Exiv2::GifImage::readMetadata: Reading GIF file " << io_->path() << "\n";
#endif #endif
if (io_->open() != 0) if (io_->open() != 0)
{ {
throw Error(9, io_->path(), strError()); throw Error(9, io_->path(), strError());
} }
IoCloser closer(*io_); IoCloser closer(*io_);
// Ensure that this is the correct image type // Ensure that this is the correct image type
if (!isGifType(*io_, true)) if (!isGifType(*io_, true))
{ {
if (io_->error() || io_->eof()) throw Error(14); if (io_->error() || io_->eof()) throw Error(14);
throw Error(3, "GIF"); throw Error(3, "GIF");
@ -112,7 +112,7 @@ namespace Exiv2 {
Image::AutoPtr newGifInstance(BasicIo::AutoPtr io, bool /*create*/) Image::AutoPtr newGifInstance(BasicIo::AutoPtr io, bool /*create*/)
{ {
Image::AutoPtr image(new GifImage(io)); Image::AutoPtr image(new GifImage(io));
if (!image->good()) if (!image->good())
{ {
image.reset(); image.reset();
} }
@ -126,13 +126,13 @@ namespace Exiv2 {
const unsigned char Gif89aId[8] = { 'G', 'I', 'F', '8', '9', 'a' }; const unsigned char Gif89aId[8] = { 'G', 'I', 'F', '8', '9', 'a' };
byte buf[len]; byte buf[len];
iIo.read(buf, len); iIo.read(buf, len);
if (iIo.error() || iIo.eof()) if (iIo.error() || iIo.eof())
{ {
return false; return false;
} }
bool matched = (memcmp(buf, Gif87aId, len) == 0) bool matched = (memcmp(buf, Gif87aId, len) == 0)
|| (memcmp(buf, Gif89aId, len) == 0); || (memcmp(buf, Gif89aId, len) == 0);
if (!advance || !matched) if (!advance || !matched)
{ {
iIo.seek(-len, BasicIo::cur); iIo.seek(-len, BasicIo::cur);
} }

@ -108,7 +108,7 @@ namespace Exiv2 {
return imageType == imageType_; return imageType == imageType_;
} }
Image::Image(int imageType, Image::Image(int imageType,
uint16_t supportedMetadata, uint16_t supportedMetadata,
BasicIo::AutoPtr io) BasicIo::AutoPtr io)
: io_(io), : io_(io),
@ -118,7 +118,7 @@ namespace Exiv2 {
supportedMetadata_(supportedMetadata), supportedMetadata_(supportedMetadata),
#ifdef EXV_HAVE_XMP_TOOLKIT #ifdef EXV_HAVE_XMP_TOOLKIT
writeXmpFromPacket_(false), writeXmpFromPacket_(false),
#else #else
writeXmpFromPacket_(true), writeXmpFromPacket_(true),
#endif #endif
byteOrder_(invalidByteOrder) byteOrder_(invalidByteOrder)
@ -190,7 +190,7 @@ namespace Exiv2 {
void Image::writeXmpFromPacket(bool flag) void Image::writeXmpFromPacket(bool flag)
{ {
#ifdef EXV_HAVE_XMP_TOOLKIT #ifdef EXV_HAVE_XMP_TOOLKIT
writeXmpFromPacket_ = flag; writeXmpFromPacket_ = flag;
#endif #endif
} }

@ -77,10 +77,10 @@ namespace Exiv2 {
//@{ //@{
/*! /*!
@brief Constructor taking the image type, a bitmap of the supported @brief Constructor taking the image type, a bitmap of the supported
metadata types and an auto-pointer that owns an IO instance. metadata types and an auto-pointer that owns an IO instance.
See subclass constructor doc. See subclass constructor doc.
*/ */
Image(int imageType, Image(int imageType,
uint16_t supportedMetadata, uint16_t supportedMetadata,
BasicIo::AutoPtr io); BasicIo::AutoPtr io);
//! Virtual Destructor //! Virtual Destructor
@ -142,8 +142,8 @@ namespace Exiv2 {
@brief Assign a raw XMP packet. The new XMP packet is not written @brief Assign a raw XMP packet. The new XMP packet is not written
to the image until the writeMetadata() method is called. to the image until the writeMetadata() method is called.
Subsequent calls to writeMetadata() write the XMP packet from Subsequent calls to writeMetadata() write the XMP packet from
the buffered raw XMP packet rather than from buffered parsed XMP the buffered raw XMP packet rather than from buffered parsed XMP
data. In order to write from parsed XMP data again, use data. In order to write from parsed XMP data again, use
either writeXmpFromPacket(false) or setXmpData(). either writeXmpFromPacket(false) or setXmpData().
@ -154,10 +154,10 @@ namespace Exiv2 {
@brief Erase the buffered XMP packet. XMP data is not removed from @brief Erase the buffered XMP packet. XMP data is not removed from
the actual image until the writeMetadata() method is called. the actual image until the writeMetadata() method is called.
This has the same effect as clearXmpData() but operates on the This has the same effect as clearXmpData() but operates on the
buffered raw XMP packet only, not the parsed XMP data. buffered raw XMP packet only, not the parsed XMP data.
Subsequent calls to writeMetadata() write the XMP packet from Subsequent calls to writeMetadata() write the XMP packet from
the buffered raw XMP packet rather than from buffered parsed XMP the buffered raw XMP packet rather than from buffered parsed XMP
data. In order to write from parsed XMP data again, use data. In order to write from parsed XMP data again, use
either writeXmpFromPacket(false) or setXmpData(). either writeXmpFromPacket(false) or setXmpData().
@ -169,7 +169,7 @@ namespace Exiv2 {
Subsequent calls to writeMetadata() encode the XMP data to Subsequent calls to writeMetadata() encode the XMP data to
a raw XMP packet and write the newly encoded packet to the image. a raw XMP packet and write the newly encoded packet to the image.
In the process, the buffered raw XMP packet is updated. In the process, the buffered raw XMP packet is updated.
In order to write directly from the raw XMP packet, use In order to write directly from the raw XMP packet, use
writeXmpFromPacket(true) or setXmpPacket(). writeXmpFromPacket(true) or setXmpPacket().
@ -180,7 +180,7 @@ namespace Exiv2 {
@brief Erase any buffered XMP data. XMP data is not removed from @brief Erase any buffered XMP data. XMP data is not removed from
the actual image until the writeMetadata() method is called. the actual image until the writeMetadata() method is called.
This has the same effect as clearXmpPacket() but operates on the This has the same effect as clearXmpPacket() but operates on the
buffered parsed XMP data. buffered parsed XMP data.
Subsequent calls to writeMetadata() encode the XMP data to Subsequent calls to writeMetadata() encode the XMP data to
@ -260,11 +260,11 @@ namespace Exiv2 {
XMP from the buffered raw XMP packet or from parsed XMP data. XMP from the buffered raw XMP packet or from parsed XMP data.
The default is to write from parsed XMP data. The switch is also The default is to write from parsed XMP data. The switch is also
set by all functions to set and clear the buffered raw XMP packet set by all functions to set and clear the buffered raw XMP packet
and parsed XMP data, so using this function should usually not be and parsed XMP data, so using this function should usually not be
necessary. necessary.
If %Exiv2 was compiled without XMP support, the default for this If %Exiv2 was compiled without XMP support, the default for this
flag is true and it will never be changed in order to preserve flag is true and it will never be changed in order to preserve
access to the raw XMP packet. access to the raw XMP packet.
*/ */
void writeXmpFromPacket(bool flag); void writeXmpFromPacket(bool flag);

@ -115,13 +115,13 @@ namespace Exiv2 {
#ifdef DEBUG #ifdef DEBUG
std::cerr << "Exiv2::Jp2Image::readMetadata: Reading JPEG-2000 file " << io_->path() << "\n"; std::cerr << "Exiv2::Jp2Image::readMetadata: Reading JPEG-2000 file " << io_->path() << "\n";
#endif #endif
if (io_->open() != 0) if (io_->open() != 0)
{ {
throw Error(9, io_->path(), strError()); throw Error(9, io_->path(), strError());
} }
IoCloser closer(*io_); IoCloser closer(*io_);
// Ensure that this is the correct image type // Ensure that this is the correct image type
if (!isJp2Type(*io_, true)) if (!isJp2Type(*io_, true))
{ {
if (io_->error() || io_->eof()) throw Error(14); if (io_->error() || io_->eof()) throw Error(14);
throw Error(3, "JPEG-2000"); throw Error(3, "JPEG-2000");
@ -240,7 +240,7 @@ namespace Exiv2 {
Image::AutoPtr newJp2Instance(BasicIo::AutoPtr io, bool /*create*/) Image::AutoPtr newJp2Instance(BasicIo::AutoPtr io, bool /*create*/)
{ {
Image::AutoPtr image(new Jp2Image(io)); Image::AutoPtr image(new Jp2Image(io));
if (!image->good()) if (!image->good())
{ {
image.reset(); image.reset();
} }
@ -254,12 +254,12 @@ namespace Exiv2 {
const unsigned char Jp2Header[len] = { 0x00, 0x00, 0x00, 0x0c, 0x6a, 0x50, 0x20, 0x20, 0x0d, 0x0a, 0x87, 0x0a }; const unsigned char Jp2Header[len] = { 0x00, 0x00, 0x00, 0x0c, 0x6a, 0x50, 0x20, 0x20, 0x0d, 0x0a, 0x87, 0x0a };
byte buf[len]; byte buf[len];
iIo.read(buf, len); iIo.read(buf, len);
if (iIo.error() || iIo.eof()) if (iIo.error() || iIo.eof())
{ {
return false; return false;
} }
bool matched = (memcmp(buf, Jp2Header, len) == 0); bool matched = (memcmp(buf, Jp2Header, len) == 0);
if (!advance || !matched) if (!advance || !matched)
{ {
iIo.seek(-len, BasicIo::cur); iIo.seek(-len, BasicIo::cur);
} }

@ -137,7 +137,7 @@ namespace Exiv2 {
return -2; return -2;
} }
#ifndef DEBUG #ifndef DEBUG
if ( (dataSize & 1) if ( (dataSize & 1)
&& position + dataSize == static_cast<uint32_t>(sizePsData)) { && position + dataSize == static_cast<uint32_t>(sizePsData)) {
std::cerr << "Warning: " std::cerr << "Warning: "
<< "Photoshop IRB data is not padded to even size\n"; << "Photoshop IRB data is not padded to even size\n";
@ -212,7 +212,7 @@ namespace Exiv2 {
} }
// Write existing stuff after record, data is rounded to be even. // Write existing stuff after record, data is rounded to be even.
const uint32_t sizeOldData = sizeHdr + sizeIptc + (sizeIptc & 1); const uint32_t sizeOldData = sizeHdr + sizeIptc + (sizeIptc & 1);
// Note: Because of the rounding, sizeFront + sizeOldData can be // Note: Because of the rounding, sizeFront + sizeOldData can be
// _greater_ than sizePsData by 1 (not just equal), if the original // _greater_ than sizePsData by 1 (not just equal), if the original
// data was not padded. // data was not padded.
if (static_cast<uint32_t>(sizePsData) > sizeFront + sizeOldData) { if (static_cast<uint32_t>(sizePsData) > sizeFront + sizeOldData) {
@ -403,7 +403,7 @@ namespace Exiv2 {
} }
else if ( pixelHeight_ == 0 else if ( pixelHeight_ == 0
&& ( marker == sof0_ || marker == sof1_ || marker == sof2_ && ( marker == sof0_ || marker == sof1_ || marker == sof2_
|| marker == sof3_ || marker == sof5_ || marker == sof6_ || marker == sof3_ || marker == sof5_ || marker == sof6_
|| marker == sof7_ || marker == sof9_ || marker == sof10_ || marker == sof7_ || marker == sof9_ || marker == sof10_
|| marker == sof11_ || marker == sof13_ || marker == sof14_ || marker == sof11_ || marker == sof13_ || marker == sof14_
|| marker == sof15_)) { || marker == sof15_)) {

@ -140,10 +140,10 @@ namespace Exiv2 {
valid image of the calling subclass. valid image of the calling subclass.
@param dataSize Size of initData in bytes. @param dataSize Size of initData in bytes.
*/ */
JpegBase(int type, JpegBase(int type,
BasicIo::AutoPtr io, BasicIo::AutoPtr io,
bool create, bool create,
const byte initData[], const byte initData[],
long dataSize); long dataSize);
//@} //@}

@ -212,7 +212,7 @@ namespace Exiv2 {
@brief Return the <EM>n</EM>-th component of the value converted to @brief Return the <EM>n</EM>-th component of the value converted to
a string. The behaviour of the method is undefined if there a string. The behaviour of the method is undefined if there
is no <EM>n</EM>-th component. is no <EM>n</EM>-th component.
*/ */
virtual std::string toString(long n) const =0; virtual std::string toString(long n) const =0;
/*! /*!
@brief Return the <EM>n</EM>-th component of the value converted to long. @brief Return the <EM>n</EM>-th component of the value converted to long.

@ -85,12 +85,12 @@ namespace Exiv2 {
*/ */
void writeMetadata(); void writeMetadata();
/*! /*!
@brief Todo: Not supported yet, requires writeMetadata(). Calling @brief Todo: Not supported yet, requires writeMetadata(). Calling
this function will throw an Error(32). this function will throw an Error(32).
*/ */
void setExifData(const ExifData& exifData); void setExifData(const ExifData& exifData);
/*! /*!
@brief Todo: Not supported yet, requires writeMetadata(). Calling @brief Todo: Not supported yet, requires writeMetadata(). Calling
this function will throw an Error(32). this function will throw an Error(32).
*/ */
void setIptcData(const IptcData& iptcData); void setIptcData(const IptcData& iptcData);

@ -27,7 +27,7 @@ try {
Exiv2::ExifKey key("Exif.Minolta.ThumbnailOffset"); Exiv2::ExifKey key("Exif.Minolta.ThumbnailOffset");
Exiv2::ExifData::const_iterator format = exifData.findKey(key); Exiv2::ExifData::const_iterator format = exifData.findKey(key);
if (format != exifData.end()) { if (format != exifData.end()) {
Exiv2::DataBuf buf = format->dataArea(); Exiv2::DataBuf buf = format->dataArea();

@ -85,12 +85,12 @@ namespace Exiv2 {
*/ */
void writeMetadata(); void writeMetadata();
/*! /*!
@brief Todo: Not supported yet, requires writeMetadata(). Calling @brief Todo: Not supported yet, requires writeMetadata(). Calling
this function will throw an Error(32). this function will throw an Error(32).
*/ */
void setExifData(const ExifData& exifData); void setExifData(const ExifData& exifData);
/*! /*!
@brief Todo: Not supported yet, requires writeMetadata(). Calling @brief Todo: Not supported yet, requires writeMetadata(). Calling
this function will throw an Error(32). this function will throw an Error(32).
*/ */
void setIptcData(const IptcData& iptcData); void setIptcData(const IptcData& iptcData);

@ -625,7 +625,7 @@ namespace Exiv2 {
{ 4, N_("Vibrant") }, { 4, N_("Vibrant") },
{ 5, N_("Monochrome") }, { 5, N_("Monochrome") },
}; };
//! DynamicRangeExpansion, tag 0x0069 //! DynamicRangeExpansion, tag 0x0069
extern const TagDetails pentaxDynamicRangeExpansion[] = { extern const TagDetails pentaxDynamicRangeExpansion[] = {
{ 0, N_("Off") }, { 0, N_("Off") },

@ -135,7 +135,7 @@ namespace Exiv2 {
DataBuf arr = parsePngChunk(pData, size, index, keysize); DataBuf arr = parsePngChunk(pData, size, index, keysize);
#ifdef DEBUG #ifdef DEBUG
std::cerr << "Exiv2::PngChunk::decode: Found PNG chunk: " std::cerr << "Exiv2::PngChunk::decode: Found PNG chunk: "
<< std::string((const char*)key) << " :: " << std::string((const char*)key) << " :: "
<< std::string((const char*)arr.pData_, 32) << "\n"; << std::string((const char*)arr.pData_, 32) << "\n";
#endif #endif
@ -360,7 +360,7 @@ namespace Exiv2 {
#endif #endif
xmpPacket = xmpPacket.substr(idx); xmpPacket = xmpPacket.substr(idx);
} }
if (XmpParser::decode(pImage->xmpData(), xmpPacket)) if (XmpParser::decode(pImage->xmpData(), xmpPacket))
{ {
#ifndef SUPPRESS_WARNINGS #ifndef SUPPRESS_WARNINGS
std::cerr << "Warning: Failed to decode XMP metadata.\n"; std::cerr << "Warning: Failed to decode XMP metadata.\n";
@ -387,7 +387,7 @@ namespace Exiv2 {
#endif #endif
xmpPacket = xmpPacket.substr(idx); xmpPacket = xmpPacket.substr(idx);
} }
if (XmpParser::decode(pImage->xmpData(), xmpPacket)) if (XmpParser::decode(pImage->xmpData(), xmpPacket))
{ {
#ifndef SUPPRESS_WARNINGS #ifndef SUPPRESS_WARNINGS
std::cerr << "Warning: Failed to decode XMP metadata.\n"; std::cerr << "Warning: Failed to decode XMP metadata.\n";
@ -489,8 +489,8 @@ namespace Exiv2 {
} // PngChunk::readRawProfile } // PngChunk::readRawProfile
void PngChunk::zlibUncompress(const byte* compressedText, void PngChunk::zlibUncompress(const byte* compressedText,
unsigned int compressedTextSize, unsigned int compressedTextSize,
DataBuf& arr) DataBuf& arr)
{ {
uLongf uncompressedLen = compressedTextSize * 2; // just a starting point uLongf uncompressedLen = compressedTextSize * 2; // just a starting point
@ -534,101 +534,101 @@ namespace Exiv2 {
/* TODO : code backported from digiKam. Not yet adapted and used. /* TODO : code backported from digiKam. Not yet adapted and used.
void PngChunk::writeRawProfile(png_struct *ping, void PngChunk::writeRawProfile(png_struct *ping,
png_info* ping_info, png_info* ping_info,
char* profile_type, char* profile_type,
char* profile_data, char* profile_data,
png_uint_32 length) png_uint_32 length)
{ {
png_textp text; png_textp text;
register long i; register long i;
uchar *sp; uchar *sp;
png_charp dp; png_charp dp;
png_uint_32 allocated_length, description_length; png_uint_32 allocated_length, description_length;
const uchar hex[16] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; const uchar hex[16] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
DDebug() << "Writing Raw profile: type=" << profile_type << ", length=" << length << endl; DDebug() << "Writing Raw profile: type=" << profile_type << ", length=" << length << endl;
text = (png_textp) png_malloc(ping, (png_uint_32) sizeof(png_text)); text = (png_textp) png_malloc(ping, (png_uint_32) sizeof(png_text));
description_length = std::strlen((const char *) profile_type); description_length = std::strlen((const char *) profile_type);
allocated_length = (png_uint_32) (length*2 + (length >> 5) + 20 + description_length); allocated_length = (png_uint_32) (length*2 + (length >> 5) + 20 + description_length);
text[0].text = (png_charp) png_malloc(ping, allocated_length); text[0].text = (png_charp) png_malloc(ping, allocated_length);
text[0].key = (png_charp) png_malloc(ping, (png_uint_32) 80); text[0].key = (png_charp) png_malloc(ping, (png_uint_32) 80);
text[0].key[0] = '\0'; text[0].key[0] = '\0';
concatenateString(text[0].key, "Raw profile type ", 4096); concatenateString(text[0].key, "Raw profile type ", 4096);
concatenateString(text[0].key, (const char *) profile_type, 62); concatenateString(text[0].key, (const char *) profile_type, 62);
sp = (uchar*)profile_data; sp = (uchar*)profile_data;
dp = text[0].text; dp = text[0].text;
*dp++='\n'; *dp++='\n';
copyString(dp, (const char *) profile_type, allocated_length); copyString(dp, (const char *) profile_type, allocated_length);
dp += description_length; dp += description_length;
*dp++='\n'; *dp++='\n';
formatString(dp, allocated_length-strlen(text[0].text), "%8lu ", length); formatString(dp, allocated_length-strlen(text[0].text), "%8lu ", length);
dp += 8; dp += 8;
for (i=0; i < (long) length; i++) for (i=0; i < (long) length; i++)
{ {
if (i%36 == 0) if (i%36 == 0)
*dp++='\n'; *dp++='\n';
*(dp++)=(char) hex[((*sp >> 4) & 0x0f)]; *(dp++)=(char) hex[((*sp >> 4) & 0x0f)];
*(dp++)=(char) hex[((*sp++ ) & 0x0f)]; *(dp++)=(char) hex[((*sp++ ) & 0x0f)];
} }
*dp++='\n'; *dp++='\n';
*dp='\0'; *dp='\0';
text[0].text_length = (png_size_t) (dp-text[0].text); text[0].text_length = (png_size_t) (dp-text[0].text);
text[0].compression = -1; text[0].compression = -1;
if (text[0].text_length <= allocated_length) if (text[0].text_length <= allocated_length)
png_set_text(ping, ping_info,text, 1); png_set_text(ping, ping_info,text, 1);
png_free(ping, text[0].text); png_free(ping, text[0].text);
png_free(ping, text[0].key); png_free(ping, text[0].key);
png_free(ping, text); png_free(ping, text);
} // PngChunk::writeRawProfile } // PngChunk::writeRawProfile
size_t PngChunk::concatenateString(char* destination, size_t PngChunk::concatenateString(char* destination,
const char* source, const char* source,
const size_t length) const size_t length)
{ {
register char *q; register char *q;
register const char *p; register const char *p;
register size_t i; register size_t i;
size_t count; size_t count;
if ( !destination || !source || length == 0 ) if ( !destination || !source || length == 0 )
return 0; return 0;
p = source; p = source;
q = destination; q = destination;
i = length; i = length;
while ((i-- != 0) && (*q != '\0')) while ((i-- != 0) && (*q != '\0'))
q++; q++;
count = (size_t) (q-destination); count = (size_t) (q-destination);
i = length-count; i = length-count;
if (i == 0) if (i == 0)
return(count+strlen(p)); return(count+strlen(p));
while (*p != '\0') while (*p != '\0')
{ {
if (i != 1) if (i != 1)
@ -638,61 +638,61 @@ namespace Exiv2 {
} }
p++; p++;
} }
*q='\0'; *q='\0';
return(count+(p-source)); return(count+(p-source));
} // PngChunk::concatenateString } // PngChunk::concatenateString
size_t PngChunk::copyString(char* destination, size_t PngChunk::copyString(char* destination,
const char* source, const char* source,
const size_t length) const size_t length)
{ {
register char *q; register char *q;
register const char *p; register const char *p;
register size_t i; register size_t i;
if ( !destination || !source || length == 0 ) if ( !destination || !source || length == 0 )
return 0; return 0;
p = source; p = source;
q = destination; q = destination;
i = length; i = length;
if ((i != 0) && (--i != 0)) if ((i != 0) && (--i != 0))
{ {
do do
{ {
if ((*q++=(*p++)) == '\0') if ((*q++=(*p++)) == '\0')
break; break;
} }
while (--i != 0); while (--i != 0);
} }
if (i == 0) if (i == 0)
{ {
if (length != 0) if (length != 0)
*q='\0'; *q='\0';
while (*p++ != '\0'); while (*p++ != '\0');
} }
return((size_t) (p-source-1)); return((size_t) (p-source-1));
} // PngChunk::copyString } // PngChunk::copyString
long PngChunk::formatString(char* string, long PngChunk::formatString(char* string,
const size_t length, const size_t length,
const char* format, const char* format,
...) ...)
{ {
long n; long n;
va_list operands; va_list operands;
va_start(operands,format); va_start(operands,format);
n = (long) formatStringList(string, length, format, operands); n = (long) formatStringList(string, length, format, operands);
va_end(operands); va_end(operands);
@ -700,20 +700,20 @@ namespace Exiv2 {
} // PngChunk::formatString } // PngChunk::formatString
long PngChunk::formatStringList(char* string, long PngChunk::formatStringList(char* string,
const size_t length, const size_t length,
const char* format, const char* format,
va_list operands) va_list operands)
{ {
int n = vsnprintf(string, length, format, operands); int n = vsnprintf(string, length, format, operands);
if (n < 0) if (n < 0)
string[length-1] = '\0'; string[length-1] = '\0';
return((long) n); return((long) n);
} // PngChunk::formatStringList } // PngChunk::formatStringList
*/ */
} // namespace Exiv2 } // namespace Exiv2
// ***************************************************************************** // *****************************************************************************

@ -83,16 +83,16 @@ namespace Exiv2 {
//@{ //@{
/*! /*!
@brief Parse PNG chunk to determine type and extract content. @brief Parse PNG chunk to determine type and extract content.
Supported Chunk types are tTXt, zTXt, and iTXt. Supported Chunk types are tTXt, zTXt, and iTXt.
*/ */
static DataBuf parsePngChunk(const byte* pData, static DataBuf parsePngChunk(const byte* pData,
long size, long size,
long& index, long& index,
int keysize); int keysize);
/*! /*!
@brief Parse PNG chunk contents to extract metadata container and assign it to image. @brief Parse PNG chunk contents to extract metadata container and assign it to image.
Supported contents are: Supported contents are:
Exif raw text profile generated by ImageMagick ==> Image Exif metadata. Exif raw text profile generated by ImageMagick ==> Image Exif metadata.
Iptc raw text profile generated by ImageMagick ==> Image Iptc metadata. Iptc raw text profile generated by ImageMagick ==> Image Iptc metadata.
@ -100,8 +100,8 @@ namespace Exiv2 {
Xmp packet generated by Adobe ==> Image Xmp metadata. Xmp packet generated by Adobe ==> Image Xmp metadata.
Description string ==> Image Comments. Description string ==> Image Comments.
*/ */
static void parseChunkContent(Image* pImage, static void parseChunkContent(Image* pImage,
const byte* key, const byte* key,
const DataBuf arr); const DataBuf arr);
/*! /*!
@ -112,30 +112,30 @@ namespace Exiv2 {
/*! /*!
@brief Wrapper around zlib to uncompress a PNG chunk content. @brief Wrapper around zlib to uncompress a PNG chunk content.
*/ */
static void zlibUncompress(const byte* compressedText, static void zlibUncompress(const byte* compressedText,
unsigned int compressedTextSize, unsigned int compressedTextSize,
DataBuf& arr); DataBuf& arr);
/* TODO : code backported from digiKam. Not yet adapted and used. /* TODO : code backported from digiKam. Not yet adapted and used.
static DataBuf writeRawProfile(const DataBuf& text); static DataBuf writeRawProfile(const DataBuf& text);
static size_t concatenateString(char* destination, static size_t concatenateString(char* destination,
const char* source, const char* source,
const size_t length); const size_t length);
static size_t copyString(char* destination, static size_t copyString(char* destination,
const char* source, const char* source,
const size_t length); const size_t length);
static long formatString(char* string, static long formatString(char* string,
const size_t length, const size_t length,
const char* format, const char* format,
...); ...);
static long formatStringList(char *string, static long formatStringList(char *string,
const size_t length, const size_t length,
const char *format, const char *format,
va_list operands);*/ va_list operands);*/
//@} //@}

@ -88,17 +88,17 @@ namespace Exiv2 {
*/ */
void writeMetadata(); void writeMetadata();
/*! /*!
@brief Todo: Not supported yet, requires writeMetadata(). Calling @brief Todo: Not supported yet, requires writeMetadata(). Calling
this function will throw an Error(32). this function will throw an Error(32).
*/ */
void setExifData(const ExifData& exifData); void setExifData(const ExifData& exifData);
/*! /*!
@brief Todo: Not supported yet, requires writeMetadata(). Calling @brief Todo: Not supported yet, requires writeMetadata(). Calling
this function will throw an Error(32). this function will throw an Error(32).
*/ */
void setIptcData(const IptcData& iptcData); void setIptcData(const IptcData& iptcData);
/*! /*!
@brief Todo: Not supported yet, requires writeMetadata(). Calling @brief Todo: Not supported yet, requires writeMetadata(). Calling
this function will throw an Error(32). this function will throw an Error(32).
*/ */
void setComment(const std::string& comment); void setComment(const std::string& comment);

@ -80,7 +80,7 @@ namespace Exiv2 {
{ "http://ns.adobe.com/tiff/1.0/", "tiff", xmpTiffInfo, N_("Exif Schema for TIFF Properties") }, { "http://ns.adobe.com/tiff/1.0/", "tiff", xmpTiffInfo, N_("Exif Schema for TIFF Properties") },
{ "http://ns.adobe.com/exif/1.0/", "exif", xmpExifInfo, N_("Exif schema for Exif-specific Properties") }, { "http://ns.adobe.com/exif/1.0/", "exif", xmpExifInfo, N_("Exif schema for Exif-specific Properties") },
{ "http://ns.adobe.com/exif/1.0/aux/", "aux", xmpAuxInfo, N_("Exif schema for Additional Exif Properties")}, { "http://ns.adobe.com/exif/1.0/aux/", "aux", xmpAuxInfo, N_("Exif schema for Additional Exif Properties")},
{ "http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/", "iptc", xmpIptcInfo, N_("IPTC Core schema") }, { "http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/", "iptc", xmpIptcInfo, N_("IPTC Core schema") },
// NOTE: 'Iptc4xmpCore' is just too long // NOTE: 'Iptc4xmpCore' is just too long
// Structures // Structures
@ -587,7 +587,7 @@ namespace Exiv2 {
{ 0, 0, 0, invalidTypeId, xmpInternal, 0 } { 0, 0, 0, invalidTypeId, xmpInternal, 0 }
}; };
extern const XmpPrintInfo xmpPrintInfo[] = { extern const XmpPrintInfo xmpPrintInfo[] = {
{"Xmp.crs.CropUnits", EXV_PRINT_TAG(xmpCrsCropUnits)}, {"Xmp.crs.CropUnits", EXV_PRINT_TAG(xmpCrsCropUnits)},
{"Xmp.exif.ApertureValue", print0x9202 }, {"Xmp.exif.ApertureValue", print0x9202 },
{"Xmp.exif.BrightnessValue", printFloat }, {"Xmp.exif.BrightnessValue", printFloat },
@ -909,7 +909,7 @@ namespace Exiv2 {
} }
std::string XmpKey::tagName() const std::string XmpKey::tagName() const
{ {
return p_->property_; return p_->property_;
} }

@ -66,7 +66,7 @@ namespace Exiv2 {
const char* name_; //!< Property name const char* name_; //!< Property name
const char* title_; //!< Property title or label const char* title_; //!< Property title or label
const char* xmpValueType_; //!< XMP value type (for info only) const char* xmpValueType_; //!< XMP value type (for info only)
TypeId typeId_; //!< Exiv2 default type for the property TypeId typeId_; //!< Exiv2 default type for the property
XmpCategory xmpCategory_; //!< Category (internal or external) XmpCategory xmpCategory_; //!< Category (internal or external)
const char* desc_; //!< Property description const char* desc_; //!< Property description
}; };
@ -84,14 +84,14 @@ namespace Exiv2 {
struct XmpNsInfo { struct XmpNsInfo {
//! For comparison with prefix //! For comparison with prefix
struct Prefix { struct Prefix {
//! Constructor. //! Constructor.
Prefix(const std::string& prefix); Prefix(const std::string& prefix);
//! The prefix string. //! The prefix string.
std::string prefix_; std::string prefix_;
}; };
//! For comparison with namespace //! For comparison with namespace
struct Ns { struct Ns {
//! Constructor. //! Constructor.
Ns(const std::string& ns); Ns(const std::string& ns);
//! The namespace string //! The namespace string
std::string ns_; std::string ns_;
@ -120,14 +120,14 @@ namespace Exiv2 {
/*! /*!
@brief Return the title (label) of the property. @brief Return the title (label) of the property.
@param key The property key @param key The property key
@return The title (label) of the property, 0 if the @return The title (label) of the property, 0 if the
key is of an unknown property. key is of an unknown property.
*/ */
static const char* propertyTitle(const XmpKey& key); static const char* propertyTitle(const XmpKey& key);
/*! /*!
@brief Return the description of the property. @brief Return the description of the property.
@param key The property key @param key The property key
@return The description of the property, 0 if the @return The description of the property, 0 if the
key is of an unknown property. key is of an unknown property.
*/ */
static const char* propertyDesc(const XmpKey& key); static const char* propertyDesc(const XmpKey& key);
@ -141,7 +141,7 @@ namespace Exiv2 {
/*! /*!
@brief Return information for the property for key. @brief Return information for the property for key.
@param key The property key @param key The property key
@return A pointer to the property information, 0 if the @return A pointer to the property information, 0 if the
key is of an unknown property. key is of an unknown property.
*/ */
static const XmpPropertyInfo* propertyInfo(const XmpKey& key); static const XmpPropertyInfo* propertyInfo(const XmpKey& key);
@ -164,7 +164,7 @@ namespace Exiv2 {
/*! /*!
@brief Return read-only list of built-in properties for \em prefix. @brief Return read-only list of built-in properties for \em prefix.
@param prefix Prefix @param prefix Prefix
@return Pointer to the built-in properties for prefix, may be 0 if @return Pointer to the built-in properties for prefix, may be 0 if
none is configured in the namespace info. none is configured in the namespace info.
@throw Error if no namespace is registered with \em prefix. @throw Error if no namespace is registered with \em prefix.
*/ */

@ -73,7 +73,7 @@ enum {
kPhotoshopResourceID_AlphaChannelsNames = 0x03ee, // as a series of Pstrings kPhotoshopResourceID_AlphaChannelsNames = 0x03ee, // as a series of Pstrings
kPhotoshopResourceID_DisplayInfo = 0x03ef, // see appendix A in Photoshop SDK kPhotoshopResourceID_DisplayInfo = 0x03ef, // see appendix A in Photoshop SDK
kPhotoshopResourceID_PStringCaption = 0x03f0, // [optional] the caption, as a Pstring kPhotoshopResourceID_PStringCaption = 0x03f0, // [optional] the caption, as a Pstring
kPhotoshopResourceID_BorderInformation = 0x03f1, // border width and units kPhotoshopResourceID_BorderInformation = 0x03f1, // border width and units
kPhotoshopResourceID_BackgroundColor = 0x03f2, // see additional Adobe information kPhotoshopResourceID_BackgroundColor = 0x03f2, // see additional Adobe information
kPhotoshopResourceID_PrintFlags = 0x03f3, // labels, crop marks, colour bars, ecc... kPhotoshopResourceID_PrintFlags = 0x03f3, // labels, crop marks, colour bars, ecc...
kPhotoshopResourceID_BWHalftoningInfo = 0x03f4, // Gray-scale and multich. half-toning info kPhotoshopResourceID_BWHalftoningInfo = 0x03f4, // Gray-scale and multich. half-toning info
@ -156,13 +156,13 @@ namespace Exiv2 {
#ifdef DEBUG #ifdef DEBUG
std::cerr << "Exiv2::PsdImage::readMetadata: Reading Photoshop file " << io_->path() << "\n"; std::cerr << "Exiv2::PsdImage::readMetadata: Reading Photoshop file " << io_->path() << "\n";
#endif #endif
if (io_->open() != 0) if (io_->open() != 0)
{ {
throw Error(9, io_->path(), strError()); throw Error(9, io_->path(), strError());
} }
IoCloser closer(*io_); IoCloser closer(*io_);
// Ensure that this is the correct image type // Ensure that this is the correct image type
if (!isPsdType(*io_, false)) if (!isPsdType(*io_, false))
{ {
if (io_->error() || io_->eof()) throw Error(14); if (io_->error() || io_->eof()) throw Error(14);
throw Error(3, "Photoshop"); throw Error(3, "Photoshop");
@ -171,7 +171,7 @@ namespace Exiv2 {
/* /*
The Photoshop header goes as follows -- all numbers are in big-endian byte order: The Photoshop header goes as follows -- all numbers are in big-endian byte order:
offset length name description offset length name description
====== ======= ========= ========= ====== ======= ========= =========
0 4 bytes signature always '8BPS' 0 4 bytes signature always '8BPS'
@ -313,7 +313,7 @@ namespace Exiv2 {
Image::AutoPtr newPsdInstance(BasicIo::AutoPtr io, bool /*create*/) Image::AutoPtr newPsdInstance(BasicIo::AutoPtr io, bool /*create*/)
{ {
Image::AutoPtr image(new PsdImage(io)); Image::AutoPtr image(new PsdImage(io));
if (!image->good()) if (!image->good())
{ {
image.reset(); image.reset();
} }
@ -326,12 +326,12 @@ namespace Exiv2 {
const unsigned char PsdHeader[6] = { '8', 'B', 'P', 'S', 0, 1 }; const unsigned char PsdHeader[6] = { '8', 'B', 'P', 'S', 0, 1 };
byte buf[len]; byte buf[len];
iIo.read(buf, len); iIo.read(buf, len);
if (iIo.error() || iIo.eof()) if (iIo.error() || iIo.eof())
{ {
return false; return false;
} }
bool matched = (memcmp(buf, PsdHeader, len) == 0); bool matched = (memcmp(buf, PsdHeader, len) == 0);
if (!advance || !matched) if (!advance || !matched)
{ {
iIo.seek(-len, BasicIo::cur); iIo.seek(-len, BasicIo::cur);
} }

@ -84,12 +84,12 @@ namespace Exiv2 {
*/ */
void writeMetadata(); void writeMetadata();
/*! /*!
@brief Todo: Not supported yet, requires writeMetadata(). Calling @brief Todo: Not supported yet, requires writeMetadata(). Calling
this function will throw an Error(32). this function will throw an Error(32).
*/ */
void setExifData(const ExifData& exifData); void setExifData(const ExifData& exifData);
/*! /*!
@brief Todo: Not supported yet, requires writeMetadata(). Calling @brief Todo: Not supported yet, requires writeMetadata(). Calling
this function will throw an Error(32). this function will throw an Error(32).
*/ */
void setIptcData(const IptcData& iptcData); void setIptcData(const IptcData& iptcData);

@ -2093,7 +2093,7 @@ namespace Exiv2 {
if (value.size() != 4 || value.typeId() != xmpText) { if (value.size() != 4 || value.typeId() != xmpText) {
return os << "(" << value << ")"; return os << "(" << value << ")";
} }
return printVersion(os, value.toString()); return printVersion(os, value.toString());
} }

@ -294,7 +294,7 @@ namespace Exiv2 {
//! Print the list of tags for \em %IfdId //! Print the list of tags for \em %IfdId
static void taglist(std::ostream& os, IfdId ifdId); static void taglist(std::ostream& os, IfdId ifdId);
/*! /*!
@brief Return true if \em ifdId is an %Ifd id which is @brief Return true if \em ifdId is an %Ifd id which is
a makernote %Ifd id. Note: Calling this function with a makernote %Ifd id. Note: Calling this function with
makerIfd returns false. makerIfd returns false.
*/ */

@ -80,13 +80,13 @@ namespace Exiv2 {
#ifdef DEBUG #ifdef DEBUG
std::cerr << "Exiv2::TgaImage::readMetadata: Reading TARGA file " << io_->path() << "\n"; std::cerr << "Exiv2::TgaImage::readMetadata: Reading TARGA file " << io_->path() << "\n";
#endif #endif
if (io_->open() != 0) if (io_->open() != 0)
{ {
throw Error(9, io_->path(), strError()); throw Error(9, io_->path(), strError());
} }
IoCloser closer(*io_); IoCloser closer(*io_);
// Ensure that this is the correct image type // Ensure that this is the correct image type
if (!isTgaType(*io_, false)) if (!isTgaType(*io_, false))
{ {
if (io_->error() || io_->eof()) throw Error(14); if (io_->error() || io_->eof()) throw Error(14);
throw Error(3, "TGA"); throw Error(3, "TGA");
@ -134,7 +134,7 @@ namespace Exiv2 {
Image::AutoPtr newTgaInstance(BasicIo::AutoPtr io, bool /*create*/) Image::AutoPtr newTgaInstance(BasicIo::AutoPtr io, bool /*create*/)
{ {
Image::AutoPtr image(new TgaImage(io)); Image::AutoPtr image(new TgaImage(io));
if (!image->good()) if (!image->good())
{ {
image.reset(); image.reset();
} }
@ -153,12 +153,12 @@ namespace Exiv2 {
byte buf[26]; byte buf[26];
long curPos = iIo.tell(); long curPos = iIo.tell();
iIo.seek(-26, BasicIo::end); iIo.seek(-26, BasicIo::end);
if (iIo.error() || iIo.eof()) if (iIo.error() || iIo.eof())
{ {
return false; return false;
} }
iIo.read(buf, sizeof(buf)); iIo.read(buf, sizeof(buf));
if (iIo.error()) if (iIo.error())
{ {
return false; return false;
} }

@ -52,7 +52,7 @@ namespace Exiv2 {
const int tga = 13; //!< Truevision TARGA (tga) image type (see class TgaImage) const int tga = 13; //!< Truevision TARGA (tga) image type (see class TgaImage)
} }
/*! /*!
@brief Class to access raw TARGA images. This is just a stub - we only @brief Class to access raw TARGA images. This is just a stub - we only
read width and height. read width and height.
*/ */

@ -244,7 +244,7 @@ namespace Exiv2 {
type_ = static_cast<uint16_t>(value->typeId()); type_ = static_cast<uint16_t>(value->typeId());
count_ = value->count(); count_ = value->count();
delete pValue_; delete pValue_;
pValue_ = value.release(); pValue_ = value.release();
} // TiffEntryBase::setValue } // TiffEntryBase::setValue
void TiffDataEntry::setStrips(const Value* pSize, void TiffDataEntry::setStrips(const Value* pSize,
@ -322,7 +322,7 @@ namespace Exiv2 {
<< "Directory " << tiffGroupName(group()) << "Directory " << tiffGroupName(group())
<< ", entry 0x" << std::setw(4) << ", entry 0x" << std::setw(4)
<< std::setfill('0') << std::hex << tag() << std::setfill('0') << std::hex << tag()
<< ": Strip " << i << ": Strip " << i
<< " is outside of the data area; ignored.\n"; << " is outside of the data area; ignored.\n";
} }
#endif #endif
@ -780,7 +780,7 @@ namespace Exiv2 {
// No assertion (sizeData may not be available, see above) // No assertion (sizeData may not be available, see above)
// assert(idx == sizeDir + sizeValue + sizeData); // assert(idx == sizeDir + sizeValue + sizeData);
// 4th: Write next-IFD // 4th: Write next-IFD
if (pNext_ && sizeNext) { if (pNext_ && sizeNext) {
idx += pNext_->write(blob, byteOrder, offset + idx, uint32_t(-1), uint32_t(-1), imageIdx); idx += pNext_->write(blob, byteOrder, offset + idx, uint32_t(-1), uint32_t(-1), imageIdx);
} }

@ -672,7 +672,7 @@ namespace Exiv2 {
void TiffHeaderBase::print(std::ostream& os, const std::string& prefix) const void TiffHeaderBase::print(std::ostream& os, const std::string& prefix) const
{ {
os << prefix os << prefix
<< _("TIFF header, offset") << " = 0x" << _("TIFF header, offset") << " = 0x"
<< std::setw(8) << std::setfill('0') << std::hex << std::right << std::setw(8) << std::setfill('0') << std::hex << std::right
<< offset_; << offset_;

@ -261,7 +261,7 @@ namespace Exiv2 {
/*! /*!
@brief Find special encoder function for a key. @brief Find special encoder function for a key.
If the returned pointer is 0, the tag should be encoded with the If the returned pointer is 0, the tag should be encoded with the
encoder function of the TIFF component, else the encoder function encoder function of the TIFF component, else the encoder function
should be used. should be used.

@ -74,7 +74,7 @@ namespace Exiv2 {
bool TiffVisitor::go(GoEvent event) const bool TiffVisitor::go(GoEvent event) const
{ {
assert(event >= 0 && event < events_); assert(event >= 0 && event < events_);
return go_[event]; return go_[event];
} }
void TiffFinder::init(uint16_t tag, uint16_t group) void TiffFinder::init(uint16_t tag, uint16_t group)
@ -862,7 +862,7 @@ namespace Exiv2 {
} }
void TiffEncoder::add( void TiffEncoder::add(
TiffComponent* pRootDir, TiffComponent* pRootDir,
TiffComponent* pSourceDir, TiffComponent* pSourceDir,
TiffCompFactoryFct createFct TiffCompFactoryFct createFct
) )

@ -69,7 +69,7 @@ namespace Exiv2 {
*/ */
class TiffVisitor { class TiffVisitor {
public: public:
//! Events for the stop/go flag. See setGo(). //! Events for the stop/go flag. See setGo().
enum GoEvent { enum GoEvent {
//! Signal to control traversing of the composite tree. //! Signal to control traversing of the composite tree.
geTraverse = 0, geTraverse = 0,
@ -326,7 +326,7 @@ namespace Exiv2 {
composite tree is then traversed and metadata from the image is composite tree is then traversed and metadata from the image is
used to encode each existing component. used to encode each existing component.
For intrusive writing, add() is called, which loops through the For intrusive writing, add() is called, which loops through the
metadata and creates and populates corresponding TiffComponents metadata and creates and populates corresponding TiffComponents
as needed. as needed.
*/ */
@ -383,7 +383,7 @@ namespace Exiv2 {
component. This function is called by the visit methods of the component. This function is called by the visit methods of the
encoder as well as the add() method. encoder as well as the add() method.
If no \em datum is provided, search the metadata based on tag and If no \em datum is provided, search the metadata based on tag and
group of the \em object. This is the case if the function is called group of the \em object. This is the case if the function is called
from a visit method. from a visit method.
@ -440,13 +440,13 @@ namespace Exiv2 {
if necessary and populated using encodeTiffComponent(). The add() function if necessary and populated using encodeTiffComponent(). The add() function
is used during intrusive writing, to create a new TIFF structure. is used during intrusive writing, to create a new TIFF structure.
@note For non-intrusive writing, the encoder is used as a visitor (by @note For non-intrusive writing, the encoder is used as a visitor (by
passing it to the accept() member of a TiffComponent). The composite passing it to the accept() member of a TiffComponent). The composite
tree is then traversed and metadata from the image is used to encode tree is then traversed and metadata from the image is used to encode
each existing component. each existing component.
*/ */
void add( void add(
TiffComponent* pRootDir, TiffComponent* pRootDir,
TiffComponent* pSourceDir, TiffComponent* pSourceDir,
TiffCompFactoryFct createFct TiffCompFactoryFct createFct
); );

@ -392,7 +392,7 @@ namespace Exiv2 {
if (ok) return b ? 1 : 0; if (ok) return b ? 1 : 0;
// everything failed, return from stringTo<long> is probably the best fit // everything failed, return from stringTo<long> is probably the best fit
return ret; return ret;
} }
float parseFloat(const std::string& s, bool& ok) float parseFloat(const std::string& s, bool& ok)

@ -329,7 +329,7 @@ namespace Exiv2 {
const char* exvGettext(const char* str); const char* exvGettext(const char* str);
/*! /*!
@brief Return a \em long set to the value represented by \em s. @brief Return a \em long set to the value represented by \em s.
Besides strings that represent \em long values, the function also Besides strings that represent \em long values, the function also
handles \em float, \em Rational and boolean handles \em float, \em Rational and boolean
@ -343,7 +343,7 @@ namespace Exiv2 {
long parseLong(const std::string& s, bool& ok); long parseLong(const std::string& s, bool& ok);
/*! /*!
@brief Return a \em float set to the value represented by \em s. @brief Return a \em float set to the value represented by \em s.
Besides strings that represent \em float values, the function also Besides strings that represent \em float values, the function also
handles \em long, \em Rational and boolean handles \em long, \em Rational and boolean
@ -355,9 +355,9 @@ namespace Exiv2 {
to \c true if the conversion was successful or \c false if not. to \c true if the conversion was successful or \c false if not.
*/ */
float parseFloat(const std::string& s, bool& ok); float parseFloat(const std::string& s, bool& ok);
/*! /*!
@brief Return a \em Rational set to the value represented by \em s. @brief Return a \em Rational set to the value represented by \em s.
Besides strings that represent \em Rational values, the function also Besides strings that represent \em Rational values, the function also
handles \em long, \em float and boolean handles \em long, \em float and boolean
@ -456,7 +456,7 @@ namespace Exiv2 {
@param s String to convert @param s String to convert
@param ok Output variable indicating the success of the operation. @param ok Output variable indicating the success of the operation.
@return Returns the converted value and sets \em ok to \c true if the @return Returns the converted value and sets \em ok to \c true if the
conversion was successful or \c false if not. conversion was successful or \c false if not.
*/ */
template<typename T> template<typename T>
@ -475,7 +475,7 @@ namespace Exiv2 {
@brief Specialization of stringTo(const std::string& s, bool& ok) for \em bool. @brief Specialization of stringTo(const std::string& s, bool& ok) for \em bool.
Handles the same string values as the XMP SDK. Converts the string to lowercase Handles the same string values as the XMP SDK. Converts the string to lowercase
and returns \c true if it is "true", "t" or "1", and \c false if it is and returns \c true if it is "true", "t" or "1", and \c false if it is
"false", "f" or "0". "false", "f" or "0".
*/ */
template<> template<>

@ -619,10 +619,10 @@ namespace Exiv2 {
return os; return os;
} }
std::string XmpArrayValue::toString(long n) const std::string XmpArrayValue::toString(long n) const
{ {
ok_ = true; ok_ = true;
return value_[n]; return value_[n];
} }
long XmpArrayValue::toLong(long n) const long XmpArrayValue::toLong(long n) const
@ -701,12 +701,12 @@ namespace Exiv2 {
return os; return os;
} }
std::string LangAltValue::toString(long /*n*/) const std::string LangAltValue::toString(long /*n*/) const
{ {
return toString("x-default"); return toString("x-default");
} }
std::string LangAltValue::toString(const std::string& qualifier) const std::string LangAltValue::toString(const std::string& qualifier) const
{ {
ValueType::const_iterator i = value_.find(qualifier); ValueType::const_iterator i = value_.find(qualifier);
if (i != value_.end()) { if (i != value_.end()) {
@ -740,11 +740,11 @@ namespace Exiv2 {
return new LangAltValue(*this); return new LangAltValue(*this);
} }
DateValue::DateValue() DateValue::DateValue()
: Value(date) : Value(date)
{ {
} }
DateValue::DateValue(int year, int month, int day) DateValue::DateValue(int year, int month, int day)
: Value(date) : Value(date)
{ {
@ -846,7 +846,7 @@ namespace Exiv2 {
return l; return l;
} }
TimeValue::TimeValue() TimeValue::TimeValue()
: Value(time) : Value(time)
{ {
} }

@ -336,7 +336,7 @@ namespace Exiv2 {
//! Type used to store the data. //! Type used to store the data.
typedef std::vector<byte> ValueType; typedef std::vector<byte> ValueType;
// DATA // DATA
ValueType value_; //!< Stores the data value ValueType value_; //!< Stores the data value
}; // class DataValue }; // class DataValue
@ -677,7 +677,7 @@ namespace Exiv2 {
//@} //@}
/*! /*!
@brief Return XMP array type for an array Value TypeId, xaNone if @brief Return XMP array type for an array Value TypeId, xaNone if
\em typeId is not an XMP array value type. \em typeId is not an XMP array value type.
*/ */
static XmpArrayType xmpArrayType(TypeId typeId); static XmpArrayType xmpArrayType(TypeId typeId);
@ -697,7 +697,7 @@ namespace Exiv2 {
}; // class XmpValue }; // class XmpValue
/*! /*!
@brief %Value type suitable for simple XMP properties and @brief %Value type suitable for simple XMP properties and
XMP nodes of complex types which are not parsed into XMP nodes of complex types which are not parsed into
specific values. specific values.
@ -722,7 +722,7 @@ namespace Exiv2 {
/*! /*!
@brief Read a simple property value from \em buf to set the value. @brief Read a simple property value from \em buf to set the value.
Sets the value to the contents of \em buf. A optional keyword, Sets the value to the contents of \em buf. A optional keyword,
\em type is supported to set the XMP value type. This is useful for \em type is supported to set the XMP value type. This is useful for
complex value types for which Exiv2 does not have direct support. complex value types for which Exiv2 does not have direct support.
@ -778,8 +778,8 @@ namespace Exiv2 {
/*! /*!
@brief %Value type for simple arrays. Each item in the array is a simple @brief %Value type for simple arrays. Each item in the array is a simple
value, without qualifiers. The array may be an ordered (\em seq), value, without qualifiers. The array may be an ordered (\em seq),
unordered (\em bag) or alternative array (\em alt). The array unordered (\em bag) or alternative array (\em alt). The array
items must not contain qualifiers. For language alternatives use items must not contain qualifiers. For language alternatives use
LangAltValue. LangAltValue.
@ -800,11 +800,11 @@ namespace Exiv2 {
//@{ //@{
using XmpValue::read; using XmpValue::read;
/*! /*!
@brief Read a simple property value from \em buf and append it @brief Read a simple property value from \em buf and append it
to the value. to the value.
Appends \em buf to the value after the last existing array element. Appends \em buf to the value after the last existing array element.
Subsequent calls will therefore populate multiple array elements in Subsequent calls will therefore populate multiple array elements in
the order they are read. the order they are read.
@return 0 if successful. @return 0 if successful.
@ -847,7 +847,7 @@ namespace Exiv2 {
}; // class XmpArrayValue }; // class XmpArrayValue
/*! /*!
@brief %Value type for XMP language alternative properties. @brief %Value type for XMP language alternative properties.
A language alternative is an array consisting of simple text values, A language alternative is an array consisting of simple text values,
each of which has a language qualifier. each of which has a language qualifier.
@ -869,18 +869,18 @@ namespace Exiv2 {
//@{ //@{
using XmpValue::read; using XmpValue::read;
/*! /*!
@brief Read a simple property value from \em buf and append it @brief Read a simple property value from \em buf and append it
to the value. to the value.
Appends \em buf to the value after the last existing array element. Appends \em buf to the value after the last existing array element.
Subsequent calls will therefore populate multiple array elements in Subsequent calls will therefore populate multiple array elements in
the order they are read. the order they are read.
The format of \em buf is: The format of \em buf is:
<BR> <BR>
<CODE>[lang=["]language code["] ]text</CODE> <CODE>[lang=["]language code["] ]text</CODE>
<BR> <BR>
The XMP default language code <CODE>x-default</CODE> is used if The XMP default language code <CODE>x-default</CODE> is used if
\em buf doesn't start with the keyword <CODE>lang</CODE>. \em buf doesn't start with the keyword <CODE>lang</CODE>.
@return 0 if successful. @return 0 if successful.
@ -930,7 +930,7 @@ namespace Exiv2 {
@brief Map to store the language alternative values. The language @brief Map to store the language alternative values. The language
qualifier is used as the key for the map entries. qualifier is used as the key for the map entries.
*/ */
ValueType value_; ValueType value_;
}; // class LangAltValue }; // class LangAltValue

@ -51,7 +51,7 @@
#define EXIV2_MAKE_VERSION(major,minor,patch) \ #define EXIV2_MAKE_VERSION(major,minor,patch) \
(((major) << 16) | ((minor) << 8) | (patch)) (((major) << 16) | ((minor) << 8) | (patch))
/*! /*!
@brief The %Exiv2 version number of the library used at compile-time as @brief The %Exiv2 version number of the library used at compile-time as
an integer number for easy comparison. an integer number for easy comparison.
*/ */
#define EXIV2_VERSION \ #define EXIV2_VERSION \
@ -59,7 +59,7 @@
/*! /*!
@brief Deprecated version check macro. Do not use. @brief Deprecated version check macro. Do not use.
This macro has flaws and only remains for backward compatibility. This macro has flaws and only remains for backward compatibility.
Use EXIV2_TEST_VERSION and testVersion() instead. Use EXIV2_TEST_VERSION and testVersion() instead.
*/ */
#define EXIV2_CHECK_VERSION(major,minor,patch) \ #define EXIV2_CHECK_VERSION(major,minor,patch) \
@ -75,9 +75,9 @@
// <exiv2/types.hpp>. Early Exiv2 versions didn't have version.hpp and the macros. // <exiv2/types.hpp>. Early Exiv2 versions didn't have version.hpp and the macros.
#include <exiv2/types.hpp> #include <exiv2/types.hpp>
// Make sure an EXIV2_TEST_VERSION macro exists: // Make sure an EXIV2_TEST_VERSION macro exists:
#ifdef EXIV2_VERSION #ifdef EXIV2_VERSION
# ifndef EXIV2_TEST_VERSION # ifndef EXIV2_TEST_VERSION
# define EXIV2_TEST_VERSION(major,minor,patch) \ # define EXIV2_TEST_VERSION(major,minor,patch) \
@ -86,14 +86,14 @@
#else #else
# define EXIV2_TEST_VERSION(major,minor,patch) (false) # define EXIV2_TEST_VERSION(major,minor,patch) (false)
#endif #endif
std::cout << "Compiled with Exiv2 version " << EXV_PACKAGE_VERSION << "\n" std::cout << "Compiled with Exiv2 version " << EXV_PACKAGE_VERSION << "\n"
<< "Runtime Exiv2 version is " << Exiv2::version() << "\n"; << "Runtime Exiv2 version is " << Exiv2::version() << "\n";
// Test the Exiv2 version available at runtime but compile the if-clause only if // Test the Exiv2 version available at runtime but compile the if-clause only if
// the compile-time version is at least 0.15. Earlier versions didn't have a // the compile-time version is at least 0.15. Earlier versions didn't have a
// testVersion() function: // testVersion() function:
#if EXIV2_TEST_VERSION(0,15,0) #if EXIV2_TEST_VERSION(0,15,0)
if (Exiv2::testVersion(0,13,0)) { if (Exiv2::testVersion(0,13,0)) {
std::cout << "Available Exiv2 version is equal to or greater than 0.13\n"; std::cout << "Available Exiv2 version is equal to or greater than 0.13\n";
@ -121,19 +121,19 @@ namespace Exiv2 {
*/ */
const char* version(); const char* version();
/*! /*!
@brief Test the version of the available %Exiv2 library at runtime. Return @brief Test the version of the available %Exiv2 library at runtime. Return
true if it is the same as or newer than the passed-in version. true if it is the same as or newer than the passed-in version.
Versions are denoted using a triplet of integers: \em major.minor.patch . Versions are denoted using a triplet of integers: \em major.minor.patch .
@code @code
// Don't include the <exiv2/version.hpp> file directly, it is included by // Don't include the <exiv2/version.hpp> file directly, it is included by
// <exiv2/types.hpp>. Early Exiv2 versions didn't have version.hpp and the macros. // <exiv2/types.hpp>. Early Exiv2 versions didn't have version.hpp and the macros.
#include <exiv2/types.hpp> #include <exiv2/types.hpp>
// Make sure an EXIV2_TEST_VERSION macro exists: // Make sure an EXIV2_TEST_VERSION macro exists:
#ifdef EXIV2_VERSION #ifdef EXIV2_VERSION
# ifndef EXIV2_TEST_VERSION # ifndef EXIV2_TEST_VERSION
# define EXIV2_TEST_VERSION(major,minor,patch) \ # define EXIV2_TEST_VERSION(major,minor,patch) \
@ -142,10 +142,10 @@ namespace Exiv2 {
#else #else
# define EXIV2_TEST_VERSION(major,minor,patch) (false) # define EXIV2_TEST_VERSION(major,minor,patch) (false)
#endif #endif
std::cout << "Compiled with Exiv2 version " << EXV_PACKAGE_VERSION << "\n" std::cout << "Compiled with Exiv2 version " << EXV_PACKAGE_VERSION << "\n"
<< "Runtime Exiv2 version is " << Exiv2::version() << "\n"; << "Runtime Exiv2 version is " << Exiv2::version() << "\n";
// Test the Exiv2 version available at runtime but compile the if-clause only if // Test the Exiv2 version available at runtime but compile the if-clause only if
// the compile-time version is at least 0.15. Earlier versions didn't have a // the compile-time version is at least 0.15. Earlier versions didn't have a
// testVersion() function: // testVersion() function:

@ -165,7 +165,7 @@ namespace Exiv2 {
std::string Xmpdatum::key() const std::string Xmpdatum::key() const
{ {
return p_->key_.get() == 0 ? "" : p_->key_->key(); return p_->key_.get() == 0 ? "" : p_->key_->key();
} }
std::string Xmpdatum::groupName() const std::string Xmpdatum::groupName() const
@ -225,7 +225,7 @@ namespace Exiv2 {
float Xmpdatum::toFloat(long n) const float Xmpdatum::toFloat(long n) const
{ {
return p_->value_.get() == 0 ? -1 : p_->value_->toFloat(n); return p_->value_.get() == 0 ? -1 : p_->value_->toFloat(n);
} }
Rational Xmpdatum::toRational(long n) const Rational Xmpdatum::toRational(long n) const
@ -235,7 +235,7 @@ namespace Exiv2 {
Value::AutoPtr Xmpdatum::getValue() const Value::AutoPtr Xmpdatum::getValue() const
{ {
return p_->value_.get() == 0 ? Value::AutoPtr(0) : p_->value_->clone(); return p_->value_.get() == 0 ? Value::AutoPtr(0) : p_->value_->clone();
} }
const Value& Xmpdatum::value() const const Value& Xmpdatum::value() const
@ -329,17 +329,17 @@ namespace Exiv2 {
std::sort(xmpMetadata_.begin(), xmpMetadata_.end(), cmpMetadataByKey); std::sort(xmpMetadata_.begin(), xmpMetadata_.end(), cmpMetadataByKey);
} }
XmpData::const_iterator XmpData::begin() const XmpData::const_iterator XmpData::begin() const
{ {
return xmpMetadata_.begin(); return xmpMetadata_.begin();
} }
XmpData::const_iterator XmpData::end() const XmpData::const_iterator XmpData::end() const
{ {
return xmpMetadata_.end(); return xmpMetadata_.end();
} }
bool XmpData::empty() const bool XmpData::empty() const
{ {
return count() == 0; return count() == 0;
} }
@ -390,7 +390,7 @@ namespace Exiv2 {
} }
#ifdef EXV_HAVE_XMP_TOOLKIT #ifdef EXV_HAVE_XMP_TOOLKIT
bool XmpParser::registerNs(const std::string& ns, bool XmpParser::registerNs(const std::string& ns,
const std::string& prefix) const std::string& prefix)
{ {
try { try {
@ -402,7 +402,7 @@ namespace Exiv2 {
} }
} // XmpParser::registerNs } // XmpParser::registerNs
#else #else
bool XmpParser::registerNs(const std::string& /*ns*/, bool XmpParser::registerNs(const std::string& /*ns*/,
const std::string& /*prefix*/) const std::string& /*prefix*/)
{ {
initialize(); initialize();
@ -450,7 +450,7 @@ namespace Exiv2 {
continue; continue;
} }
if (XMP_NodeIsSchema(opt)) { if (XMP_NodeIsSchema(opt)) {
// Register unknown namespaces with Exiv2 // Register unknown namespaces with Exiv2
// (Namespaces are automatically registered with the XMP Toolkit) // (Namespaces are automatically registered with the XMP Toolkit)
if (XmpProperties::prefix(schemaNs).empty()) { if (XmpProperties::prefix(schemaNs).empty()) {
std::string prefix; std::string prefix;

@ -110,7 +110,7 @@ namespace Exiv2 {
@brief Set the value to the string \em value. Uses Value::read(const @brief Set the value to the string \em value. Uses Value::read(const
std::string&). If the %Xmpdatum does not have a Value yet, std::string&). If the %Xmpdatum does not have a Value yet,
then a %Value of the correct type for this %Xmpdatum is then a %Value of the correct type for this %Xmpdatum is
created. If the key is unknown, a XmpTextValue is used as created. If the key is unknown, a XmpTextValue is used as
default. default.
*/ */
void setValue(const std::string& value); void setValue(const std::string& value);
@ -303,7 +303,7 @@ namespace Exiv2 {
/*! /*!
@brief Initialize the XMP Toolkit. @brief Initialize the XMP Toolkit.
Calling this method is usually not needed, as encode() and Calling this method is usually not needed, as encode() and
decode() will initialize the XMP Toolkit if necessary. decode() will initialize the XMP Toolkit if necessary.
@return True if the initialization was successful, else false. @return True if the initialization was successful, else false.

Loading…
Cancel
Save