Supported MakerNote byte order and invalidTypeId

v0.27.3
Andreas Huggel 22 years ago
parent f5f515363e
commit 8a776d2f44

@ -20,14 +20,14 @@
*/
/*
File: exif.cpp
Version: $Name: $ $Revision: 1.28 $
Version: $Name: $ $Revision: 1.29 $
Author(s): Andreas Huggel (ahu) <ahuggel@gmx.net>
History: 26-Jan-04, ahu: created
11-Feb-04, ahu: isolated as a component
*/
// *****************************************************************************
#include "rcsid.hpp"
EXIV2_RCSID("@(#) $Name: $ $Revision: 1.28 $ $RCSfile: exif.cpp,v $")
EXIV2_RCSID("@(#) $Name: $ $Revision: 1.29 $ $RCSfile: exif.cpp,v $")
// *****************************************************************************
// included header files
@ -573,7 +573,7 @@ namespace Exif {
add(ifd0_.begin(), ifd0_.end(), byteOrder());
add(exifIfd_.begin(), exifIfd_.end(), byteOrder());
if (makerNote_) {
add(makerNote_->begin(), makerNote_->end(), byteOrder());
add(makerNote_->begin(), makerNote_->end(), makerNote_->byteOrder());
}
add(iopIfd_.begin(), iopIfd_.end(), byteOrder());
add(gpsIfd_.begin(), gpsIfd_.end(), byteOrder());
@ -641,7 +641,7 @@ std::cerr << "->>>>>> writing from metadata <<<<<<-\n";
if (makerNote_) {
// Build MakerNote from metadata
makerNote = makerNote_->clone();
addToMakerNote(makerNote, begin(), end(), byteOrder());
addToMakerNote(makerNote, begin(), end(), makerNote_->byteOrder());
// Create a placeholder MakerNote entry of the correct size and
// add it to the Exif IFD (because we don't know the offset yet)
Entry e;
@ -817,20 +817,23 @@ std::cerr << "->>>>>> writing from metadata <<<<<<-\n";
if (!this->compatible()) return false;
bool compatible = true;
compatible |= updateRange(ifd0_.begin(), ifd0_.end());
compatible |= updateRange(exifIfd_.begin(), exifIfd_.end());
compatible |= updateRange(ifd0_.begin(), ifd0_.end(), byteOrder());
compatible |= updateRange(exifIfd_.begin(), exifIfd_.end(), byteOrder());
if (makerNote_) {
compatible |= updateRange(makerNote_->begin(), makerNote_->end());
compatible |= updateRange(makerNote_->begin(),
makerNote_->end(),
makerNote_->byteOrder());
}
compatible |= updateRange(iopIfd_.begin(), iopIfd_.end());
compatible |= updateRange(gpsIfd_.begin(), gpsIfd_.end());
compatible |= updateRange(ifd1_.begin(), ifd1_.end());
compatible |= updateRange(iopIfd_.begin(), iopIfd_.end(), byteOrder());
compatible |= updateRange(gpsIfd_.begin(), gpsIfd_.end(), byteOrder());
compatible |= updateRange(ifd1_.begin(), ifd1_.end(), byteOrder());
return compatible;
} // ExifData::updateEntries
bool ExifData::updateRange(const Entries::iterator& begin,
const Entries::iterator& end)
const Entries::iterator& end,
ByteOrder byteOrder)
{
bool compatible = true;
for (Entries::iterator entry = begin; entry != end; ++entry) {
@ -850,7 +853,7 @@ std::cerr << "->>>>>> writing from metadata <<<<<<-\n";
}
else {
char* buf = new char[md->size()];
md->copy(buf, byteOrder());
md->copy(buf, byteOrder);
entry->setValue(md->typeId(), md->count(), buf, md->size());
delete[] buf;
}

@ -21,7 +21,7 @@
/*!
@file exif.hpp
@brief Encoding and decoding of %Exif data
@version $Name: $ $Revision: 1.28 $
@version $Name: $ $Revision: 1.29 $
@author Andreas Huggel (ahu)
<a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a>
@date 09-Jan-04, ahu: created
@ -138,7 +138,8 @@ namespace Exif {
//! Return the tag
uint16 tag() const { return tag_; }
//! Return the type id of the value
TypeId typeId() const { return value_ == 0 ? invalid : value_->typeId(); }
TypeId typeId() const
{ return value_ == 0 ? invalidTypeId : value_->typeId(); }
//! Return the name of the type
const char* typeName() const { return TypeInfo::typeName(typeId()); }
//! Return the size in bytes of one component of this type
@ -627,7 +628,8 @@ namespace Exif {
(if any).
*/
bool updateRange(const Entries::iterator& begin,
const Entries::iterator& end);
const Entries::iterator& end,
ByteOrder byteOrder);
/*!
@brief Write Exif data to a data buffer the hard way, return number of
bytes written.

Loading…
Cancel
Save