Loading...
Searching...
No Matches
tiffcomposite_int.hpp
// ***************************************************************** -*- C++ -*-
/*
* Copyright (C) 2004-2021 Exiv2 authors
* This program is part of the Exiv2 distribution.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.
*/
#ifndef TIFFCOMPOSITE_INT_HPP_
#define TIFFCOMPOSITE_INT_HPP_
// *****************************************************************************
// included header files
#include "value.hpp"
#include "tifffwd_int.hpp"
#include "types.hpp"
// + standard includes
#include <iosfwd>
#include <vector>
#include <string>
#include <cassert>
// *****************************************************************************
// namespace extensions
namespace Exiv2 {
class BasicIo;
namespace Internal {
// *****************************************************************************
// class definitions
typedef uint16_t TiffType;
const TiffType ttUnsignedByte = 1;
const TiffType ttAsciiString = 2;
const TiffType ttUnsignedShort = 3;
const TiffType ttUnsignedLong = 4;
const TiffType ttUnsignedRational = 5;
const TiffType ttSignedByte = 6;
const TiffType ttUndefined = 7;
const TiffType ttSignedShort = 8;
const TiffType ttSignedLong = 9;
const TiffType ttSignedRational =10;
const TiffType ttTiffFloat =11;
const TiffType ttTiffDouble =12;
const TiffType ttTiffIfd =13;
TypeId toTypeId(TiffType tiffType, uint16_t tag, IfdId group);
TiffType toTiffType(TypeId typeId);
namespace Tag {
const uint32_t none = 0x10000;
const uint32_t root = 0x20000;
const uint32_t next = 0x30000;
const uint32_t all = 0x40000;
const uint32_t pana = 0x80000;
const uint32_t fuji = 0x100000;
const uint32_t cmt2 = 0x110000;
const uint32_t cmt3 = 0x120000;
const uint32_t cmt4 = 0x130000;
}
class TiffPathItem {
public:
TiffPathItem(uint32_t extendedTag, IfdId group)
: extendedTag_(extendedTag), group_(group) {}
uint16_t tag() const { return static_cast<uint16_t>(extendedTag_ & 0xffff); }
uint32_t extendedTag() const { return extendedTag_; }
IfdId group() const { return group_; }
private:
// DATA
uint32_t extendedTag_;
IfdId group_;
}; // class TiffPathItem
class IoWrapper {
public:
IoWrapper(BasicIo& io, const byte* pHeader, long size, OffsetWriter* pow);
long write(const byte* pData, long wcount);
int putb(byte data);
void setTarget(int id, uint32_t target);
private:
// DATA
BasicIo& io_;
const byte* pHeader_;
long size_;
bool wroteHeader_;
OffsetWriter* pow_;
}; // class IoWrapper
class TiffComponent {
public:
typedef std::auto_ptr<TiffComponent> AutoPtr;
typedef std::vector<TiffComponent*> Components;
TiffComponent(uint16_t tag, IfdId group);
virtual ~TiffComponent();
TiffComponent* addPath(uint16_t tag,
TiffPath& tiffPath,
TiffComponent* const pRoot,
AutoPtr object =AutoPtr(0));
TiffComponent* addChild(AutoPtr tiffComponent);
TiffComponent* addNext(AutoPtr tiffComponent);
void accept(TiffVisitor& visitor);
void setStart(const byte* pStart) { pStart_ = const_cast<byte*>(pStart); }
uint32_t write(IoWrapper& ioWrapper,
ByteOrder byteOrder,
int32_t offset,
uint32_t valueIdx,
uint32_t dataIdx,
uint32_t& imageIdx);
uint16_t tag() const { return tag_; }
IfdId group() const { return group_; }
byte* start() const { return pStart_; }
AutoPtr clone() const;
uint32_t writeData(IoWrapper& ioWrapper,
ByteOrder byteOrder,
int32_t offset,
uint32_t dataIdx,
uint32_t& imageIdx) const;
uint32_t writeImage(IoWrapper& ioWrapper,
ByteOrder byteOrder) const;
uint32_t size() const;
uint32_t count() const;
uint32_t sizeData() const;
uint32_t sizeImage() const;
// Todo: This is only implemented in TiffEntryBase. It is needed here so that
// we can sort components by tag and idx. Something is not quite right.
virtual int idx() const;
protected:
virtual TiffComponent* doAddPath(uint16_t tag,
TiffPath& tiffPath,
TiffComponent* const pRoot,
TiffComponent::AutoPtr object);
virtual TiffComponent* doAddChild(AutoPtr tiffComponent);
virtual TiffComponent* doAddNext(AutoPtr tiffComponent);
virtual void doAccept(TiffVisitor& visitor) =0;
virtual uint32_t doWrite(IoWrapper& ioWrapper,
ByteOrder byteOrder,
int32_t offset,
uint32_t valueIdx,
uint32_t dataIdx,
uint32_t& imageIdx) =0;
virtual TiffComponent* doClone() const =0;
virtual uint32_t doWriteData(IoWrapper& ioWrapper,
ByteOrder byteOrder,
int32_t offset,
uint32_t dataIdx,
uint32_t& imageIdx) const =0;
virtual uint32_t doWriteImage(IoWrapper& ioWrapper,
ByteOrder byteOrder) const =0;
virtual uint32_t doSize() const =0;
virtual uint32_t doCount() const =0;
virtual uint32_t doSizeData() const =0;
virtual uint32_t doSizeImage() const =0;
private:
// DATA
uint16_t tag_;
IfdId group_;
byte* pStart_;
}; // class TiffComponent
struct TiffMappingInfo {
struct Key;
bool operator==(const Key& key) const;
uint16_t tag() const { return static_cast<uint16_t>(extendedTag_ & 0xffff); }
// DATA
const char* make_;
uint32_t extendedTag_;
IfdId group_;
DecoderFct decoderFct_;
EncoderFct encoderFct_;
}; // struct TiffMappingInfo
struct TiffMappingInfo::Key {
Key(const std::string& m, uint32_t e, IfdId g) : m_(m), e_(e), g_(g) {}
std::string m_;
uint32_t e_;
IfdId g_;
};
class TiffEntryBase : public TiffComponent {
friend class TiffReader;
friend class TiffEncoder;
friend int selectNikonLd(TiffBinaryArray* const, TiffComponent* const);
public:
TiffEntryBase(uint16_t tag, IfdId group, TiffType tiffType =ttUndefined);
virtual ~TiffEntryBase();
void encode(TiffEncoder& encoder, const Exifdatum* datum);
void setOffset(int32_t offset) { offset_ = offset; }
void setData(byte* pData, int32_t size);
void setData(DataBuf buf);
void updateValue(Value::AutoPtr value, ByteOrder byteOrder);
void setValue(Value::AutoPtr value);
TiffType tiffType() const { return tiffType_; }
int32_t offset() const { return offset_; }
virtual int idx() const;
const byte* pData() const { return pData_; }
const Value* pValue() const { return pValue_; }
protected:
TiffEntryBase(const TiffEntryBase& rhs);
virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum) =0;
void setCount(uint32_t count) { count_ = count; }
void setIdx(int idx) { idx_ = idx; }
virtual uint32_t doWrite(IoWrapper& ioWrapper,
ByteOrder byteOrder,
int32_t offset,
uint32_t valueIdx,
uint32_t dataIdx,
uint32_t& imageIdx);
virtual uint32_t doCount() const;
virtual uint32_t doWriteData(IoWrapper& ioWrapper,
ByteOrder byteOrder,
int32_t offset,
uint32_t dataIdx,
uint32_t& imageIdx) const;
virtual uint32_t doWriteImage(IoWrapper& ioWrapper,
ByteOrder byteOrder) const;
virtual uint32_t doSize() const;
virtual uint32_t doSizeData() const;
virtual uint32_t doSizeImage() const;
static uint32_t writeOffset(byte* buf,
int32_t offset,
TiffType tiffType,
ByteOrder byteOrder);
private:
TiffEntryBase& operator=(const TiffEntryBase& rhs);
// DATA
TiffType tiffType_;
uint32_t count_;
int32_t offset_;
uint32_t size_;
byte* pData_;
bool isMalloced_;
int idx_;
Value* pValue_;
}; // class TiffEntryBase
class TiffEntry : public TiffEntryBase {
public:
TiffEntry(uint16_t tag, IfdId group) : TiffEntryBase(tag, group) {}
virtual ~TiffEntry();
protected:
virtual void doAccept(TiffVisitor& visitor);
virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum);
virtual TiffEntry* doClone() const;
}; // class TiffEntry
class TiffDataEntryBase : public TiffEntryBase {
public:
TiffDataEntryBase(uint16_t tag, IfdId group, uint16_t szTag, IfdId szGroup)
: TiffEntryBase(tag, group),
szTag_(szTag), szGroup_(szGroup) {}
virtual ~TiffDataEntryBase();
virtual void setStrips(const Value* pSize,
const byte* pData,
uint32_t sizeData,
uint32_t baseOffset) =0;
uint16_t szTag() const { return szTag_; }
IfdId szGroup() const { return szGroup_; }
private:
// DATA
const uint16_t szTag_;
const IfdId szGroup_;
}; // class TiffDataEntryBase
class TiffDataEntry : public TiffDataEntryBase {
friend class TiffEncoder;
public:
TiffDataEntry(uint16_t tag, IfdId group, uint16_t szTag, IfdId szGroup)
: TiffDataEntryBase(tag, group, szTag, szGroup),
pDataArea_(0), sizeDataArea_(0) {}
virtual ~TiffDataEntry();
virtual void setStrips(const Value* pSize,
const byte* pData,
uint32_t sizeData,
uint32_t baseOffset);
protected:
virtual void doAccept(TiffVisitor& visitor);
virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum);
virtual uint32_t doWrite(IoWrapper& ioWrapper,
ByteOrder byteOrder,
int32_t offset,
uint32_t valueIdx,
uint32_t dataIdx,
uint32_t& imageIdx);
virtual TiffDataEntry* doClone() const;
virtual uint32_t doWriteData(IoWrapper& ioWrapper,
ByteOrder byteOrder,
int32_t offset,
uint32_t dataIdx,
uint32_t& imageIdx) const;
// Using doWriteImage from base class
// Using doSize() from base class
virtual uint32_t doSizeData() const;
// Using doSizeImage from base class
private:
// DATA
byte* pDataArea_;
uint32_t sizeDataArea_;
}; // class TiffDataEntry
class TiffImageEntry : public TiffDataEntryBase {
friend class TiffEncoder;
public:
TiffImageEntry(uint16_t tag, IfdId group, uint16_t szTag, IfdId szGroup)
: TiffDataEntryBase(tag, group, szTag, szGroup) {}
virtual ~TiffImageEntry();
virtual void setStrips(const Value* pSize,
const byte* pData,
uint32_t sizeData,
uint32_t baseOffset);
protected:
virtual void doAccept(TiffVisitor& visitor);
virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum);
virtual uint32_t doWrite(IoWrapper& ioWrapper,
ByteOrder byteOrder,
int32_t offset,
uint32_t valueIdx,
uint32_t dataIdx,
uint32_t& imageIdx);
virtual TiffImageEntry* doClone() const;
virtual uint32_t doWriteData(IoWrapper& ioWrapper,
ByteOrder byteOrder,
int32_t offset,
uint32_t dataIdx,
uint32_t& imageIdx) const;
virtual uint32_t doWriteImage(IoWrapper& ioWrapper,
ByteOrder byteOrder) const;
virtual uint32_t doSize() const;
virtual uint32_t doSizeData() const;
virtual uint32_t doSizeImage() const;
private:
typedef std::vector<std::pair<const byte*, uint32_t> > Strips;
// DATA
Strips strips_;
}; // class TiffImageEntry
class TiffSizeEntry : public TiffEntryBase {
public:
TiffSizeEntry(uint16_t tag, IfdId group, uint16_t dtTag, IfdId dtGroup)
: TiffEntryBase(tag, group), dtTag_(dtTag), dtGroup_(dtGroup) {}
virtual ~TiffSizeEntry();
uint16_t dtTag() const { return dtTag_; }
IfdId dtGroup() const { return dtGroup_; }
protected:
virtual void doAccept(TiffVisitor& visitor);
virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum);
virtual TiffSizeEntry* doClone() const;
private:
// DATA
const uint16_t dtTag_;
const IfdId dtGroup_;
}; // class TiffSizeEntry
class TiffDirectory : public TiffComponent {
friend class TiffEncoder;
friend class TiffDecoder;
public:
TiffDirectory(uint16_t tag, IfdId group, bool hasNext =true)
: TiffComponent(tag, group), hasNext_(hasNext), pNext_(0) {}
virtual ~TiffDirectory();
bool hasNext() const { return hasNext_; }
protected:
TiffDirectory(const TiffDirectory& rhs);
virtual TiffComponent* doAddPath(uint16_t tag,
TiffPath& tiffPath,
TiffComponent* const pRoot,
TiffComponent::AutoPtr object);
virtual TiffComponent* doAddChild(TiffComponent::AutoPtr tiffComponent);
virtual TiffComponent* doAddNext(TiffComponent::AutoPtr tiffComponent);
virtual void doAccept(TiffVisitor& visitor);
virtual uint32_t doWrite(IoWrapper& ioWrapper,
ByteOrder byteOrder,
int32_t offset,
uint32_t valueIdx,
uint32_t dataIdx,
uint32_t& imageIdx);
virtual TiffDirectory* doClone() const;
virtual uint32_t doWriteData(IoWrapper& ioWrapper,
ByteOrder byteOrder,
int32_t offset,
uint32_t dataIdx,
uint32_t& imageIdx) const;
virtual uint32_t doWriteImage(IoWrapper& ioWrapper,
ByteOrder byteOrder) const;
virtual uint32_t doSize() const;
virtual uint32_t doCount() const;
virtual uint32_t doSizeData() const;
virtual uint32_t doSizeImage() const;
private:
TiffDirectory& operator=(const TiffDirectory& rhs);
uint32_t writeDirEntry(IoWrapper& ioWrapper,
ByteOrder byteOrder,
int32_t offset,
TiffComponent* pTiffComponent,
uint32_t valueIdx,
uint32_t dataIdx,
uint32_t& imageIdx) const;
private:
// DATA
Components components_;
const bool hasNext_;
TiffComponent* pNext_;
}; // class TiffDirectory
class TiffSubIfd : public TiffEntryBase {
friend class TiffReader;
public:
TiffSubIfd(uint16_t tag, IfdId group, IfdId newGroup);
virtual ~TiffSubIfd();
protected:
TiffSubIfd(const TiffSubIfd& rhs);
virtual TiffComponent* doAddPath(uint16_t tag,
TiffPath& tiffPath,
TiffComponent* const pRoot,
TiffComponent::AutoPtr object);
virtual TiffComponent* doAddChild(TiffComponent::AutoPtr tiffComponent);
virtual void doAccept(TiffVisitor& visitor);
virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum);
virtual uint32_t doWrite(IoWrapper& ioWrapper,
ByteOrder byteOrder,
int32_t offset,
uint32_t valueIdx,
uint32_t dataIdx,
uint32_t& imageIdx);
virtual TiffSubIfd* doClone() const;
virtual uint32_t doWriteData(IoWrapper& ioWrapper,
ByteOrder byteOrder,
int32_t offset,
uint32_t dataIdx,
uint32_t& imageIdx) const;
virtual uint32_t doWriteImage(IoWrapper& ioWrapper,
ByteOrder byteOrder) const;
uint32_t doSize() const;
virtual uint32_t doSizeData() const;
virtual uint32_t doSizeImage() const;
private:
TiffSubIfd& operator=(const TiffSubIfd& rhs);
typedef std::vector<TiffDirectory*> Ifds;
// DATA
IfdId newGroup_;
Ifds ifds_;
}; // class TiffSubIfd
class TiffMnEntry : public TiffEntryBase {
friend class TiffReader;
friend class TiffDecoder;
friend class TiffEncoder;
public:
TiffMnEntry(uint16_t tag, IfdId group, IfdId mnGroup);
virtual ~TiffMnEntry();
protected:
virtual TiffComponent* doAddPath(uint16_t tag,
TiffPath& tiffPath,
TiffComponent* const pRoot,
TiffComponent::AutoPtr object);
virtual TiffComponent* doAddChild(TiffComponent::AutoPtr tiffComponent);
virtual TiffComponent* doAddNext(TiffComponent::AutoPtr tiffComponent);
virtual void doAccept(TiffVisitor& visitor);
virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum);
virtual uint32_t doWrite(IoWrapper& ioWrapper,
ByteOrder byteOrder,
int32_t offset,
uint32_t valueIdx,
uint32_t dataIdx,
uint32_t& imageIdx);
virtual TiffMnEntry* doClone() const;
virtual uint32_t doCount() const;
// Using doWriteData from base class
// Using doWriteImage from base class
virtual uint32_t doSize() const;
// Using doSizeData from base class
// Using doSizeImage from base class
private:
TiffMnEntry(const TiffMnEntry& rhs);
TiffMnEntry& operator=(const TiffMnEntry& rhs);
// DATA
IfdId mnGroup_;
TiffComponent* mn_;
}; // class TiffMnEntry
class TiffIfdMakernote : public TiffComponent {
friend class TiffReader;
public:
TiffIfdMakernote(uint16_t tag,
IfdId group,
IfdId mnGroup,
MnHeader* pHeader,
bool hasNext =true);
virtual ~TiffIfdMakernote();
bool readHeader(const byte* pData, uint32_t size, ByteOrder byteOrder);
void setByteOrder(ByteOrder byteOrder);
void setImageByteOrder(ByteOrder byteOrder) { imageByteOrder_ = byteOrder; }
uint32_t sizeHeader() const;
uint32_t writeHeader(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
uint32_t mnOffset() const;
uint32_t ifdOffset() const;
ByteOrder byteOrder() const;
ByteOrder imageByteOrder() const { return imageByteOrder_; }
uint32_t baseOffset() const;
protected:
virtual TiffComponent* doAddPath(uint16_t tag,
TiffPath& tiffPath,
TiffComponent* const pRoot,
TiffComponent::AutoPtr object);
virtual TiffComponent* doAddChild(TiffComponent::AutoPtr tiffComponent);
virtual TiffComponent* doAddNext(TiffComponent::AutoPtr tiffComponent);
virtual void doAccept(TiffVisitor& visitor);
virtual uint32_t doWrite(IoWrapper& ioWrapper,
ByteOrder byteOrder,
int32_t offset,
uint32_t valueIdx,
uint32_t dataIdx,
uint32_t& imageIdx);
virtual TiffIfdMakernote* doClone() const;
virtual uint32_t doWriteData(IoWrapper& ioWrapper,
ByteOrder byteOrder,
int32_t offset,
uint32_t dataIdx,
uint32_t& imageIdx) const;
virtual uint32_t doWriteImage(IoWrapper& ioWrapper,
ByteOrder byteOrder) const;
virtual uint32_t doSize() const;
virtual uint32_t doCount() const;
virtual uint32_t doSizeData() const;
virtual uint32_t doSizeImage() const;
private:
TiffIfdMakernote(const TiffIfdMakernote& rhs);
TiffIfdMakernote& operator=(const TiffIfdMakernote& rhs);
// DATA
MnHeader* pHeader_;
TiffDirectory ifd_;
uint32_t mnOffset_;
ByteOrder imageByteOrder_;
}; // class TiffIfdMakernote
typedef int (*CfgSelFct)(uint16_t, const byte*, uint32_t, TiffComponent* const);
typedef DataBuf (*CryptFct)(uint16_t, const byte*, uint32_t, TiffComponent* const);
struct ArrayDef {
bool operator==(uint32_t idx) const { return idx_ == idx; }
uint32_t size(uint16_t tag, IfdId group) const;
// DATA
uint32_t idx_;
TiffType tiffType_;
uint32_t count_;
};
struct ArrayCfg {
uint32_t tagStep() const { return elDefaultDef_.size(0, group_); }
//DATA
IfdId group_;
ByteOrder byteOrder_;
TiffType elTiffType_;
CryptFct cryptFct_;
bool hasSize_;
bool hasFillers_;
bool concat_;
ArrayDef elDefaultDef_;
};
struct ArraySet {
const ArrayCfg cfg_;
const ArrayDef* def_;
const int defSize_;
};
class TiffBinaryArray : public TiffEntryBase {
public:
TiffBinaryArray(uint16_t tag,
IfdId group,
const ArrayCfg* arrayCfg,
const ArrayDef* arrayDef,
int defSize);
TiffBinaryArray(uint16_t tag,
IfdId group,
const ArraySet* arraySet,
int setSize,
CfgSelFct cfgSelFct);
virtual ~TiffBinaryArray();
uint32_t addElement(uint32_t idx, const ArrayDef& def);
bool initialize(IfdId group);
bool initialize(TiffComponent* const pRoot);
void iniOrigDataBuf();
bool updOrigDataBuf(const byte* pData, uint32_t size);
void setDecoded(bool decoded) { decoded_ = decoded; }
const ArrayCfg* cfg() const { return arrayCfg_; }
const ArrayDef* def() const { return arrayDef_; }
int defSize() const { return defSize_; }
bool decoded() const { return decoded_; }
protected:
TiffBinaryArray(const TiffBinaryArray& rhs);
virtual TiffComponent* doAddPath(uint16_t tag,
TiffPath& tiffPath,
TiffComponent* const pRoot,
TiffComponent::AutoPtr object);
virtual TiffComponent* doAddChild(TiffComponent::AutoPtr tiffComponent);
virtual void doAccept(TiffVisitor& visitor);
virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum);
virtual uint32_t doWrite(IoWrapper& ioWrapper,
ByteOrder byteOrder,
int32_t offset,
uint32_t valueIdx,
uint32_t dataIdx,
uint32_t& imageIdx);
virtual TiffBinaryArray* doClone() const;
virtual uint32_t doCount() const;
// Using doWriteData from base class
// Using doWriteImage from base class
virtual uint32_t doSize() const;
// Using doSizeData from base class
// Using doSizeImage from base class
private:
TiffBinaryArray& operator=(const TiffBinaryArray& rhs);
// DATA
const CfgSelFct cfgSelFct_;
const ArraySet* arraySet_;
const ArrayCfg* arrayCfg_;
const ArrayDef* arrayDef_;
int defSize_;
int setSize_;
Components elements_;
byte* origData_;
uint32_t origSize_;
TiffComponent* pRoot_;
bool decoded_;
}; // class TiffBinaryArray
class TiffBinaryElement : public TiffEntryBase {
public:
TiffBinaryElement(uint16_t tag, IfdId group);
virtual ~TiffBinaryElement();
void setElDef(const ArrayDef& def) { elDef_ = def; }
void setElByteOrder(ByteOrder byteOrder) { elByteOrder_ = byteOrder; }
const ArrayDef* elDef() const { return &elDef_; }
ByteOrder elByteOrder() const { return elByteOrder_; }
protected:
virtual void doAccept(TiffVisitor& visitor);
virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum);
virtual uint32_t doWrite(IoWrapper& ioWrapper,
ByteOrder byteOrder,
int32_t offset,
uint32_t valueIdx,
uint32_t dataIdx,
uint32_t& imageIdx);
virtual TiffBinaryElement* doClone() const;
virtual uint32_t doCount() const;
// Using doWriteData from base class
// Using doWriteImage from base class
virtual uint32_t doSize() const;
// Using doSizeData from base class
// Using doSizeImage from base class
private:
// DATA
ArrayDef elDef_;
ByteOrder elByteOrder_;
}; // class TiffBinaryElement
// *****************************************************************************
// template, inline and free functions
bool cmpTagLt(TiffComponent const* lhs, TiffComponent const* rhs);
bool cmpGroupLt(TiffComponent const* lhs, TiffComponent const* rhs);
TiffComponent::AutoPtr newTiffEntry(uint16_t tag, IfdId group);
TiffComponent::AutoPtr newTiffMnEntry(uint16_t tag, IfdId group);
TiffComponent::AutoPtr newTiffBinaryElement(uint16_t tag, IfdId group);
template<IfdId newGroup>
TiffComponent::AutoPtr newTiffDirectory(uint16_t tag, IfdId /*group*/)
{
return TiffComponent::AutoPtr(new TiffDirectory(tag, newGroup));
}
template<IfdId newGroup>
TiffComponent::AutoPtr newTiffSubIfd(uint16_t tag, IfdId group)
{
return TiffComponent::AutoPtr(new TiffSubIfd(tag, group, newGroup));
}
template<const ArrayCfg* arrayCfg, int N, const ArrayDef (&arrayDef)[N]>
TiffComponent::AutoPtr newTiffBinaryArray0(uint16_t tag, IfdId group)
{
// *& acrobatics is a workaround for a MSVC 7.1 bug
return TiffComponent::AutoPtr(
new TiffBinaryArray(tag, group, arrayCfg, *(&arrayDef), N));
}
template<const ArrayCfg* arrayCfg>
TiffComponent::AutoPtr newTiffBinaryArray1(uint16_t tag, IfdId group)
{
return TiffComponent::AutoPtr(
new TiffBinaryArray(tag, group, arrayCfg, 0, 0));
}
template<const ArraySet* arraySet, int N, CfgSelFct cfgSelFct>
TiffComponent::AutoPtr newTiffBinaryArray2(uint16_t tag, IfdId group)
{
return TiffComponent::AutoPtr(
new TiffBinaryArray(tag, group, arraySet, N, cfgSelFct));
}
template<uint16_t szTag, IfdId szGroup>
TiffComponent::AutoPtr newTiffThumbData(uint16_t tag, IfdId group)
{
return TiffComponent::AutoPtr(
new TiffDataEntry(tag, group, szTag, szGroup));
}
template<uint16_t dtTag, IfdId dtGroup>
TiffComponent::AutoPtr newTiffThumbSize(uint16_t tag, IfdId group)
{
return TiffComponent::AutoPtr(
new TiffSizeEntry(tag, group, dtTag, dtGroup));
}
template<uint16_t szTag, IfdId szGroup>
TiffComponent::AutoPtr newTiffImageData(uint16_t tag, IfdId group)
{
return TiffComponent::AutoPtr(
new TiffImageEntry(tag, group, szTag, szGroup));
}
template<uint16_t dtTag, IfdId dtGroup>
TiffComponent::AutoPtr newTiffImageSize(uint16_t tag, IfdId group)
{
// Todo: Same as newTiffThumbSize - consolidate (rename)?
return TiffComponent::AutoPtr(
new TiffSizeEntry(tag, group, dtTag, dtGroup));
}
}} // namespace Internal, Exiv2
#endif // #ifndef TIFFCOMPOSITE_INT_HPP_
Exiv2::BasicIo
An interface for simple binary IO.
Definition basicio.hpp:55
Exiv2::DataBuf
Utility class containing a character array. All it does is to take care of memory allocation and dele...
Definition types.hpp:193
Exiv2::Exifdatum
An Exif metadatum, consisting of an ExifKey and a Value and methods to manipulate these.
Definition exif.hpp:59
Exiv2::Internal::IoWrapper
Simple IO wrapper to ensure that the header is only written if there is any other data at all.
Definition tiffcomposite_int.hpp:121
Exiv2::Internal::IoWrapper::putb
int putb(byte data)
Wraps the corresponding BasicIo::putb() method.
Definition tiffcomposite_int.cpp:74
Exiv2::Internal::IoWrapper::setTarget
void setTarget(int id, uint32_t target)
Wrapper for OffsetWriter::setTarget(), using an int instead of the enum to reduce include deps.
Definition tiffcomposite_int.cpp:83
Exiv2::Internal::IoWrapper::write
long write(const byte *pData, long wcount)
Wraps the corresponding BasicIo::write() method.
Definition tiffcomposite_int.cpp:65
Exiv2::Internal::MnHeader
Makernote header interface. This class is used with TIFF makernotes.
Definition makernote_int.hpp:126
Exiv2::Internal::OffsetWriter
Class to insert pointers or offsets to computed addresses at specific locations in an image....
Definition tiffimage_int.hpp:419
Exiv2::Internal::TiffBinaryArray
Composite to model an array of different tags. The tag types as well as other aspects of the array ar...
Definition tiffcomposite_int.hpp:1354
Exiv2::Internal::TiffBinaryArray::doSize
virtual uint32_t doSize() const
Implements size(). Todo: Document it!
Definition tiffcomposite_int.cpp:1726
Exiv2::Internal::TiffBinaryArray::doWrite
virtual uint32_t doWrite(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t valueIdx, uint32_t dataIdx, uint32_t &imageIdx)
Implements write(). Todo: Document it!
Definition tiffcomposite_int.cpp:1396
Exiv2::Internal::TiffBinaryArray::doAddChild
virtual TiffComponent * doAddChild(TiffComponent::AutoPtr tiffComponent)
Implements addChild(). Todo: Document it!
Definition tiffcomposite_int.cpp:841
Exiv2::Internal::TiffBinaryArray::doAddPath
virtual TiffComponent * doAddPath(uint16_t tag, TiffPath &tiffPath, TiffComponent *const pRoot, TiffComponent::AutoPtr object)
Implements addPath(). Todo: Document it!
Definition tiffcomposite_int.cpp:760
Exiv2::Internal::TiffBinaryArray::cfg
const ArrayCfg * cfg() const
Return a pointer to the configuration.
Definition tiffcomposite_int.hpp:1412
Exiv2::Internal::TiffBinaryArray::initialize
bool initialize(IfdId group)
Setup cfg and def for the component, in case of a complex binary array. Else do nothing....
Definition tiffcomposite_int.cpp:566
Exiv2::Internal::TiffBinaryArray::setDecoded
void setDecoded(bool decoded)
Set a flag to indicate if the array was decoded.
Definition tiffcomposite_int.hpp:1406
Exiv2::Internal::TiffBinaryArray::doAccept
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition tiffcomposite_int.cpp:948
Exiv2::Internal::TiffBinaryArray::decoded
bool decoded() const
Return the flag which indicates if the array was decoded.
Definition tiffcomposite_int.hpp:1418
Exiv2::Internal::TiffBinaryArray::doClone
virtual TiffBinaryArray * doClone() const
Internal virtual copy constructor, implements clone().
Definition tiffcomposite_int.cpp:335
Exiv2::Internal::TiffBinaryArray::updOrigDataBuf
bool updOrigDataBuf(const byte *pData, uint32_t size)
Update the original data buffer and its size, return true if successful.
Definition tiffcomposite_int.cpp:600
Exiv2::Internal::TiffBinaryArray::doEncode
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)
Implements encode().
Definition tiffcomposite_int.cpp:973
Exiv2::Internal::TiffBinaryArray::iniOrigDataBuf
void iniOrigDataBuf()
Initialize the original data buffer and its size from the base entry.
Definition tiffcomposite_int.cpp:594
Exiv2::Internal::TiffBinaryArray::def
const ArrayDef * def() const
Return a pointer to the definition.
Definition tiffcomposite_int.hpp:1414
Exiv2::Internal::TiffBinaryArray::defSize
int defSize() const
Return the number of elements in the definition.
Definition tiffcomposite_int.hpp:1416
Exiv2::Internal::TiffBinaryArray::addElement
uint32_t addElement(uint32_t idx, const ArrayDef &def)
Add an element to the binary array, return the size of the element.
Definition tiffcomposite_int.cpp:610
Exiv2::Internal::TiffBinaryArray::~TiffBinaryArray
virtual ~TiffBinaryArray()
Virtual destructor.
Definition tiffcomposite_int.cpp:232
Exiv2::Internal::TiffBinaryArray::doCount
virtual uint32_t doCount() const
Implements count(). Todo: Document it!
Definition tiffcomposite_int.cpp:1046
Exiv2::Internal::TiffBinaryElement
Element of a TiffBinaryArray.
Definition tiffcomposite_int.hpp:1493
Exiv2::Internal::TiffBinaryElement::doSize
virtual uint32_t doSize() const
Implements size(). Returns count * type-size, both taken from the element definition.
Definition tiffcomposite_int.cpp:1754
Exiv2::Internal::TiffBinaryElement::setElDef
void setElDef(const ArrayDef &def)
Set the array definition for this element.
Definition tiffcomposite_int.hpp:1508
Exiv2::Internal::TiffBinaryElement::doEncode
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)
Implements encode().
Definition tiffcomposite_int.cpp:968
Exiv2::Internal::TiffBinaryElement::~TiffBinaryElement
virtual ~TiffBinaryElement()
Virtual destructor.
Definition tiffcomposite_int.cpp:239
Exiv2::Internal::TiffBinaryElement::doAccept
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition tiffcomposite_int.cpp:958
Exiv2::Internal::TiffBinaryElement::doClone
virtual TiffBinaryElement * doClone() const
Internal virtual copy constructor, implements clone().
Definition tiffcomposite_int.cpp:340
Exiv2::Internal::TiffBinaryElement::doWrite
virtual uint32_t doWrite(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t valueIdx, uint32_t dataIdx, uint32_t &imageIdx)
Implements write(). Todo: Document it!
Definition tiffcomposite_int.cpp:1462
Exiv2::Internal::TiffBinaryElement::elDef
const ArrayDef * elDef() const
Return the array definition of this element.
Definition tiffcomposite_int.hpp:1520
Exiv2::Internal::TiffBinaryElement::setElByteOrder
void setElByteOrder(ByteOrder byteOrder)
Set the byte order of this element.
Definition tiffcomposite_int.hpp:1512
Exiv2::Internal::TiffBinaryElement::elByteOrder
ByteOrder elByteOrder() const
Return the byte order of this element.
Definition tiffcomposite_int.hpp:1524
Exiv2::Internal::TiffBinaryElement::doCount
virtual uint32_t doCount() const
Implements count(). Returns the count from the element definition.
Definition tiffcomposite_int.cpp:1068
Exiv2::Internal::TiffComponent
Interface class for components of a TIFF directory hierarchy (Composite pattern). Both TIFF directori...
Definition tiffcomposite_int.hpp:171
Exiv2::Internal::TiffComponent::doClone
virtual TiffComponent * doClone() const =0
Internal virtual copy constructor, implements clone().
Exiv2::Internal::TiffComponent::doWriteData
virtual uint32_t doWriteData(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t dataIdx, uint32_t &imageIdx) const =0
Implements writeData().
Exiv2::Internal::TiffComponent::clone
AutoPtr clone() const
Return an auto-pointer to a copy of itself (deep copy, but without any children). The caller owns thi...
Definition tiffcomposite_int.cpp:288
Exiv2::Internal::TiffComponent::sizeImage
uint32_t sizeImage() const
Return the size in bytes of the image data of this component when written to a binary image....
Definition tiffcomposite_int.cpp:1807
Exiv2::Internal::TiffComponent::start
byte * start() const
Return a pointer to the start of the binary representation of the component.
Definition tiffcomposite_int.hpp:259
Exiv2::Internal::TiffComponent::write
uint32_t write(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t valueIdx, uint32_t dataIdx, uint32_t &imageIdx)
Write a TiffComponent to a binary image.
Definition tiffcomposite_int.cpp:1073
Exiv2::Internal::TiffComponent::writeImage
uint32_t writeImage(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Write the image data of this component to a binary image. Return the number of bytes written....
Definition tiffcomposite_int.cpp:1566
Exiv2::Internal::TiffComponent::size
uint32_t size() const
Return the size in bytes of the IFD value of this component when written to a binary image.
Definition tiffcomposite_int.cpp:1666
Exiv2::Internal::TiffComponent::doWriteImage
virtual uint32_t doWriteImage(IoWrapper &ioWrapper, ByteOrder byteOrder) const =0
Implements writeImage().
Exiv2::Internal::TiffComponent::tag
uint16_t tag() const
Return the tag of this entry.
Definition tiffcomposite_int.hpp:255
Exiv2::Internal::TiffComponent::addPath
TiffComponent * addPath(uint16_t tag, TiffPath &tiffPath, TiffComponent *const pRoot, AutoPtr object=AutoPtr(0))
Add a TIFF entry tag to the component. Components on the path to the entry are added if they don't ex...
Definition tiffcomposite_int.cpp:627
Exiv2::Internal::TiffComponent::count
uint32_t count() const
Return the number of components in this component.
Definition tiffcomposite_int.cpp:1008
Exiv2::Internal::TiffComponent::doAddNext
virtual TiffComponent * doAddNext(AutoPtr tiffComponent)
Implements addNext(). The default implementation does nothing.
Definition tiffcomposite_int.cpp:854
Exiv2::Internal::TiffComponent::doSizeData
virtual uint32_t doSizeData() const =0
Implements sizeData().
Exiv2::Internal::TiffComponent::setStart
void setStart(const byte *pStart)
Set a pointer to the start of the binary representation of the component in a memory buffer....
Definition tiffcomposite_int.hpp:229
Exiv2::Internal::TiffComponent::doAddChild
virtual TiffComponent * doAddChild(AutoPtr tiffComponent)
Implements addChild(). The default implementation does nothing.
Definition tiffcomposite_int.cpp:807
Exiv2::Internal::TiffComponent::doSize
virtual uint32_t doSize() const =0
Implements size().
Exiv2::Internal::TiffComponent::doAccept
virtual void doAccept(TiffVisitor &visitor)=0
Implements accept().
Exiv2::Internal::TiffComponent::idx
virtual int idx() const
Return the unique id of the entry in the image.
Definition tiffcomposite_int.cpp:345
Exiv2::Internal::TiffComponent::addNext
TiffComponent * addNext(AutoPtr tiffComponent)
Add a "next" component to the component. Default is to do nothing.
Definition tiffcomposite_int.cpp:849
Exiv2::Internal::TiffComponent::doAddPath
virtual TiffComponent * doAddPath(uint16_t tag, TiffPath &tiffPath, TiffComponent *const pRoot, TiffComponent::AutoPtr object)
Implements addPath(). The default implementation does nothing.
Definition tiffcomposite_int.cpp:635
Exiv2::Internal::TiffComponent::writeData
uint32_t writeData(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t dataIdx, uint32_t &imageIdx) const
Write the IFD data of this component to a binary image. Return the number of bytes written....
Definition tiffcomposite_int.cpp:1477
Exiv2::Internal::TiffComponent::Components
std::vector< TiffComponent * > Components
Container type to hold all metadata.
Definition tiffcomposite_int.hpp:176
Exiv2::Internal::TiffComponent::doSizeImage
virtual uint32_t doSizeImage() const =0
Implements sizeImage().
Exiv2::Internal::TiffComponent::group
IfdId group() const
Return the group id of this component.
Definition tiffcomposite_int.hpp:257
Exiv2::Internal::TiffComponent::addChild
TiffComponent * addChild(AutoPtr tiffComponent)
Add a child to the component. Default is to do nothing.
Definition tiffcomposite_int.cpp:802
Exiv2::Internal::TiffComponent::doWrite
virtual uint32_t doWrite(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t valueIdx, uint32_t dataIdx, uint32_t &imageIdx)=0
Implements write().
Exiv2::Internal::TiffComponent::~TiffComponent
virtual ~TiffComponent()
Virtual destructor.
Definition tiffcomposite_int.cpp:175
Exiv2::Internal::TiffComponent::AutoPtr
std::auto_ptr< TiffComponent > AutoPtr
TiffComponent auto_ptr type.
Definition tiffcomposite_int.hpp:174
Exiv2::Internal::TiffComponent::accept
void accept(TiffVisitor &visitor)
Interface to accept visitors (Visitor pattern). Visitors can perform operations on all components of ...
Definition tiffcomposite_int.cpp:883
Exiv2::Internal::TiffComponent::doCount
virtual uint32_t doCount() const =0
Implements count().
Exiv2::Internal::TiffComponent::sizeData
uint32_t sizeData() const
Return the size in bytes of the IFD data of this component when written to a binary image....
Definition tiffcomposite_int.cpp:1760
Exiv2::Internal::TiffDataEntryBase
Interface for a standard TIFF IFD entry consisting of a value which is a set of offsets to a data are...
Definition tiffcomposite_int.hpp:595
Exiv2::Internal::TiffDataEntryBase::~TiffDataEntryBase
virtual ~TiffDataEntryBase()
Virtual destructor.
Definition tiffcomposite_int.cpp:206
Exiv2::Internal::TiffDataEntryBase::szGroup
IfdId szGroup() const
Return the group of the entry which has the size.
Definition tiffcomposite_int.hpp:629
Exiv2::Internal::TiffDataEntryBase::setStrips
virtual void setStrips(const Value *pSize, const byte *pData, uint32_t sizeData, uint32_t baseOffset)=0
Set the data areas ("strips").
Exiv2::Internal::TiffDataEntryBase::TiffDataEntryBase
TiffDataEntryBase(uint16_t tag, IfdId group, uint16_t szTag, IfdId szGroup)
Constructor.
Definition tiffcomposite_int.hpp:600
Exiv2::Internal::TiffDataEntryBase::szTag
uint16_t szTag() const
Return the group of the entry which has the size.
Definition tiffcomposite_int.hpp:627
Exiv2::Internal::TiffDataEntry
A standard TIFF IFD entry consisting of a value which is an offset to a data area and the data area....
Definition tiffcomposite_int.hpp:650
Exiv2::Internal::TiffDataEntry::setStrips
virtual void setStrips(const Value *pSize, const byte *pData, uint32_t sizeData, uint32_t baseOffset)
Set the data areas ("strips").
Definition tiffcomposite_int.cpp:396
Exiv2::Internal::TiffDataEntry::doWrite
virtual uint32_t doWrite(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t valueIdx, uint32_t dataIdx, uint32_t &imageIdx)
Implements write(). Write pointers into the data area to the ioWrapper, relative to the offsets in th...
Definition tiffcomposite_int.cpp:1291
Exiv2::Internal::TiffDataEntry::doSizeData
virtual uint32_t doSizeData() const
Implements sizeData(). Return the size of the data area.
Definition tiffcomposite_int.cpp:1786
Exiv2::Internal::TiffDataEntry::doClone
virtual TiffDataEntry * doClone() const
Internal virtual copy constructor, implements clone().
Definition tiffcomposite_int.cpp:298
Exiv2::Internal::TiffDataEntry::doWriteData
virtual uint32_t doWriteData(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t dataIdx, uint32_t &imageIdx) const
Implements writeData(). Write the data area to the ioWrapper. Return the number of bytes written.
Definition tiffcomposite_int.cpp:1522
Exiv2::Internal::TiffDataEntry::TiffDataEntry
TiffDataEntry(uint16_t tag, IfdId group, uint16_t szTag, IfdId szGroup)
Constructor.
Definition tiffcomposite_int.hpp:656
Exiv2::Internal::TiffDataEntry::doAccept
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition tiffcomposite_int.cpp:893
Exiv2::Internal::TiffDataEntry::~TiffDataEntry
virtual ~TiffDataEntry()
Virtual destructor.
Definition tiffcomposite_int.cpp:210
Exiv2::Internal::TiffDataEntry::doEncode
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)
Implements encode().
Definition tiffcomposite_int.cpp:978
Exiv2::Internal::TiffDecoder
TIFF composite visitor to decode metadata from the TIFF tree and add it to an Image,...
Definition tiffvisitor_int.hpp:276
Exiv2::Internal::TiffDirectory
This class models a TIFF directory (Ifd). It is a composite component of the TIFF tree.
Definition tiffcomposite_int.hpp:858
Exiv2::Internal::TiffDirectory::TiffDirectory
TiffDirectory(uint16_t tag, IfdId group, bool hasNext=true)
Default constructor.
Definition tiffcomposite_int.hpp:865
Exiv2::Internal::TiffDirectory::doSize
virtual uint32_t doSize() const
Implements size(). Return the size of the TIFF directory, values and additional data,...
Definition tiffcomposite_int.cpp:1671
Exiv2::Internal::TiffDirectory::doAddNext
virtual TiffComponent * doAddNext(TiffComponent::AutoPtr tiffComponent)
Implements addNext(). The default implementation does nothing.
Definition tiffcomposite_int.cpp:859
Exiv2::Internal::TiffDirectory::doAddChild
virtual TiffComponent * doAddChild(TiffComponent::AutoPtr tiffComponent)
Implements addChild(). The default implementation does nothing.
Definition tiffcomposite_int.cpp:812
Exiv2::Internal::TiffDirectory::doWrite
virtual uint32_t doWrite(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t valueIdx, uint32_t dataIdx, uint32_t &imageIdx)
Implements write(). Write the TIFF directory, values and additional data, including the next-IFD,...
Definition tiffcomposite_int.cpp:1083
Exiv2::Internal::TiffDirectory::doAccept
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition tiffcomposite_int.cpp:908
Exiv2::Internal::TiffDirectory::doCount
virtual uint32_t doCount() const
Implements count(). Return the number of entries in the TIFF directory. Does not count entries which ...
Definition tiffcomposite_int.cpp:1013
Exiv2::Internal::TiffDirectory::doClone
virtual TiffDirectory * doClone() const
Internal virtual copy constructor, implements clone().
Definition tiffcomposite_int.cpp:313
Exiv2::Internal::TiffDirectory::doSizeImage
virtual uint32_t doSizeImage() const
Implements sizeImage(). Return the sum of the image sizes of all components plus that of the next-IFD...
Definition tiffcomposite_int.cpp:1812
Exiv2::Internal::TiffDirectory::hasNext
bool hasNext() const
Return true if the directory has a next pointer.
Definition tiffcomposite_int.hpp:874
Exiv2::Internal::TiffDirectory::doWriteData
virtual uint32_t doWriteData(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t dataIdx, uint32_t &imageIdx) const
This class does not really implement writeData(), it only has write(). This method must not be called...
Definition tiffcomposite_int.cpp:1486
Exiv2::Internal::TiffDirectory::doSizeData
virtual uint32_t doSizeData() const
This class does not really implement sizeData(), it only has size(). This method must not be called; ...
Definition tiffcomposite_int.cpp:1765
Exiv2::Internal::TiffDirectory::doAddPath
virtual TiffComponent * doAddPath(uint16_t tag, TiffPath &tiffPath, TiffComponent *const pRoot, TiffComponent::AutoPtr object)
Implements addPath(). The default implementation does nothing.
Definition tiffcomposite_int.cpp:643
Exiv2::Internal::TiffDirectory::doWriteImage
virtual uint32_t doWriteImage(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Implements writeImage(). Write the image data of the TIFF directory to the ioWrapper by forwarding th...
Definition tiffcomposite_int.cpp:1572
Exiv2::Internal::TiffDirectory::~TiffDirectory
virtual ~TiffDirectory()
Virtual destructor.
Definition tiffcomposite_int.cpp:179
Exiv2::Internal::TiffEncoder
TIFF composite visitor to encode metadata from an image to the TIFF tree. The metadata containers and...
Definition tiffvisitor_int.hpp:376
Exiv2::Internal::TiffEntryBase
This abstract base class provides the common functionality of an IFD directory entry and defines an e...
Definition tiffcomposite_int.hpp:411
Exiv2::Internal::TiffEntryBase::encode
void encode(TiffEncoder &encoder, const Exifdatum *datum)
Encode a TIFF component from the metadatum provided and information from the encoder as needed.
Definition tiffcomposite_int.cpp:963
Exiv2::Internal::TiffEntryBase::doSizeData
virtual uint32_t doSizeData() const
Implements sizeData(). Return 0.
Definition tiffcomposite_int.cpp:1771
Exiv2::Internal::TiffEntryBase::setIdx
void setIdx(int idx)
Set the unique id of the entry in the image.
Definition tiffcomposite_int.hpp:490
Exiv2::Internal::TiffEntryBase::setOffset
void setOffset(int32_t offset)
Set the offset.
Definition tiffcomposite_int.hpp:435
Exiv2::Internal::TiffEntryBase::setData
void setData(byte *pData, int32_t size)
Set pointer and size of the entry's data (not taking ownership of the data).
Definition tiffcomposite_int.cpp:362
Exiv2::Internal::TiffEntryBase::pData
const byte * pData() const
Return a pointer to the binary representation of the value of this component.
Definition tiffcomposite_int.hpp:471
Exiv2::Internal::TiffEntryBase::~TiffEntryBase
virtual ~TiffEntryBase()
Virtual destructor.
Definition tiffcomposite_int.cpp:194
Exiv2::Internal::TiffEntryBase::tiffType
TiffType tiffType() const
Return the TIFF type.
Definition tiffcomposite_int.hpp:457
Exiv2::Internal::TiffEntryBase::writeOffset
static uint32_t writeOffset(byte *buf, int32_t offset, TiffType tiffType, ByteOrder byteOrder)
Helper function to write an offset to a preallocated binary buffer.
Definition tiffcomposite_int.cpp:1268
Exiv2::Internal::TiffEntryBase::doWriteData
virtual uint32_t doWriteData(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t dataIdx, uint32_t &imageIdx) const
Implements writeData(). Standard TIFF entries have no data: write nothing and return 0.
Definition tiffcomposite_int.cpp:1499
Exiv2::Internal::TiffEntryBase::idx
virtual int idx() const
Return the unique id of the entry in the image.
Definition tiffcomposite_int.cpp:350
Exiv2::Internal::TiffEntryBase::doSize
virtual uint32_t doSize() const
Implements size(). Return the size of a standard TIFF entry.
Definition tiffcomposite_int.cpp:1698
Exiv2::Internal::TiffEntryBase::pValue
const Value * pValue() const
Return a const pointer to the converted value of this component.
Definition tiffcomposite_int.hpp:473
Exiv2::Internal::TiffEntryBase::doEncode
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)=0
Implements encode().
Exiv2::Internal::TiffEntryBase::doCount
virtual uint32_t doCount() const
Implements count().
Definition tiffcomposite_int.cpp:1018
Exiv2::Internal::TiffEntryBase::offset
int32_t offset() const
Return the offset to the data area relative to the base for the component (usually the start of the T...
Definition tiffcomposite_int.hpp:462
Exiv2::Internal::TiffEntryBase::doWrite
virtual uint32_t doWrite(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t valueIdx, uint32_t dataIdx, uint32_t &imageIdx)
Implements write(). Write the value of a standard TIFF entry to the ioWrapper, return the number of b...
Definition tiffcomposite_int.cpp:1253
Exiv2::Internal::TiffEntryBase::doSizeImage
virtual uint32_t doSizeImage() const
Implements sizeImage(). Return 0.
Definition tiffcomposite_int.cpp:1838
Exiv2::Internal::TiffEntryBase::setCount
void setCount(uint32_t count)
Set the number of components in this entry.
Definition tiffcomposite_int.hpp:488
Exiv2::Internal::TiffEntryBase::doWriteImage
virtual uint32_t doWriteImage(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Implements writeImage(). Standard TIFF entries have no image data: write nothing and return 0.
Definition tiffcomposite_int.cpp:1599
Exiv2::Internal::TiffEntryBase::setValue
void setValue(Value::AutoPtr value)
Set tag value. Takes ownership of the pointer passed in.
Definition tiffcomposite_int.cpp:387
Exiv2::Internal::TiffEntryBase::updateValue
void updateValue(Value::AutoPtr value, ByteOrder byteOrder)
Update the value. Takes ownership of the pointer passed in.
Definition tiffcomposite_int.cpp:372
Exiv2::Internal::TiffEntry
A standard TIFF IFD entry.
Definition tiffcomposite_int.hpp:563
Exiv2::Internal::TiffEntry::doClone
virtual TiffEntry * doClone() const
Internal virtual copy constructor, implements clone().
Definition tiffcomposite_int.cpp:293
Exiv2::Internal::TiffEntry::doAccept
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition tiffcomposite_int.cpp:888
Exiv2::Internal::TiffEntry::TiffEntry
TiffEntry(uint16_t tag, IfdId group)
Constructor.
Definition tiffcomposite_int.hpp:568
Exiv2::Internal::TiffEntry::doEncode
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)
Implements encode().
Definition tiffcomposite_int.cpp:983
Exiv2::Internal::TiffEntry::~TiffEntry
virtual ~TiffEntry()
Virtual destructor.
Definition tiffcomposite_int.cpp:202
Exiv2::Internal::TiffIfdMakernote
Tiff IFD Makernote. This is a concrete class suitable for all IFD makernotes.
Definition tiffcomposite_int.hpp:1147
Exiv2::Internal::TiffIfdMakernote::setByteOrder
void setByteOrder(ByteOrder byteOrder)
Set the byte order for the makernote.
Definition tiffcomposite_int.cpp:543
Exiv2::Internal::TiffIfdMakernote::doWriteData
virtual uint32_t doWriteData(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t dataIdx, uint32_t &imageIdx) const
This class does not really implement writeData(), it only has write(). This method must not be called...
Definition tiffcomposite_int.cpp:1556
Exiv2::Internal::TiffIfdMakernote::doAddPath
virtual TiffComponent * doAddPath(uint16_t tag, TiffPath &tiffPath, TiffComponent *const pRoot, TiffComponent::AutoPtr object)
Implements addPath(). The default implementation does nothing.
Definition tiffcomposite_int.cpp:752
Exiv2::Internal::TiffIfdMakernote::doAddChild
virtual TiffComponent * doAddChild(TiffComponent::AutoPtr tiffComponent)
Implements addChild(). The default implementation does nothing.
Definition tiffcomposite_int.cpp:836
Exiv2::Internal::TiffIfdMakernote::readHeader
bool readHeader(const byte *pData, uint32_t size, ByteOrder byteOrder)
Read the header from a data buffer, return true if successful.
Definition tiffcomposite_int.cpp:535
Exiv2::Internal::TiffIfdMakernote::sizeHeader
uint32_t sizeHeader() const
Return the size of the header in bytes.
Definition tiffcomposite_int.cpp:548
Exiv2::Internal::TiffIfdMakernote::imageByteOrder
ByteOrder imageByteOrder() const
Return the byte order used for the image.
Definition tiffcomposite_int.hpp:1207
Exiv2::Internal::TiffIfdMakernote::doSizeData
virtual uint32_t doSizeData() const
This class does not really implement sizeData(), it only has size(). This method must not be called; ...
Definition tiffcomposite_int.cpp:1801
Exiv2::Internal::TiffIfdMakernote::doAddNext
virtual TiffComponent * doAddNext(TiffComponent::AutoPtr tiffComponent)
Implements addNext(). The default implementation does nothing.
Definition tiffcomposite_int.cpp:878
Exiv2::Internal::TiffIfdMakernote::doAccept
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition tiffcomposite_int.cpp:940
Exiv2::Internal::TiffIfdMakernote::setImageByteOrder
void setImageByteOrder(ByteOrder byteOrder)
Set the byte order used for the image.
Definition tiffcomposite_int.hpp:1177
Exiv2::Internal::TiffIfdMakernote::baseOffset
uint32_t baseOffset() const
Return the base offset for use with the makernote IFD entries relative to the start of the TIFF heade...
Definition tiffcomposite_int.cpp:529
Exiv2::Internal::TiffIfdMakernote::doCount
virtual uint32_t doCount() const
Implements count(). Return the number of entries in the IFD of the Makernote. Does not count entries ...
Definition tiffcomposite_int.cpp:1041
Exiv2::Internal::TiffIfdMakernote::ifdOffset
uint32_t ifdOffset() const
Return the offset to the start of the Makernote IFD from the start of the Makernote....
Definition tiffcomposite_int.cpp:509
Exiv2::Internal::TiffIfdMakernote::doSize
virtual uint32_t doSize() const
Implements size(). Return the size of the Makernote header, TIFF directory, values and additional dat...
Definition tiffcomposite_int.cpp:1721
Exiv2::Internal::TiffIfdMakernote::byteOrder
ByteOrder byteOrder() const
Return the byte order for the makernote. Requires the image byte order to be set (setImageByteOrder()...
Definition tiffcomposite_int.cpp:515
Exiv2::Internal::TiffIfdMakernote::doSizeImage
virtual uint32_t doSizeImage() const
Implements sizeImage(). Return the total image data size of the makernote IFD.
Definition tiffcomposite_int.cpp:1833
Exiv2::Internal::TiffIfdMakernote::doClone
virtual TiffIfdMakernote * doClone() const
Internal virtual copy constructor, implements clone().
Definition tiffcomposite_int.cpp:329
Exiv2::Internal::TiffIfdMakernote::mnOffset
uint32_t mnOffset() const
Return the offset to the makernote from the start of the TIFF header.
Definition tiffcomposite_int.cpp:524
Exiv2::Internal::TiffIfdMakernote::~TiffIfdMakernote
virtual ~TiffIfdMakernote()
Virtual destructor.
Definition tiffcomposite_int.cpp:227
Exiv2::Internal::TiffIfdMakernote::doWrite
virtual uint32_t doWrite(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t valueIdx, uint32_t dataIdx, uint32_t &imageIdx)
Implements write(). Write the Makernote header, TIFF directory, values and additional data to the ioW...
Definition tiffcomposite_int.cpp:1379
Exiv2::Internal::TiffIfdMakernote::writeHeader
uint32_t writeHeader(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Write the header to a data buffer, return the number of bytes written.
Definition tiffcomposite_int.cpp:554
Exiv2::Internal::TiffIfdMakernote::doWriteImage
virtual uint32_t doWriteImage(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Implements writeImage(). Write the image data of the IFD of the Makernote. Return the number of bytes...
Definition tiffcomposite_int.cpp:1615
Exiv2::Internal::TiffImageEntry
A standard TIFF IFD entry consisting of a value which is an array of offsets to image data areas....
Definition tiffcomposite_int.hpp:733
Exiv2::Internal::TiffImageEntry::doWriteData
virtual uint32_t doWriteData(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t dataIdx, uint32_t &imageIdx) const
Implements writeData(). Write the image data area to the ioWrapper. Return the number of bytes writte...
Definition tiffcomposite_int.cpp:1508
Exiv2::Internal::TiffImageEntry::doAccept
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition tiffcomposite_int.cpp:898
Exiv2::Internal::TiffImageEntry::doSizeData
virtual uint32_t doSizeData() const
Implements sizeData(). Return the size of the image data area.
Definition tiffcomposite_int.cpp:1776
Exiv2::Internal::TiffImageEntry::doClone
virtual TiffImageEntry * doClone() const
Internal virtual copy constructor, implements clone().
Definition tiffcomposite_int.cpp:303
Exiv2::Internal::TiffImageEntry::doSizeImage
virtual uint32_t doSizeImage() const
Implements sizeImage(). Return the size of the image data area.
Definition tiffcomposite_int.cpp:1843
Exiv2::Internal::TiffImageEntry::setStrips
virtual void setStrips(const Value *pSize, const byte *pData, uint32_t sizeData, uint32_t baseOffset)
Set the data areas ("strips").
Definition tiffcomposite_int.cpp:463
Exiv2::Internal::TiffImageEntry::doSize
virtual uint32_t doSize() const
Implements size(). Return the size of the strip pointers.
Definition tiffcomposite_int.cpp:1703
Exiv2::Internal::TiffImageEntry::TiffImageEntry
TiffImageEntry(uint16_t tag, IfdId group, uint16_t szTag, IfdId szGroup)
Constructor.
Definition tiffcomposite_int.hpp:739
Exiv2::Internal::TiffImageEntry::~TiffImageEntry
virtual ~TiffImageEntry()
Virtual destructor.
Definition tiffcomposite_int.cpp:214
Exiv2::Internal::TiffImageEntry::doEncode
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)
Implements encode().
Definition tiffcomposite_int.cpp:988
Exiv2::Internal::TiffImageEntry::doWriteImage
virtual uint32_t doWriteImage(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Implements writeImage(). Write the image data area to the ioWrapper. Return the number of bytes writt...
Definition tiffcomposite_int.cpp:1625
Exiv2::Internal::TiffImageEntry::doWrite
virtual uint32_t doWrite(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t valueIdx, uint32_t dataIdx, uint32_t &imageIdx)
Implements write(). Write pointers into the image data area to the ioWrapper. Return the number of by...
Definition tiffcomposite_int.cpp:1315
Exiv2::Internal::TiffMnEntry
This class is the basis for Makernote support in TIFF. It contains a pointer to a concrete Makernote....
Definition tiffcomposite_int.hpp:1071
Exiv2::Internal::TiffMnEntry::doClone
virtual TiffMnEntry * doClone() const
Internal virtual copy constructor, implements clone().
Definition tiffcomposite_int.cpp:323
Exiv2::Internal::TiffMnEntry::~TiffMnEntry
virtual ~TiffMnEntry()
Virtual destructor.
Definition tiffcomposite_int.cpp:222
Exiv2::Internal::TiffMnEntry::doAddChild
virtual TiffComponent * doAddChild(TiffComponent::AutoPtr tiffComponent)
Implements addChild(). The default implementation does nothing.
Definition tiffcomposite_int.cpp:827
Exiv2::Internal::TiffMnEntry::doAccept
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition tiffcomposite_int.cpp:929
Exiv2::Internal::TiffMnEntry::doSize
virtual uint32_t doSize() const
Implements size() by forwarding the call to the actual concrete Makernote, if there is one.
Definition tiffcomposite_int.cpp:1713
Exiv2::Internal::TiffMnEntry::doAddPath
virtual TiffComponent * doAddPath(uint16_t tag, TiffPath &tiffPath, TiffComponent *const pRoot, TiffComponent::AutoPtr object)
Implements addPath(). The default implementation does nothing.
Definition tiffcomposite_int.cpp:730
Exiv2::Internal::TiffMnEntry::doCount
virtual uint32_t doCount() const
Implements count(). Return number of components in the entry.
Definition tiffcomposite_int.cpp:1023
Exiv2::Internal::TiffMnEntry::doAddNext
virtual TiffComponent * doAddNext(TiffComponent::AutoPtr tiffComponent)
Implements addNext(). The default implementation does nothing.
Definition tiffcomposite_int.cpp:869
Exiv2::Internal::TiffMnEntry::doEncode
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)
Implements encode().
Definition tiffcomposite_int.cpp:993
Exiv2::Internal::TiffMnEntry::doWrite
virtual uint32_t doWrite(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t valueIdx, uint32_t dataIdx, uint32_t &imageIdx)
Implements write() by forwarding the call to the actual concrete Makernote, if there is one.
Definition tiffcomposite_int.cpp:1366
Exiv2::Internal::TiffPathItem
A tupel consisting of extended Tag and group used as an item in TIFF paths.
Definition tiffcomposite_int.hpp:87
Exiv2::Internal::TiffPathItem::group
IfdId group() const
Return the group.
Definition tiffcomposite_int.hpp:103
Exiv2::Internal::TiffPathItem::tag
uint16_t tag() const
Return the tag corresponding to the extended tag.
Definition tiffcomposite_int.hpp:99
Exiv2::Internal::TiffPathItem::TiffPathItem
TiffPathItem(uint32_t extendedTag, IfdId group)
Constructor.
Definition tiffcomposite_int.hpp:92
Exiv2::Internal::TiffPathItem::extendedTag
uint32_t extendedTag() const
Return the extended tag (32 bit so that it can contain special tags)
Definition tiffcomposite_int.hpp:101
Exiv2::Internal::TiffReader
TIFF composite visitor to read the TIFF structure from a block of memory and build the composite from...
Definition tiffvisitor_int.hpp:622
Exiv2::Internal::TiffSizeEntry
A TIFF IFD entry containing the size of a data area of a related TiffDataEntry. This component is use...
Definition tiffcomposite_int.hpp:816
Exiv2::Internal::TiffSizeEntry::doClone
virtual TiffSizeEntry * doClone() const
Internal virtual copy constructor, implements clone().
Definition tiffcomposite_int.cpp:308
Exiv2::Internal::TiffSizeEntry::doAccept
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition tiffcomposite_int.cpp:903
Exiv2::Internal::TiffSizeEntry::dtGroup
IfdId dtGroup() const
Return the group of the related entry which has the data area.
Definition tiffcomposite_int.hpp:832
Exiv2::Internal::TiffSizeEntry::~TiffSizeEntry
virtual ~TiffSizeEntry()
Virtual destructor.
Definition tiffcomposite_int.cpp:218
Exiv2::Internal::TiffSizeEntry::TiffSizeEntry
TiffSizeEntry(uint16_t tag, IfdId group, uint16_t dtTag, IfdId dtGroup)
Constructor.
Definition tiffcomposite_int.hpp:821
Exiv2::Internal::TiffSizeEntry::doEncode
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)
Implements encode().
Definition tiffcomposite_int.cpp:998
Exiv2::Internal::TiffSizeEntry::dtTag
uint16_t dtTag() const
Return the group of the related entry which has the data area.
Definition tiffcomposite_int.hpp:830
Exiv2::Internal::TiffSubIfd
This class models a TIFF sub-directory (sub-IFD). A sub-IFD is an entry with one or more values that ...
Definition tiffcomposite_int.hpp:982
Exiv2::Internal::TiffSubIfd::doWriteImage
virtual uint32_t doWriteImage(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Implements writeImage(). Write the image data of each sub-IFD to the ioWrapper. Return the number of ...
Definition tiffcomposite_int.cpp:1605
Exiv2::Internal::TiffSubIfd::doAddPath
virtual TiffComponent * doAddPath(uint16_t tag, TiffPath &tiffPath, TiffComponent *const pRoot, TiffComponent::AutoPtr object)
Implements addPath(). The default implementation does nothing.
Definition tiffcomposite_int.cpp:695
Exiv2::Internal::TiffSubIfd::doSizeImage
virtual uint32_t doSizeImage() const
Implements sizeImage(). Return the sum of the image sizes of all sub-IFDs.
Definition tiffcomposite_int.cpp:1824
Exiv2::Internal::TiffSubIfd::doSizeData
virtual uint32_t doSizeData() const
Implements sizeData(). Return the sum of the sizes of all sub-IFDs.
Definition tiffcomposite_int.cpp:1792
Exiv2::Internal::TiffSubIfd::doWrite
virtual uint32_t doWrite(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t valueIdx, uint32_t dataIdx, uint32_t &imageIdx)
Implements write(). Write the sub-IFD pointers to the ioWrapper, return the number of bytes written....
Definition tiffcomposite_int.cpp:1347
Exiv2::Internal::TiffSubIfd::doWriteData
virtual uint32_t doWriteData(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t dataIdx, uint32_t &imageIdx) const
Implements writeData(). Write the sub-IFDs to the ioWrapper. Return the number of bytes written.
Definition tiffcomposite_int.cpp:1539
Exiv2::Internal::TiffSubIfd::doEncode
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)
Implements encode().
Definition tiffcomposite_int.cpp:1003
Exiv2::Internal::TiffSubIfd::doClone
virtual TiffSubIfd * doClone() const
Internal virtual copy constructor, implements clone().
Definition tiffcomposite_int.cpp:318
Exiv2::Internal::TiffSubIfd::doAddChild
virtual TiffComponent * doAddChild(TiffComponent::AutoPtr tiffComponent)
Implements addChild(). The default implementation does nothing.
Definition tiffcomposite_int.cpp:819
Exiv2::Internal::TiffSubIfd::doAccept
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition tiffcomposite_int.cpp:920
Exiv2::Internal::TiffSubIfd::doSize
uint32_t doSize() const
Implements size(). Return the size of the sub-Ifd pointers.
Definition tiffcomposite_int.cpp:1708
Exiv2::Internal::TiffSubIfd::~TiffSubIfd
virtual ~TiffSubIfd()
Virtual destructor.
Definition tiffcomposite_int.cpp:187
Exiv2::Internal::TiffVisitor
Abstract base class defining the interface for TIFF composite visitors (Visitor pattern)
Definition tiffvisitor_int.hpp:65
Exiv2::Value
Common interface for all types of values used with metadata.
Definition value.hpp:51
Exiv2::Value::AutoPtr
std::auto_ptr< Value > AutoPtr
Shortcut for a Value auto pointer.
Definition value.hpp:54
Exiv2::Internal::Tag::cmt2
const uint32_t cmt2
Special tag: root IFD of CR3 images.
Definition tiffcomposite_int.hpp:78
Exiv2::Internal::Tag::fuji
const uint32_t fuji
Special tag: root IFD of Fujifilm RAF images.
Definition tiffcomposite_int.hpp:77
Exiv2::Internal::Tag::none
const uint32_t none
Dummy tag.
Definition tiffcomposite_int.hpp:72
Exiv2::Internal::Tag::cmt4
const uint32_t cmt4
Special tag: root IFD of CR3 images.
Definition tiffcomposite_int.hpp:80
Exiv2::Internal::Tag::pana
const uint32_t pana
Special tag: root IFD of Panasonic RAW images.
Definition tiffcomposite_int.hpp:76
Exiv2::Internal::Tag::root
const uint32_t root
Special tag: root IFD.
Definition tiffcomposite_int.hpp:73
Exiv2::Internal::Tag::cmt3
const uint32_t cmt3
Special tag: root IFD of CR3 images.
Definition tiffcomposite_int.hpp:79
Exiv2::Internal::Tag::all
const uint32_t all
Special tag: all tags in a group.
Definition tiffcomposite_int.hpp:75
Exiv2::Internal::Tag::next
const uint32_t next
Special tag: next IFD.
Definition tiffcomposite_int.hpp:74
Exiv2::Internal::ttTiffFloat
const TiffType ttTiffFloat
TIFF FLOAT type.
Definition tiffcomposite_int.hpp:59
Exiv2::Internal::ttUnsignedLong
const TiffType ttUnsignedLong
Exif LONG type.
Definition tiffcomposite_int.hpp:52
Exiv2::Internal::ttSignedByte
const TiffType ttSignedByte
Exif SBYTE type.
Definition tiffcomposite_int.hpp:54
Exiv2::Internal::newTiffBinaryArray2
TiffComponent::AutoPtr newTiffBinaryArray2(uint16_t tag, IfdId group)
Function to create and initialize a new complex binary array entry.
Definition tiffcomposite_int.hpp:1625
Exiv2::Internal::ttUnsignedRational
const TiffType ttUnsignedRational
Exif RATIONAL type.
Definition tiffcomposite_int.hpp:53
Exiv2::Internal::ttTiffDouble
const TiffType ttTiffDouble
TIFF DOUBLE type.
Definition tiffcomposite_int.hpp:60
Exiv2::Internal::CfgSelFct
int(* CfgSelFct)(uint16_t, const byte *, uint32_t, TiffComponent *const)
Function pointer type for a function to determine which cfg + def of a corresponding array set to use...
Definition tiffcomposite_int.hpp:1307
Exiv2::Internal::newTiffBinaryElement
TiffComponent::AutoPtr newTiffBinaryElement(uint16_t tag, IfdId group)
Function to create and initialize a new binary array element.
Definition tiffcomposite_int.cpp:1931
Exiv2::Internal::EncoderFct
void(TiffEncoder::* EncoderFct)(TiffEntryBase *, const Exifdatum *)
Function pointer type for a TiffDecoder member function to decode a TIFF component.
Definition tifffwd_int.hpp:81
Exiv2::Internal::newTiffThumbSize
TiffComponent::AutoPtr newTiffThumbSize(uint16_t tag, IfdId group)
Function to create and initialize a new TIFF entry for a thumbnail (size)
Definition tiffcomposite_int.hpp:1641
Exiv2::Internal::ttTiffIfd
const TiffType ttTiffIfd
TIFF IFD type.
Definition tiffcomposite_int.hpp:61
Exiv2::Internal::ttSignedShort
const TiffType ttSignedShort
Exif SSHORT type.
Definition tiffcomposite_int.hpp:56
Exiv2::Internal::DecoderFct
void(TiffDecoder::* DecoderFct)(const TiffEntryBase *)
Function pointer type for a TiffDecoder member function to decode a TIFF component.
Definition tifffwd_int.hpp:76
Exiv2::Internal::CryptFct
DataBuf(* CryptFct)(uint16_t, const byte *, uint32_t, TiffComponent *const)
Function pointer type for a crypt function used for binary arrays.
Definition tiffcomposite_int.hpp:1310
Exiv2::Internal::cmpGroupLt
bool cmpGroupLt(TiffComponent const *lhs, TiffComponent const *rhs)
Compare two TIFF component pointers by group. Return true if the group of component lhs is less than ...
Definition tiffcomposite_int.cpp:1914
Exiv2::Internal::TiffType
uint16_t TiffType
TIFF value type.
Definition tiffcomposite_int.hpp:47
Exiv2::Internal::ttAsciiString
const TiffType ttAsciiString
Exif ASCII type.
Definition tiffcomposite_int.hpp:50
Exiv2::Internal::ttUnsignedShort
const TiffType ttUnsignedShort
Exif SHORT type.
Definition tiffcomposite_int.hpp:51
Exiv2::Internal::ttSignedLong
const TiffType ttSignedLong
Exif SLONG type.
Definition tiffcomposite_int.hpp:57
Exiv2::Internal::newTiffEntry
TiffComponent::AutoPtr newTiffEntry(uint16_t tag, IfdId group)
Function to create and initialize a new TIFF entry.
Definition tiffcomposite_int.cpp:1921
Exiv2::Internal::newTiffMnEntry
TiffComponent::AutoPtr newTiffMnEntry(uint16_t tag, IfdId group)
Function to create and initialize a new TIFF makernote entry.
Definition tiffcomposite_int.cpp:1926
Exiv2::Internal::newTiffImageSize
TiffComponent::AutoPtr newTiffImageSize(uint16_t tag, IfdId group)
Function to create and initialize a new TIFF entry for image data (size)
Definition tiffcomposite_int.hpp:1657
Exiv2::Internal::newTiffSubIfd
TiffComponent::AutoPtr newTiffSubIfd(uint16_t tag, IfdId group)
Function to create and initialize a new TIFF sub-directory.
Definition tiffcomposite_int.hpp:1601
Exiv2::Internal::TiffPath
std::stack< TiffPathItem > TiffPath
Stack to hold a path from the TIFF root element to a TIFF entry.
Definition tifffwd_int.hpp:104
Exiv2::Internal::newTiffBinaryArray1
TiffComponent::AutoPtr newTiffBinaryArray1(uint16_t tag, IfdId group)
Function to create and initialize a new simple binary array entry.
Definition tiffcomposite_int.hpp:1617
Exiv2::Internal::IfdId
IfdId
Type to specify the IFD to which a metadata belongs.
Definition tags_int.hpp:46
Exiv2::Internal::ttUnsignedByte
const TiffType ttUnsignedByte
Exif BYTE type.
Definition tiffcomposite_int.hpp:49
Exiv2::Internal::newTiffBinaryArray0
TiffComponent::AutoPtr newTiffBinaryArray0(uint16_t tag, IfdId group)
Function to create and initialize a new binary array entry.
Definition tiffcomposite_int.hpp:1608
Exiv2::Internal::toTypeId
TypeId toTypeId(TiffType tiffType, uint16_t tag, IfdId group)
Convert the tiffType of a tag and group to an Exiv2 typeId.
Definition tiffcomposite_int.cpp:1874
Exiv2::Internal::toTiffType
TiffType toTiffType(TypeId typeId)
Convert the Exiv2 typeId to a TIFF value type.
Definition tiffcomposite_int.cpp:1893
Exiv2::Internal::ttUndefined
const TiffType ttUndefined
Exif UNDEFINED type.
Definition tiffcomposite_int.hpp:55
Exiv2::Internal::cmpTagLt
bool cmpTagLt(TiffComponent const *lhs, TiffComponent const *rhs)
Compare two TIFF component pointers by tag. Return true if the tag of component lhs is less than that...
Definition tiffcomposite_int.cpp:1906
Exiv2::Internal::newTiffImageData
TiffComponent::AutoPtr newTiffImageData(uint16_t tag, IfdId group)
Function to create and initialize a new TIFF entry for image data.
Definition tiffcomposite_int.hpp:1649
Exiv2::Internal::newTiffThumbData
TiffComponent::AutoPtr newTiffThumbData(uint16_t tag, IfdId group)
Function to create and initialize a new TIFF entry for a thumbnail (data)
Definition tiffcomposite_int.hpp:1633
Exiv2::Internal::newTiffDirectory
TiffComponent::AutoPtr newTiffDirectory(uint16_t tag, IfdId)
Function to create and initialize a new TIFF directory.
Definition tiffcomposite_int.hpp:1594
Exiv2::Internal::ttSignedRational
const TiffType ttSignedRational
Exif SRATIONAL type.
Definition tiffcomposite_int.hpp:58
Exiv2
Provides classes and functions to encode and decode Exif and Iptc data. The libexiv2 API consists of ...
Definition asfvideo.hpp:36
Exiv2::TypeId
TypeId
Exiv2 value type identifiers.
Definition types.hpp:119
Exiv2::ByteOrder
ByteOrder
Type to express the byte order (little or big endian)
Definition types.hpp:102
Exiv2::Internal::ArrayCfg
Additional configuration for a binary array.
Definition tiffcomposite_int.hpp:1325
Exiv2::Internal::ArrayCfg::hasSize_
bool hasSize_
If true, first tag is the size element.
Definition tiffcomposite_int.hpp:1336
Exiv2::Internal::ArrayCfg::tagStep
uint32_t tagStep() const
Return the size of the default tag, which is used to calculate tag numbers as idx/tagStep.
Definition tiffcomposite_int.hpp:1330
Exiv2::Internal::ArrayCfg::elDefaultDef_
ArrayDef elDefaultDef_
Default element.
Definition tiffcomposite_int.hpp:1339
Exiv2::Internal::ArrayCfg::concat_
bool concat_
If true, concatenate gaps between defined tags to single tags.
Definition tiffcomposite_int.hpp:1338
Exiv2::Internal::ArrayCfg::cryptFct_
CryptFct cryptFct_
Crypt function, 0 if not used.
Definition tiffcomposite_int.hpp:1335
Exiv2::Internal::ArrayCfg::elTiffType_
TiffType elTiffType_
Type for the array entry and the size element, if any.
Definition tiffcomposite_int.hpp:1334
Exiv2::Internal::ArrayCfg::byteOrder_
ByteOrder byteOrder_
Byte order, invalidByteOrder to inherit.
Definition tiffcomposite_int.hpp:1333
Exiv2::Internal::ArrayCfg::group_
IfdId group_
Group for the elements.
Definition tiffcomposite_int.hpp:1332
Exiv2::Internal::ArrayCfg::hasFillers_
bool hasFillers_
If true, write all defined tags.
Definition tiffcomposite_int.hpp:1337
Exiv2::Internal::ArrayDef
Defines one tag in a binary array.
Definition tiffcomposite_int.hpp:1313
Exiv2::Internal::ArrayDef::tiffType_
TiffType tiffType_
TIFF type of the element.
Definition tiffcomposite_int.hpp:1320
Exiv2::Internal::ArrayDef::operator==
bool operator==(uint32_t idx) const
Comparison with idx.
Definition tiffcomposite_int.hpp:1315
Exiv2::Internal::ArrayDef::count_
uint32_t count_
Number of components.
Definition tiffcomposite_int.hpp:1321
Exiv2::Internal::ArrayDef::size
uint32_t size(uint16_t tag, IfdId group) const
Get the size in bytes of a tag.
Definition tiffcomposite_int.cpp:560
Exiv2::Internal::ArrayDef::idx_
uint32_t idx_
Index in bytes from the start.
Definition tiffcomposite_int.hpp:1319
Exiv2::Internal::ArraySet
Combination of array configuration and definition for arrays.
Definition tiffcomposite_int.hpp:1343
Exiv2::Internal::ArraySet::def_
const ArrayDef * def_
Binary array definition array.
Definition tiffcomposite_int.hpp:1345
Exiv2::Internal::ArraySet::cfg_
const ArrayCfg cfg_
Binary array configuration.
Definition tiffcomposite_int.hpp:1344
Exiv2::Internal::ArraySet::defSize_
const int defSize_
Size of the array definition array.
Definition tiffcomposite_int.hpp:1346
Exiv2::Internal::TiffMappingInfo::Key
Search key for TIFF mapping structures.
Definition tiffcomposite_int.hpp:397
Exiv2::Internal::TiffMappingInfo::Key::Key
Key(const std::string &m, uint32_t e, IfdId g)
Constructor.
Definition tiffcomposite_int.hpp:399
Exiv2::Internal::TiffMappingInfo::Key::m_
std::string m_
Camera make.
Definition tiffcomposite_int.hpp:400
Exiv2::Internal::TiffMappingInfo::Key::e_
uint32_t e_
Extended tag.
Definition tiffcomposite_int.hpp:401
Exiv2::Internal::TiffMappingInfo::Key::g_
IfdId g_
Group
Definition tiffcomposite_int.hpp:402
Exiv2::Internal::TiffMappingInfo
TIFF mapping table for functions to decode special cases.
Definition tiffcomposite_int.hpp:373
Exiv2::Internal::TiffMappingInfo::group_
IfdId group_
Group that contains the tag.
Definition tiffcomposite_int.hpp:390
Exiv2::Internal::TiffMappingInfo::make_
const char * make_
Camera make for which these mapping functions apply.
Definition tiffcomposite_int.hpp:388
Exiv2::Internal::TiffMappingInfo::tag
uint16_t tag() const
Return the tag corresponding to the extended tag.
Definition tiffcomposite_int.hpp:385
Exiv2::Internal::TiffMappingInfo::operator==
bool operator==(const Key &key) const
Compare a TiffMappingInfo with a TiffMappingInfo::Key. The two are equal if TiffMappingInfo::make_ eq...
Definition tiffcomposite_int.cpp:51
Exiv2::Internal::TiffMappingInfo::extendedTag_
uint32_t extendedTag_
Tag (32 bit so that it can contain special tags)
Definition tiffcomposite_int.hpp:389
Exiv2::Internal::TiffMappingInfo::decoderFct_
DecoderFct decoderFct_
Decoder function for matching tags.
Definition tiffcomposite_int.hpp:391
Exiv2::Internal::TiffMappingInfo::encoderFct_
EncoderFct encoderFct_
Encoder function for matching tags.
Definition tiffcomposite_int.hpp:392