Use size_t for the offset.

This commit is contained in:
Kevin Backhouse 2022-07-27 17:26:18 -04:00
parent dc4ae73013
commit 30debd2635
No known key found for this signature in database
GPG Key ID: 9DD01852EE40366E
2 changed files with 76 additions and 73 deletions

View File

@ -5,6 +5,7 @@
#include "enforce.hpp"
#include "error.hpp"
#include "makernote_int.hpp"
#include "safe_op.hpp"
#include "sonymn_int.hpp"
#include "tiffcomposite_int.hpp"
#include "tiffimage_int.hpp"
@ -49,8 +50,8 @@ int IoWrapper::putb(byte data) {
return io_.putb(data);
}
void IoWrapper::setTarget(int id, int64_t target) {
if (target < 0 || target > std::numeric_limits<uint32_t>::max()) {
void IoWrapper::setTarget(int id, size_t target) {
if (target > std::numeric_limits<uint32_t>::max()) {
throw Error(ErrorCode::kerOffsetOutOfRange);
}
if (pow_)
@ -270,24 +271,24 @@ void TiffDataEntry::setStrips(const Value* pSize, const byte* pData, size_t size
#endif
return;
}
uint32_t size = 0;
size_t size = 0;
for (size_t i = 0; i < pSize->count(); ++i) {
size += pSize->toUint32(i);
size = Safe::add<size_t>(size, pSize->toUint32(i));
}
auto offset = pValue()->toUint32(0);
// Todo: Remove limitation of JPEG writer: strips must be contiguous
// Until then we check: last offset + last size - first offset == size?
if (pValue()->toUint32(pValue()->count() - 1) + pSize->toUint32(pSize->count() - 1) - offset != size) {
#ifndef SUPPRESS_WARNINGS
EXV_WARNING << "Directory " << groupName(group()) << ", entry 0x" << std::setw(4) << std::setfill('0') << std::hex
<< tag() << ": Data area is not contiguous, ignoring it.\n";
#endif
return;
}
if (offset > sizeData || size > sizeData || baseOffset + offset > sizeData - size) {
const size_t offset = pValue()->toUint32(0);
if (size > sizeData || offset > sizeData - size || baseOffset > sizeData - size - offset) {
#ifndef SUPPRESS_WARNINGS
EXV_WARNING << "Directory " << groupName(group()) << ", entry 0x" << std::setw(4) << std::setfill('0') << std::hex
<< tag() << ": Data area exceeds data buffer, ignoring it.\n";
#endif
return;
}
// Todo: Remove limitation of JPEG writer: strips must be contiguous
// Until then we check: last offset + last size - first offset == size?
if (pValue()->toUint32(pValue()->count() - 1) + pSize->toUint32(pSize->count() - 1) != size + offset) {
#ifndef SUPPRESS_WARNINGS
EXV_WARNING << "Directory " << groupName(group()) << ", entry 0x" << std::setw(4) << std::setfill('0') << std::hex
<< tag() << ": Data area is not contiguous, ignoring it.\n";
#endif
return;
}
@ -313,11 +314,11 @@ void TiffImageEntry::setStrips(const Value* pSize, const byte* pData, size_t siz
return;
}
for (size_t i = 0; i < pValue()->count(); ++i) {
const auto offset = pValue()->toUint32(i);
const size_t offset = pValue()->toUint32(i);
const byte* pStrip = pData + baseOffset + offset;
const auto size = pSize->toUint32(i);
const size_t size = pSize->toUint32(i);
if (offset > sizeData || size > sizeData || baseOffset + offset > sizeData - size) {
if (size > sizeData || offset > sizeData - size || baseOffset > sizeData - size - offset) {
#ifndef SUPPRESS_WARNINGS
EXV_WARNING << "Directory " << groupName(group()) << ", entry 0x" << std::setw(4) << std::setfill('0') << std::hex
<< tag() << ": Strip " << std::dec << i << " is outside of the data area; ignored.\n";
@ -817,12 +818,12 @@ size_t TiffBinaryElement::doCount() const {
return elDef_.count_;
}
uint32_t TiffComponent::write(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t valueIdx,
uint32_t TiffComponent::write(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t valueIdx,
uint32_t dataIdx, uint32_t& imageIdx) {
return doWrite(ioWrapper, byteOrder, offset, valueIdx, dataIdx, imageIdx);
} // TiffComponent::write
uint32_t TiffDirectory::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t valueIdx,
uint32_t TiffDirectory::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t valueIdx,
uint32_t dataIdx, uint32_t& imageIdx) {
bool isRootDir = (imageIdx == static_cast<uint32_t>(-1));
@ -946,7 +947,7 @@ uint32_t TiffDirectory::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int64
return static_cast<uint32_t>(idx);
}
uint32_t TiffDirectory::writeDirEntry(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset,
uint32_t TiffDirectory::writeDirEntry(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset,
TiffComponent* pTiffComponent, uint32_t valueIdx, uint32_t dataIdx,
uint32_t& imageIdx) {
auto pDirEntry = dynamic_cast<TiffEntryBase*>(pTiffComponent);
@ -956,8 +957,8 @@ uint32_t TiffDirectory::writeDirEntry(IoWrapper& ioWrapper, ByteOrder byteOrder,
ul2Data(buf + 4, static_cast<uint32_t>(pDirEntry->count()), byteOrder);
ioWrapper.write(buf, 8);
if (pDirEntry->size() > 4) {
pDirEntry->setOffset(offset + static_cast<int32_t>(valueIdx));
l2Data(buf, static_cast<uint32_t>(pDirEntry->offset()), byteOrder);
pDirEntry->setOffset(Safe::add<size_t>(offset, valueIdx));
l2Data(buf, pDirEntry->offset(), byteOrder);
ioWrapper.write(buf, 4);
} else {
const uint32_t len = pDirEntry->write(ioWrapper, byteOrder, offset, valueIdx, dataIdx, imageIdx);
@ -974,7 +975,7 @@ uint32_t TiffDirectory::writeDirEntry(IoWrapper& ioWrapper, ByteOrder byteOrder,
return 12;
} // TiffDirectory::writeDirEntry
uint32_t TiffEntryBase::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t /*offset*/, uint32_t /*valueIdx*/,
uint32_t TiffEntryBase::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t /*offset*/, uint32_t /*valueIdx*/,
uint32_t /*dataIdx*/, uint32_t& /*imageIdx*/) {
if (!pValue_ || pValue_->size() == 0)
return 0;
@ -985,14 +986,14 @@ uint32_t TiffEntryBase::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int64
return static_cast<uint32_t>(buf.size());
} // TiffEntryBase::doWrite
uint32_t TiffEntryBase::writeOffset(byte* buf, int64_t offset, TiffType tiffType, ByteOrder byteOrder) {
uint32_t TiffEntryBase::writeOffset(byte* buf, size_t offset, TiffType tiffType, ByteOrder byteOrder) {
uint32_t rc = 0;
switch (tiffType) {
case ttUnsignedShort:
case ttSignedShort:
if (static_cast<uint32_t>(offset) > 0xffff)
if (offset > std::numeric_limits<uint16_t>::max())
throw Error(ErrorCode::kerOffsetOutOfRange);
rc = s2Data(buf, static_cast<int16_t>(offset), byteOrder);
rc = us2Data(buf, static_cast<uint16_t>(offset), byteOrder);
break;
case ttUnsignedLong:
case ttSignedLong:
@ -1005,23 +1006,25 @@ uint32_t TiffEntryBase::writeOffset(byte* buf, int64_t offset, TiffType tiffType
return rc;
} // TiffEntryBase::writeOffset
uint32_t TiffDataEntry::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t /*valueIdx*/,
uint32_t TiffDataEntry::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t /*valueIdx*/,
uint32_t dataIdx, uint32_t& /*imageIdx*/) {
if (!pValue() || pValue()->count() == 0)
return 0;
DataBuf buf(pValue()->size());
uint32_t idx = 0;
const auto prevOffset = pValue()->toInt64(0);
for (uint32_t i = 0; i < count(); ++i) {
const int64_t newDataIdx = pValue()->toInt64(i) - prevOffset + static_cast<int64_t>(dataIdx);
idx += writeOffset(buf.data(idx), offset + newDataIdx, tiffType(), byteOrder);
const size_t prevOffset = pValue()->toUint32(0);
for (size_t i = 0; i < count(); ++i) {
const size_t iOffset = pValue()->toUint32(i);
enforce(prevOffset <= iOffset, ErrorCode::kerOffsetOutOfRange);
const auto newDataIdx = Safe::add<size_t>(iOffset - prevOffset, dataIdx);
idx += writeOffset(buf.data(idx), Safe::add(offset, newDataIdx), tiffType(), byteOrder);
}
ioWrapper.write(buf.c_data(), buf.size());
return static_cast<uint32_t>(buf.size());
}
uint32_t TiffImageEntry::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t /*valueIdx*/,
uint32_t TiffImageEntry::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t /*valueIdx*/,
uint32_t dataIdx, uint32_t& imageIdx) {
uint32_t o2 = imageIdx;
// For makernotes, write TIFF image data to the data area
@ -1046,7 +1049,7 @@ uint32_t TiffImageEntry::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int6
return static_cast<uint32_t>(buf.size());
} // TiffImageEntry::doWrite
uint32_t TiffSubIfd::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t /*valueIdx*/,
uint32_t TiffSubIfd::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t /*valueIdx*/,
uint32_t dataIdx, uint32_t& /*imageIdx*/) {
DataBuf buf(ifds_.size() * 4);
uint32_t idx = 0;
@ -1060,7 +1063,7 @@ uint32_t TiffSubIfd::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t
return static_cast<uint32_t>(buf.size());
} // TiffSubIfd::doWrite
uint32_t TiffMnEntry::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t valueIdx,
uint32_t TiffMnEntry::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t valueIdx,
uint32_t dataIdx, uint32_t& imageIdx) {
if (!mn_) {
return TiffEntryBase::doWrite(ioWrapper, byteOrder, offset, valueIdx, dataIdx, imageIdx);
@ -1069,7 +1072,7 @@ uint32_t TiffMnEntry::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t
imageIdx);
} // TiffMnEntry::doWrite
uint32_t TiffIfdMakernote::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t /*valueIdx*/,
uint32_t TiffIfdMakernote::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t /*valueIdx*/,
uint32_t /*dataIdx*/, uint32_t& imageIdx) {
mnOffset_ = static_cast<uint32_t>(offset);
setImageByteOrder(byteOrder);
@ -1079,7 +1082,7 @@ uint32_t TiffIfdMakernote::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, in
return len;
} // TiffIfdMakernote::doWrite
uint32_t TiffBinaryArray::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t valueIdx,
uint32_t TiffBinaryArray::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t valueIdx,
uint32_t dataIdx, uint32_t& imageIdx) {
if (!cfg() || !decoded())
return TiffEntryBase::doWrite(ioWrapper, byteOrder, offset, valueIdx, dataIdx, imageIdx);
@ -1138,8 +1141,8 @@ uint32_t TiffBinaryArray::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int
return idx;
} // TiffBinaryArray::doWrite
uint32_t TiffBinaryElement::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t /*offset*/,
uint32_t /*valueIdx*/, uint32_t /*dataIdx*/, uint32_t& /*imageIdx*/) {
uint32_t TiffBinaryElement::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t /*offset*/, uint32_t /*valueIdx*/,
uint32_t /*dataIdx*/, uint32_t& /*imageIdx*/) {
auto pv = pValue();
if (!pv || pv->count() == 0)
return 0;
@ -1149,12 +1152,12 @@ uint32_t TiffBinaryElement::doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, i
return static_cast<uint32_t>(buf.size());
} // TiffBinaryElement::doWrite
uint32_t TiffComponent::writeData(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t dataIdx,
uint32_t TiffComponent::writeData(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t dataIdx,
uint32_t& imageIdx) const {
return doWriteData(ioWrapper, byteOrder, offset, dataIdx, imageIdx);
} // TiffComponent::writeData
uint32_t TiffDirectory::doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t dataIdx,
uint32_t TiffDirectory::doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t dataIdx,
uint32_t& imageIdx) const {
uint32_t len = 0;
for (auto&& component : components_) {
@ -1163,13 +1166,13 @@ uint32_t TiffDirectory::doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, i
return len;
} // TiffDirectory::doWriteData
uint32_t TiffEntryBase::doWriteData(IoWrapper& /*ioWrapper*/, ByteOrder /*byteOrder*/, int64_t /*offset*/,
uint32_t TiffEntryBase::doWriteData(IoWrapper& /*ioWrapper*/, ByteOrder /*byteOrder*/, size_t /*offset*/,
uint32_t /*dataIdx*/, uint32_t& /*imageIdx*/) const {
return 0;
} // TiffEntryBase::doWriteData
uint32_t TiffImageEntry::doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t /*offset*/,
uint32_t /*dataIdx*/, uint32_t& /*imageIdx*/) const {
uint32_t TiffImageEntry::doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t /*offset*/, uint32_t /*dataIdx*/,
uint32_t& /*imageIdx*/) const {
uint32_t len = 0;
// For makernotes, write TIFF image data to the data area
if (group() > IfdId::mnId) { // Todo: FIX THIS HACK!!!
@ -1178,7 +1181,7 @@ uint32_t TiffImageEntry::doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder,
return len;
} // TiffImageEntry::doWriteData
uint32_t TiffDataEntry::doWriteData(IoWrapper& ioWrapper, ByteOrder /*byteOrder*/, int64_t /*offset*/,
uint32_t TiffDataEntry::doWriteData(IoWrapper& ioWrapper, ByteOrder /*byteOrder*/, size_t /*offset*/,
uint32_t /*dataIdx*/, uint32_t& /*imageIdx*/) const {
if (!pValue())
return 0;
@ -1194,7 +1197,7 @@ uint32_t TiffDataEntry::doWriteData(IoWrapper& ioWrapper, ByteOrder /*byteOrder*
return static_cast<uint32_t>(buf.size() + align);
} // TiffDataEntry::doWriteData
uint32_t TiffSubIfd::doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t dataIdx,
uint32_t TiffSubIfd::doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t dataIdx,
uint32_t& imageIdx) const {
uint32_t len = 0;
for (auto&& ifd : ifds_) {
@ -1209,7 +1212,7 @@ uint32_t TiffSubIfd::doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, int6
return len + align;
} // TiffSubIfd::doWriteData
uint32_t TiffIfdMakernote::doWriteData(IoWrapper& /*ioWrapper*/, ByteOrder /*byteOrder*/, int64_t /*offset*/,
uint32_t TiffIfdMakernote::doWriteData(IoWrapper& /*ioWrapper*/, ByteOrder /*byteOrder*/, size_t /*offset*/,
uint32_t /*dataIdx*/, uint32_t& /*imageIdx*/) const {
return 0;
}

View File

@ -129,7 +129,7 @@ class IoWrapper {
*/
int putb(byte data);
//! Wrapper for OffsetWriter::setTarget(), using an int instead of the enum to reduce include deps
void setTarget(int id, int64_t target);
void setTarget(int id, size_t target);
//@}
private:
@ -221,7 +221,7 @@ class TiffComponent {
nested components.
@throw Error If the component cannot be written.
*/
uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t valueIdx, uint32_t dataIdx,
uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t valueIdx, uint32_t dataIdx,
uint32_t& imageIdx);
//@}
@ -250,7 +250,7 @@ class TiffComponent {
Return the number of bytes written. Components derived from
TiffEntryBase implement this method if needed.
*/
uint32_t writeData(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t dataIdx,
uint32_t writeData(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t dataIdx,
uint32_t& imageIdx) const;
/*!
@brief Write the image data of this component to a binary image.
@ -302,7 +302,7 @@ class TiffComponent {
//! Implements accept().
virtual void doAccept(TiffVisitor& visitor) = 0;
//! Implements write().
virtual uint32_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t valueIdx,
virtual uint32_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t valueIdx,
uint32_t dataIdx, uint32_t& imageIdx) = 0;
//@}
@ -311,7 +311,7 @@ class TiffComponent {
//! Internal virtual copy constructor, implements clone().
[[nodiscard]] virtual TiffComponent* doClone() const = 0;
//! Implements writeData().
virtual uint32_t doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t dataIdx,
virtual uint32_t doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t dataIdx,
uint32_t& imageIdx) const = 0;
//! Implements writeImage().
virtual uint32_t doWriteImage(IoWrapper& ioWrapper, ByteOrder byteOrder) const = 0;
@ -410,7 +410,7 @@ class TiffEntryBase : public TiffComponent {
*/
void encode(TiffEncoder& encoder, const Exifdatum* datum);
//! Set the offset
void setOffset(int64_t offset) {
void setOffset(size_t offset) {
offset_ = offset;
}
/*!
@ -459,7 +459,7 @@ class TiffEntryBase : public TiffComponent {
@brief Return the offset to the data area relative to the base
for the component (usually the start of the TIFF header)
*/
[[nodiscard]] int64_t offset() const {
[[nodiscard]] size_t offset() const {
return offset_;
}
/*!
@ -503,7 +503,7 @@ class TiffEntryBase : public TiffComponent {
the \em ioWrapper, return the number of bytes written. Only the
\em ioWrapper and \em byteOrder arguments are used.
*/
uint32_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t valueIdx, uint32_t dataIdx,
uint32_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t valueIdx, uint32_t dataIdx,
uint32_t& imageIdx) override;
//@}
@ -515,7 +515,7 @@ class TiffEntryBase : public TiffComponent {
@brief Implements writeData(). Standard TIFF entries have no data:
write nothing and return 0.
*/
uint32_t doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t dataIdx,
uint32_t doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t dataIdx,
uint32_t& imageIdx) const override;
/*!
@brief Implements writeImage(). Standard TIFF entries have no image data:
@ -531,7 +531,7 @@ class TiffEntryBase : public TiffComponent {
//@}
//! Helper function to write an \em offset to a preallocated binary buffer
static uint32_t writeOffset(byte* buf, int64_t offset, TiffType tiffType, ByteOrder byteOrder);
static uint32_t writeOffset(byte* buf, size_t offset, TiffType tiffType, ByteOrder byteOrder);
//! Used (internally) to create another reference to the DataBuf reference by storage_.
[[nodiscard]] const std::shared_ptr<DataBuf>& storage() const {
@ -542,7 +542,7 @@ class TiffEntryBase : public TiffComponent {
// DATA
TiffType tiffType_; //!< Field TIFF type
size_t count_{}; //!< The number of values of the indicated type
int64_t offset_{}; //!< Offset to the data area
size_t offset_{}; //!< Offset to the data area
size_t size_{}; //!< Size of the data buffer holding the value in bytes, there is no minimum size.
// Notes on the ownership model of pData_: pData_ is a always a
@ -681,7 +681,7 @@ class TiffDataEntry : public TiffDataEntryBase {
on write. The type of the value can only be signed or unsigned short or
long.
*/
uint32_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t valueIdx, uint32_t dataIdx,
uint32_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t valueIdx, uint32_t dataIdx,
uint32_t& imageIdx) override;
//@}
@ -692,7 +692,7 @@ class TiffDataEntry : public TiffDataEntryBase {
@brief Implements writeData(). Write the data area to the \em ioWrapper.
Return the number of bytes written.
*/
uint32_t doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t dataIdx,
uint32_t doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t dataIdx,
uint32_t& imageIdx) const override;
// Using doWriteImage from base class
// Using doSize() from base class
@ -740,7 +740,7 @@ class TiffImageEntry : public TiffDataEntryBase {
\em ioWrapper. Return the number of bytes written. The \em valueIdx
and \em dataIdx arguments are not used.
*/
uint32_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t valueIdx, uint32_t dataIdx,
uint32_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t valueIdx, uint32_t dataIdx,
uint32_t& imageIdx) override;
//@}
@ -755,7 +755,7 @@ class TiffImageEntry : public TiffDataEntryBase {
directory. It is used for TIFF image entries in the makernote (large
preview images) so that the image data remains in the makernote IFD.
*/
uint32_t doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t dataIdx,
uint32_t doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t dataIdx,
uint32_t& imageIdx) const override;
/*!
@brief Implements writeImage(). Write the image data area to the \em ioWrapper.
@ -879,7 +879,7 @@ class TiffDirectory : public TiffComponent {
additional data, including the next-IFD, if any, to the
\em ioWrapper, return the number of bytes written.
*/
uint32_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t valueIdx, uint32_t dataIdx,
uint32_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t valueIdx, uint32_t dataIdx,
uint32_t& imageIdx) override;
//@}
@ -890,7 +890,7 @@ class TiffDirectory : public TiffComponent {
@brief This class does not really implement writeData(), it only has
write(). This method must not be called; it commits suicide.
*/
uint32_t doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t dataIdx,
uint32_t doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t dataIdx,
uint32_t& imageIdx) const override;
/*!
@brief Implements writeImage(). Write the image data of the TIFF
@ -925,8 +925,8 @@ class TiffDirectory : public TiffComponent {
//! @name Private Accessors
//@{
//! Write a binary directory entry for a TIFF component.
static uint32_t writeDirEntry(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset,
TiffComponent* pTiffComponent, uint32_t valueIdx, uint32_t dataIdx, uint32_t& imageIdx);
static uint32_t writeDirEntry(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, TiffComponent* pTiffComponent,
uint32_t valueIdx, uint32_t dataIdx, uint32_t& imageIdx);
//@}
// DATA
@ -975,7 +975,7 @@ class TiffSubIfd : public TiffEntryBase {
return the number of bytes written. The \em valueIdx and
\em imageIdx arguments are not used.
*/
uint32_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t valueIdx, uint32_t dataIdx,
uint32_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t valueIdx, uint32_t dataIdx,
uint32_t& imageIdx) override;
//@}
@ -986,7 +986,7 @@ class TiffSubIfd : public TiffEntryBase {
@brief Implements writeData(). Write the sub-IFDs to the \em ioWrapper.
Return the number of bytes written.
*/
uint32_t doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t dataIdx,
uint32_t doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t dataIdx,
uint32_t& imageIdx) const override;
/*!
@brief Implements writeImage(). Write the image data of each sub-IFD to
@ -1053,7 +1053,7 @@ class TiffMnEntry : public TiffEntryBase {
@brief Implements write() by forwarding the call to the actual
concrete Makernote, if there is one.
*/
uint32_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t valueIdx, uint32_t dataIdx,
uint32_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t valueIdx, uint32_t dataIdx,
uint32_t& imageIdx) override;
//@}
@ -1186,7 +1186,7 @@ class TiffIfdMakernote : public TiffComponent {
values and additional data to the \em ioWrapper, return the
number of bytes written.
*/
uint32_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t valueIdx, uint32_t dataIdx,
uint32_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t valueIdx, uint32_t dataIdx,
uint32_t& imageIdx) override;
//@}
@ -1197,7 +1197,7 @@ class TiffIfdMakernote : public TiffComponent {
@brief This class does not really implement writeData(), it only has
write(). This method must not be called; it commits suicide.
*/
uint32_t doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t dataIdx,
uint32_t doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t dataIdx,
uint32_t& imageIdx) const override;
/*!
@brief Implements writeImage(). Write the image data of the IFD of
@ -1384,7 +1384,7 @@ class TiffBinaryArray : public TiffEntryBase {
/*!
@brief Implements write(). Todo: Document it!
*/
uint32_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t valueIdx, uint32_t dataIdx,
uint32_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t valueIdx, uint32_t dataIdx,
uint32_t& imageIdx) override;
//@}
@ -1472,7 +1472,7 @@ class TiffBinaryElement : public TiffEntryBase {
/*!
@brief Implements write(). Todo: Document it!
*/
uint32_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, int64_t offset, uint32_t valueIdx, uint32_t dataIdx,
uint32_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, uint32_t valueIdx, uint32_t dataIdx,
uint32_t& imageIdx) override;
//@}