27 #ifndef TIFFCOMPOSITE_INT_HPP_ 28 #define TIFFCOMPOSITE_INT_HPP_ 79 const uint32_t
none = 0x10000;
80 const uint32_t
root = 0x20000;
81 const uint32_t
next = 0x30000;
82 const uint32_t
all = 0x40000;
83 const uint32_t
pana = 0x80000;
101 uint16_t
tag()
const {
return static_cast<uint16_t>(extendedTag_ & 0xffff); }
111 uint32_t extendedTag_;
145 long write(
const byte* pData,
long wcount);
160 const byte* pHeader_;
232 void setStart(
const byte* pStart) { pStart_ = const_cast<byte*>(pStart); }
257 uint16_t
tag()
const {
return tag_; }
262 byte*
start()
const {
return pStart_; }
278 uint32_t& imageIdx)
const;
290 uint32_t
size()
const;
294 uint32_t
count()
const;
314 virtual int idx()
const;
337 uint32_t& imageIdx) =0;
349 uint32_t& imageIdx)
const =0;
354 virtual uint32_t
doSize()
const =0;
356 virtual uint32_t
doCount()
const =0;
465 int32_t
offset()
const {
return offset_; }
469 virtual int idx()
const;
474 const byte*
pData()
const {
return pData_; }
509 virtual uint32_t
doCount()
const;
519 uint32_t& imageIdx)
const;
527 virtual uint32_t
doSize()
const;
624 uint32_t baseOffset) =0;
629 uint16_t
szTag()
const {
return szTag_; }
637 const uint16_t szTag_;
638 const IfdId szGroup_;
661 pDataArea_(0), sizeDataArea_(0) {}
671 uint32_t baseOffset);
709 uint32_t& imageIdx)
const;
720 uint32_t sizeDataArea_;
753 uint32_t baseOffset);
789 uint32_t& imageIdx)
const;
797 virtual uint32_t
doSize()
const;
806 typedef std::vector<std::pair<const byte*, uint32_t> > Strips;
832 uint16_t
dtTag()
const {
return dtTag_; }
852 const uint16_t dtTag_;
853 const IfdId dtGroup_;
875 bool hasNext()
const {
return hasNext_; }
919 uint32_t& imageIdx)
const;
932 virtual uint32_t
doSize()
const;
937 virtual uint32_t
doCount()
const;
959 uint32_t writeDirEntry(
IoWrapper& ioWrapper,
966 uint32_t& imageIdx)
const;
1021 uint32_t& imageIdx);
1035 uint32_t& imageIdx)
const;
1058 typedef std::vector<TiffDirectory*> Ifds;
1106 uint32_t& imageIdx);
1113 virtual uint32_t
doCount()
const;
1120 virtual uint32_t
doSize()
const;
1159 bool hasNext =
true);
1238 uint32_t& imageIdx);
1252 uint32_t& imageIdx)
const;
1263 virtual uint32_t
doSize()
const;
1269 virtual uint32_t
doCount()
const;
1319 uint32_t
size(uint16_t tag,
IfdId group)
const;
1453 uint32_t& imageIdx);
1460 virtual uint32_t
doCount()
const;
1466 virtual uint32_t
doSize()
const;
1542 uint32_t& imageIdx);
1551 virtual uint32_t
doCount()
const;
1558 virtual uint32_t
doSize()
const;
1595 template<IfdId newGroup>
1602 template<IfdId newGroup>
1609 template<const ArrayCfg* arrayCfg,
int N, const ArrayDef (&arrayDef)[N]>
1618 template<const ArrayCfg* arrayCfg>
1626 template<const ArraySet* arraySet,
int N, CfgSelFct cfgSelFct>
1634 template<u
int16_t szTag, IfdId szGroup>
1642 template<u
int16_t dtTag, IfdId dtGroup>
1650 template<u
int16_t szTag, IfdId szGroup>
1658 template<u
int16_t dtTag, IfdId dtGroup>
1668 #endif // #ifndef TIFFCOMPOSITE_INT_HPP_ CryptFct cryptFct_
Crypt function, 0 if not used.
Definition: tiffcomposite_int.hpp:1337
This class is the basis for Makernote support in TIFF. It contains a pointer to a concrete Makernote....
Definition: tiffcomposite_int.hpp:1073
const TiffType ttTiffDouble
TIFF DOUBLE type.
Definition: tiffcomposite_int.hpp:67
TIFF composite visitor to read the TIFF structure from a block of memory and build the composite from...
Definition: tiffvisitor_int.hpp:630
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)
Implements encode().
Definition: tiffcomposite_int.cpp:972
bool concat_
If true, concatenate gaps between defined tags to single tags.
Definition: tiffcomposite_int.hpp:1340
Search key for TIFF mapping structures.
Definition: tiffcomposite_int.hpp:400
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:1245
const uint32_t next
Special tag: next IFD.
Definition: tiffcomposite_int.hpp:81
An interface for simple binary IO.
Definition: basicio.hpp:55
virtual uint32_t doCount() const
Implements count(). Returns the count from the element definition.
Definition: tiffcomposite_int.cpp:1065
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)
Implements encode().
Definition: tiffcomposite_int.cpp:987
virtual uint32_t doSize() const =0
Implements size().
TiffComponent::AutoPtr newTiffBinaryArray0(uint16_t tag, IfdId group)
Function to create and initialize a new binary array entry.
Definition: tiffcomposite_int.hpp:1610
uint32_t extendedTag_
Tag (32 bit so that it can contain special tags)
Definition: tiffcomposite_int.hpp:392
uint32_t count_
Number of components.
Definition: tiffcomposite_int.hpp:1323
std::vector< TiffComponent * > Components
Container type to hold all metadata.
Definition: tiffcomposite_int.hpp:179
virtual TiffComponent * doAddNext(TiffComponent::AutoPtr tiffComponent)
Implements addNext(). The default implementation does nothing.
Definition: tiffcomposite_int.cpp:863
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:1583
const TiffType ttUnsignedByte
Exif BYTE type.
Definition: tiffcomposite_int.hpp:56
virtual uint32_t doWrite(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t valueIdx, uint32_t dataIdx, uint32_t &imageIdx)=0
Implements write().
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:87
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:1309
IfdId dtGroup() const
Return the group of the related entry which has the data area.
Definition: tiffcomposite_int.hpp:835
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:1643
const TiffType ttSignedLong
Exif SLONG type.
Definition: tiffcomposite_int.hpp:64
TiffType tiffType_
TIFF type of the element.
Definition: tiffcomposite_int.hpp:1322
ByteOrder byteOrder() const
Return the byte order for the makernote. Requires the image byte order to be set (setImageByteOrder()...
Definition: tiffcomposite_int.cpp:519
TiffBinaryArray(uint16_t tag, IfdId group, const ArrayCfg *arrayCfg, const ArrayDef *arrayDef, int defSize)
Constructor.
Definition: tiffcomposite_int.cpp:128
virtual void setStrips(const Value *pSize, const byte *pData, uint32_t sizeData, uint32_t baseOffset)
Set the data areas ("strips").
Definition: tiffcomposite_int.cpp:400
Internal TIFF parser related typedefs and forward definitions.
Composite to model an array of different tags. The tag types as well as other aspects of the array ar...
Definition: tiffcomposite_int.hpp:1356
ByteOrder
Type to express the byte order (little or big endian)
Definition: types.hpp:113
Utility class containing a character array. All it does is to take care of memory allocation and dele...
Definition: types.hpp:204
virtual ~TiffDirectory()
Virtual destructor.
Definition: tiffcomposite_int.cpp:183
bool operator==(uint32_t idx) const
Comparison with idx.
Definition: tiffcomposite_int.hpp:1317
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:1544
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:570
ArrayDef elDefaultDef_
Default element.
Definition: tiffcomposite_int.hpp:1341
const byte * pData() const
Return a pointer to the binary representation of the value of this component.
Definition: tiffcomposite_int.hpp:474
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition: tiffcomposite_int.cpp:924
TiffComponent::AutoPtr newTiffMnEntry(uint16_t tag, IfdId group)
Function to create and initialize a new TIFF makernote entry.
Definition: tiffcomposite_int.cpp:1910
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:55
virtual uint32_t doSizeImage() const
Implements sizeImage(). Return the size of the image data area.
Definition: tiffcomposite_int.cpp:1827
TiffComponent::AutoPtr newTiffDirectory(uint16_t tag, IfdId)
Function to create and initialize a new TIFF directory.
Definition: tiffcomposite_int.hpp:1596
virtual void doAccept(TiffVisitor &visitor)=0
Implements accept().
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:967
uint32_t sizeHeader() const
Return the size of the header in bytes.
Definition: tiffcomposite_int.cpp:552
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:1744
TiffComponent::AutoPtr newTiffImageData(uint16_t tag, IfdId group)
Function to create and initialize a new TIFF entry for image data.
Definition: tiffcomposite_int.hpp:1651
virtual uint32_t doSizeImage() const
Implements sizeImage(). Return the sum of the image sizes of all sub-IFDs.
Definition: tiffcomposite_int.cpp:1808
TypeId
Exiv2 value type identifiers.
Definition: types.hpp:130
virtual TiffIfdMakernote * doClone() const
Internal virtual copy constructor, implements clone().
Definition: tiffcomposite_int.cpp:333
virtual uint32_t doSize() const
Implements size(). Return the size of the strip pointers.
Definition: tiffcomposite_int.cpp:1687
virtual uint32_t doSize() const
Implements size(). Returns count * type-size, both taken from the element definition.
Definition: tiffcomposite_int.cpp:1738
uint32_t e_
Extended tag.
Definition: tiffcomposite_int.hpp:404
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:465
TIFF composite visitor to decode metadata from the TIFF tree and add it to an Image,...
Definition: tiffvisitor_int.hpp:284
IfdId group_
Group for the elements.
Definition: tiffcomposite_int.hpp:1334
IoWrapper(BasicIo &io, const byte *pHeader, long size, OffsetWriter *pow)
Definition: tiffcomposite_int.cpp:63
virtual void setStrips(const Value *pSize, const byte *pData, uint32_t sizeData, uint32_t baseOffset)
Set the data areas ("strips").
Definition: tiffcomposite_int.cpp:467
const ArrayCfg * cfg() const
Return a pointer to the configuration.
Definition: tiffcomposite_int.hpp:1414
TiffComponent * addNext(AutoPtr tiffComponent)
Add a "next" component to the component. Default is to do nothing.
Definition: tiffcomposite_int.cpp:853
TiffIfdMakernote(uint16_t tag, IfdId group, IfdId mnGroup, MnHeader *pHeader, bool hasNext=true)
Default constructor.
Definition: tiffcomposite_int.cpp:115
const ArrayCfg cfg_
Binary array configuration.
Definition: tiffcomposite_int.hpp:1346
virtual uint32_t doSize() const
Implements size(). Return the size of a standard TIFF entry.
Definition: tiffcomposite_int.cpp:1682
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:1796
const int defSize_
Size of the array definition array.
Definition: tiffcomposite_int.hpp:1348
virtual uint32_t doWriteImage(IoWrapper &ioWrapper, ByteOrder byteOrder) const =0
Implements writeImage().
virtual ~TiffDataEntry()
Virtual destructor.
Definition: tiffcomposite_int.cpp:214
virtual uint32_t doCount() const
Implements count(). Todo: Document it!
Definition: tiffcomposite_int.cpp:1043
void setOffset(int32_t offset)
Set the offset.
Definition: tiffcomposite_int.hpp:438
const char * make_
Camera make for which these mapping functions apply.
Definition: tiffcomposite_int.hpp:391
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:1038
This abstract base class provides the common functionality of an IFD directory entry and defines an e...
Definition: tiffcomposite_int.hpp:414
uint32_t ifdOffset() const
Return the offset to the start of the Makernote IFD from the start of the Makernote....
Definition: tiffcomposite_int.cpp:513
virtual TiffComponent * doAddChild(AutoPtr tiffComponent)
Implements addChild(). The default implementation does nothing.
Definition: tiffcomposite_int.cpp:811
virtual TiffDataEntry * doClone() const
Internal virtual copy constructor, implements clone().
Definition: tiffcomposite_int.cpp:302
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition: tiffcomposite_int.cpp:944
const uint32_t none
Dummy tag.
Definition: tiffcomposite_int.hpp:79
const uint32_t all
Special tag: all tags in a group.
Definition: tiffcomposite_int.hpp:82
A TIFF IFD entry containing the size of a data area of a related TiffDataEntry. This component is use...
Definition: tiffcomposite_int.hpp:819
Combination of array configuration and definition for arrays.
Definition: tiffcomposite_int.hpp:1345
std::auto_ptr< TiffComponent > AutoPtr
TiffComponent auto_ptr type.
Definition: tiffcomposite_int.hpp:177
void setByteOrder(ByteOrder byteOrder)
Set the byte order for the makernote.
Definition: tiffcomposite_int.cpp:547
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:1017
TiffPathItem(uint32_t extendedTag, IfdId group)
Constructor.
Definition: tiffcomposite_int.hpp:95
byte * start() const
Return a pointer to the start of the binary representation of the component.
Definition: tiffcomposite_int.hpp:262
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:699
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:1487
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition: tiffcomposite_int.cpp:902
bool hasSize_
If true, first tag is the size element.
Definition: tiffcomposite_int.hpp:1338
Simple IO wrapper to ensure that the header is only written if there is any other data at all.
Definition: tiffcomposite_int.hpp:124
Type definitions for Exiv2 and related functionality.
const ArrayDef * elDef() const
Return the array definition of this element.
Definition: tiffcomposite_int.hpp:1522
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:653
virtual TiffDirectory * doClone() const
Internal virtual copy constructor, implements clone().
Definition: tiffcomposite_int.cpp:317
TiffComponent::AutoPtr newTiffBinaryArray2(uint16_t tag, IfdId group)
Function to create and initialize a new complex binary array entry.
Definition: tiffcomposite_int.hpp:1627
const TiffType ttUnsignedShort
Exif SHORT type.
Definition: tiffcomposite_int.hpp:58
DecoderFct decoderFct_
Decoder function for matching tags.
Definition: tiffcomposite_int.hpp:394
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:533
virtual TiffMnEntry * doClone() const
Internal virtual copy constructor, implements clone().
Definition: tiffcomposite_int.cpp:327
uint32_t extendedTag() const
Return the extended tag (32 bit so that it can contain special tags)
Definition: tiffcomposite_int.hpp:104
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:1858
IfdId group() const
Return the group.
Definition: tiffcomposite_int.hpp:106
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)
Implements encode().
Definition: tiffcomposite_int.cpp:977
uint32_t idx_
Index in bytes from the start.
Definition: tiffcomposite_int.hpp:1321
uint32_t size(uint16_t tag, IfdId group) const
Get the size in bytes of a tag.
Definition: tiffcomposite_int.cpp:564
virtual TiffEntry * doClone() const
Internal virtual copy constructor, implements clone().
Definition: tiffcomposite_int.cpp:297
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:984
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:1283
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)=0
Implements encode().
const ArrayDef * def_
Binary array definition array.
Definition: tiffcomposite_int.hpp:1347
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)
Implements encode().
Definition: tiffcomposite_int.cpp:1002
bool decoded() const
Return the flag which indicates if the array was decoded.
Definition: tiffcomposite_int.hpp:1420
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:539
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:1070
std::stack< TiffPathItem > TiffPath
Stack to hold a path from the TIFF root element to a TIFF entry.
Definition: tifffwd_int.hpp:111
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:1589
TiffType elTiffType_
Type for the array entry and the size element, if any.
Definition: tiffcomposite_int.hpp:1336
TiffSubIfd(uint16_t tag, IfdId group, IfdId newGroup)
Default constructor.
Definition: tiffcomposite_int.cpp:105
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:756
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)
Implements encode().
Definition: tiffcomposite_int.cpp:1007
virtual uint32_t doSizeData() const
Implements sizeData(). Return the sum of the sizes of all sub-IFDs.
Definition: tiffcomposite_int.cpp:1776
Interface class for components of a TIFF directory hierarchy (Composite pattern). Both TIFF directori...
Definition: tiffcomposite_int.hpp:174
virtual uint32_t doCount() const
Implements count(). Return number of components in the entry.
Definition: tiffcomposite_int.cpp:1027
virtual int idx() const
Return the unique id of the entry in the image.
Definition: tiffcomposite_int.cpp:349
const TiffType ttAsciiString
Exif ASCII type.
Definition: tiffcomposite_int.hpp:57
TiffType toTiffType(TypeId typeId)
Convert the Exiv2 typeId to a TIFF value type.
Definition: tiffcomposite_int.cpp:1877
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition: tiffcomposite_int.cpp:907
virtual uint32_t doSize() const
Implements size() by forwarding the call to the actual concrete Makernote, if there is one.
Definition: tiffcomposite_int.cpp:1697
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition: tiffcomposite_int.cpp:933
virtual TiffComponent * doClone() const =0
Internal virtual copy constructor, implements clone().
const TiffType ttTiffFloat
TIFF FLOAT type.
Definition: tiffcomposite_int.hpp:66
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:1388
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)
Implements encode().
Definition: tiffcomposite_int.cpp:982
void updateValue(Value::AutoPtr value, ByteOrder byteOrder)
Update the value. Takes ownership of the pointer passed in.
Definition: tiffcomposite_int.cpp:376
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:1465
void accept(TiffVisitor &visitor)
Interface to accept visitors (Visitor pattern). Visitors can perform operations on all components of ...
Definition: tiffcomposite_int.cpp:887
bool hasFillers_
If true, write all defined tags.
Definition: tiffcomposite_int.hpp:1339
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:734
int defSize() const
Return the number of elements in the definition.
Definition: tiffcomposite_int.hpp:1418
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:1599
virtual TiffComponent * doAddChild(TiffComponent::AutoPtr tiffComponent)
Implements addChild(). Todo: Document it!
Definition: tiffcomposite_int.cpp:845
Key(const std::string &m, uint32_t e, IfdId g)
Constructor.
Definition: tiffcomposite_int.hpp:402
uint16_t tag() const
Return the tag corresponding to the extended tag.
Definition: tiffcomposite_int.hpp:102
uint16_t TiffType
TIFF value type.
Definition: tiffcomposite_int.hpp:54
TiffEntryBase(uint16_t tag, IfdId group, TiffType tiffType=ttUndefined)
Default constructor.
Definition: tiffcomposite_int.cpp:97
TiffType tiffType() const
Return the TIFF type.
Definition: tiffcomposite_int.hpp:460
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition: tiffcomposite_int.cpp:892
virtual TiffComponent * doAddNext(AutoPtr tiffComponent)
Implements addNext(). The default implementation does nothing.
Definition: tiffcomposite_int.cpp:858
Abstract base class defining the interface for TIFF composite visitors (Visitor pattern)
Definition: tiffvisitor_int.hpp:73
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition: tiffcomposite_int.cpp:952
virtual TiffComponent * doAddChild(TiffComponent::AutoPtr tiffComponent)
Implements addChild(). The default implementation does nothing.
Definition: tiffcomposite_int.cpp:831
void setIdx(int idx)
Set the unique id of the entry in the image.
Definition: tiffcomposite_int.hpp:493
uint16_t szTag() const
Return the group of the entry which has the size.
Definition: tiffcomposite_int.hpp:630
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:614
uint32_t mnOffset() const
Return the offset to the makernote from the start of the TIFF header.
Definition: tiffcomposite_int.cpp:528
virtual TiffComponent * doAddChild(TiffComponent::AutoPtr tiffComponent)
Implements addChild(). The default implementation does nothing.
Definition: tiffcomposite_int.cpp:816
void setCount(uint32_t count)
Set the number of components in this entry.
Definition: tiffcomposite_int.hpp:491
A standard TIFF IFD entry.
Definition: tiffcomposite_int.hpp:566
IfdId szGroup() const
Return the group of the entry which has the size.
Definition: tiffcomposite_int.hpp:632
virtual ~TiffIfdMakernote()
Virtual destructor.
Definition: tiffcomposite_int.cpp:231
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:1785
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:1260
TiffBinaryElement(uint16_t tag, IfdId group)
Constructor.
Definition: tiffcomposite_int.cpp:170
void setElByteOrder(ByteOrder byteOrder)
Set the byte order of this element.
Definition: tiffcomposite_int.hpp:1514
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:639
const uint32_t pana
Special tag: root IFD of Panasonic RAW images.
Definition: tiffcomposite_int.hpp:83
uint32_t doSize() const
Implements size(). Return the size of the sub-Ifd pointers.
Definition: tiffcomposite_int.cpp:1692
virtual TiffComponent * doAddChild(TiffComponent::AutoPtr tiffComponent)
Implements addChild(). The default implementation does nothing.
Definition: tiffcomposite_int.cpp:840
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)
Implements encode().
Definition: tiffcomposite_int.cpp:997
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:647
virtual ~TiffSizeEntry()
Virtual destructor.
Definition: tiffcomposite_int.cpp:222
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:1635
uint16_t tag() const
Return the tag of this entry.
Definition: tiffcomposite_int.hpp:258
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:631
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition: tiffcomposite_int.cpp:962
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:1650
uint16_t dtTag() const
Return the group of the related entry which has the data area.
Definition: tiffcomposite_int.hpp:833
TiffDirectory(uint16_t tag, IfdId group, bool hasNext=true)
Default constructor.
Definition: tiffcomposite_int.hpp:867
virtual uint32_t doSizeData() const
Implements sizeData(). Return the size of the image data area.
Definition: tiffcomposite_int.cpp:1760
int putb(byte data)
Wraps the corresponding BasicIo::putb() method.
Definition: tiffcomposite_int.cpp:78
Additional configuration for a binary array.
Definition: tiffcomposite_int.hpp:1327
virtual ~TiffDataEntryBase()
Virtual destructor.
Definition: tiffcomposite_int.cpp:210
void(TiffEncoder::* EncoderFct)(TiffEntryBase *, const Exifdatum *)
Function pointer type for a TiffDecoder member function to decode a TIFF component.
Definition: tifffwd_int.hpp:88
TiffComponent::AutoPtr newTiffEntry(uint16_t tag, IfdId group)
Function to create and initialize a new TIFF entry.
Definition: tiffcomposite_int.cpp:1905
virtual uint32_t doSizeImage() const =0
Implements sizeImage().
TiffComponent::AutoPtr newTiffSubIfd(uint16_t tag, IfdId group)
Function to create and initialize a new TIFF sub-directory.
Definition: tiffcomposite_int.hpp:1603
virtual TiffComponent * doAddNext(TiffComponent::AutoPtr tiffComponent)
Implements addNext(). The default implementation does nothing.
Definition: tiffcomposite_int.cpp:873
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:1474
virtual ~TiffEntry()
Virtual destructor.
Definition: tiffcomposite_int.cpp:206
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:1609
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:598
void setDecoded(bool decoded)
Set a flag to indicate if the array was decoded.
Definition: tiffcomposite_int.hpp:1408
IPTC string type.
Definition: types.hpp:147
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:232
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:1496
Class to insert pointers or offsets to computed addresses at specific locations in an image....
Definition: tiffimage_int.hpp:426
const TiffType ttSignedByte
Exif SBYTE type.
Definition: tiffcomposite_int.hpp:61
virtual TiffBinaryElement * doClone() const
Internal virtual copy constructor, implements clone().
Definition: tiffcomposite_int.cpp:344
Tiff IFD Makernote. This is a concrete class suitable for all IFD makernotes.
Definition: tiffcomposite_int.hpp:1149
virtual uint32_t doSize() const
Implements size(). Todo: Document it!
Definition: tiffcomposite_int.cpp:1710
Common interface for all types of values used with metadata.
Definition: value.hpp:60
std::auto_ptr< Value > AutoPtr
Shortcut for a Value auto pointer.
Definition: value.hpp:63
virtual ~TiffComponent()
Virtual destructor.
Definition: tiffcomposite_int.cpp:179
const TiffType ttUnsignedLong
Exif LONG type.
Definition: tiffcomposite_int.hpp:59
TiffDataEntry(uint16_t tag, IfdId group, uint16_t szTag, IfdId szGroup)
Constructor.
Definition: tiffcomposite_int.hpp:659
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:1749
TiffDataEntryBase(uint16_t tag, IfdId group, uint16_t szTag, IfdId szGroup)
Constructor.
Definition: tiffcomposite_int.hpp:603
virtual ~TiffBinaryArray()
Virtual destructor.
Definition: tiffcomposite_int.cpp:236
TiffComponent::AutoPtr newTiffBinaryArray1(uint16_t tag, IfdId group)
Function to create and initialize a new simple binary array entry.
Definition: tiffcomposite_int.hpp:1619
virtual void setStrips(const Value *pSize, const byte *pData, uint32_t sizeData, uint32_t baseOffset)=0
Set the data areas ("strips").
std::string m_
Camera make.
Definition: tiffcomposite_int.hpp:403
A standard TIFF IFD entry consisting of a value which is an array of offsets to image data areas....
Definition: tiffcomposite_int.hpp:736
const TiffType ttUndefined
Exif UNDEFINED type.
Definition: tiffcomposite_int.hpp:62
IfdId g_
Group
Definition: tiffcomposite_int.hpp:405
void setElDef(const ArrayDef &def)
Set the array definition for this element.
Definition: tiffcomposite_int.hpp:1510
uint16_t tag() const
Return the tag corresponding to the extended tag.
Definition: tiffcomposite_int.hpp:388
ByteOrder elByteOrder() const
Return the byte order of this element.
Definition: tiffcomposite_int.hpp:1526
virtual uint32_t doSize() const
Implements size(). Return the size of the Makernote header, TIFF directory, values and additional dat...
Definition: tiffcomposite_int.cpp:1705
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:366
virtual TiffSubIfd * doClone() const
Internal virtual copy constructor, implements clone().
Definition: tiffcomposite_int.cpp:322
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:1898
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)
Implements encode().
Definition: tiffcomposite_int.cpp:992
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:1332
EncoderFct encoderFct_
Encoder function for matching tags.
Definition: tiffcomposite_int.hpp:395
void setValue(Value::AutoPtr value)
Set tag value. Takes ownership of the pointer passed in.
Definition: tiffcomposite_int.cpp:391
TiffMnEntry(uint16_t tag, IfdId group, IfdId mnGroup)
Default constructor.
Definition: tiffcomposite_int.cpp:110
IfdId group_
Group that contains the tag.
Definition: tiffcomposite_int.hpp:393
uint32_t count() const
Return the number of components in this component.
Definition: tiffcomposite_int.cpp:1012
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:1312
TiffComponent::AutoPtr newTiffBinaryElement(uint16_t tag, IfdId group)
Function to create and initialize a new binary array element.
Definition: tiffcomposite_int.cpp:1915
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition: tiffcomposite_int.cpp:912
virtual TiffBinaryArray * doClone() const
Internal virtual copy constructor, implements clone().
Definition: tiffcomposite_int.cpp:339
virtual TiffSizeEntry * doClone() const
Internal virtual copy constructor, implements clone().
Definition: tiffcomposite_int.cpp:312
const TiffType ttTiffIfd
TIFF IFD type.
Definition: tiffcomposite_int.hpp:68
Provides classes and functions to encode and decode Exif and Iptc data. The libexiv2 API consists of ...
Definition: asfvideo.hpp:36
void setImageByteOrder(ByteOrder byteOrder)
Set the byte order used for the image.
Definition: tiffcomposite_int.hpp:1179
This class models a TIFF directory (Ifd). It is a composite component of the TIFF tree.
Definition: tiffcomposite_int.hpp:861
const uint32_t root
Special tag: root IFD.
Definition: tiffcomposite_int.hpp:80
TIFF composite visitor to encode metadata from an image to the TIFF tree. The metadata containers and...
Definition: tiffvisitor_int.hpp:384
virtual TiffComponent * doAddPath(uint16_t tag, TiffPath &tiffPath, TiffComponent *const pRoot, TiffComponent::AutoPtr object)
Implements addPath(). Todo: Document it!
Definition: tiffcomposite_int.cpp:764
virtual TiffComponent * doAddNext(TiffComponent::AutoPtr tiffComponent)
Implements addNext(). The default implementation does nothing.
Definition: tiffcomposite_int.cpp:882
void(TiffDecoder::* DecoderFct)(const TiffEntryBase *)
Function pointer type for a TiffDecoder member function to decode a TIFF component.
Definition: tifffwd_int.hpp:83
TiffComponent(uint16_t tag, IfdId group)
Constructor.
Definition: tiffcomposite_int.cpp:92
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:1890
TiffImageEntry(uint16_t tag, IfdId group, uint16_t szTag, IfdId szGroup)
Constructor.
Definition: tiffcomposite_int.hpp:742
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:1659
An Exif metadatum, consisting of an ExifKey and a Value and methods to manipulate these.
Definition: exif.hpp:59
virtual uint32_t doWriteData(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t dataIdx, uint32_t &imageIdx) const =0
Implements writeData().
IfdId group() const
Return the group id of this component.
Definition: tiffcomposite_int.hpp:260
Element of a TiffBinaryArray.
Definition: tiffcomposite_int.hpp:1495
virtual uint32_t doSizeImage() const
Implements sizeImage(). Return the total image data size of the makernote IFD.
Definition: tiffcomposite_int.cpp:1817
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:1358
virtual ~TiffMnEntry()
Virtual destructor.
Definition: tiffcomposite_int.cpp:226
TiffSizeEntry(uint16_t tag, IfdId group, uint16_t dtTag, IfdId dtGroup)
Constructor.
Definition: tiffcomposite_int.hpp:824
const ArrayDef * def() const
Return a pointer to the definition.
Definition: tiffcomposite_int.hpp:1416
virtual ~TiffImageEntry()
Virtual destructor.
Definition: tiffcomposite_int.cpp:218
const Value * pValue() const
Return a const pointer to the converted value of this component.
Definition: tiffcomposite_int.hpp:476
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:558
ByteOrder imageByteOrder() const
Return the byte order used for the image.
Definition: tiffcomposite_int.hpp:1209
bool hasNext() const
Return true if the directory has a next pointer.
Definition: tiffcomposite_int.hpp:876
virtual uint32_t doCount() const
Implements count().
Definition: tiffcomposite_int.cpp:1022
virtual ~TiffBinaryElement()
Virtual destructor.
Definition: tiffcomposite_int.cpp:243
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition: tiffcomposite_int.cpp:897
virtual ~TiffEntryBase()
Virtual destructor.
Definition: tiffcomposite_int.cpp:198
virtual TiffComponent * doAddChild(TiffComponent::AutoPtr tiffComponent)
Implements addChild(). The default implementation does nothing.
Definition: tiffcomposite_int.cpp:823
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:1371
virtual uint32_t doSizeImage() const
Implements sizeImage(). Return 0.
Definition: tiffcomposite_int.cpp:1822
const TiffType ttUnsignedRational
Exif RATIONAL type.
Definition: tiffcomposite_int.hpp:60
bool updOrigDataBuf(const byte *pData, uint32_t size)
Update the original data buffer and its size, return true if successful.
Definition: tiffcomposite_int.cpp:604
virtual int idx() const
Return the unique id of the entry in the image.
Definition: tiffcomposite_int.cpp:354
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:1527
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:1339
long write(const byte *pData, long wcount)
Wraps the corresponding BasicIo::write() method.
Definition: tiffcomposite_int.cpp:69
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:1554
Defines one tag in a binary array.
Definition: tiffcomposite_int.hpp:1315
virtual uint32_t doSizeData() const
Implements sizeData(). Return 0.
Definition: tiffcomposite_int.cpp:1755
virtual uint32_t doSize() const
Implements size(). Return the size of the TIFF directory, values and additional data,...
Definition: tiffcomposite_int.cpp:1655
A tupel consisting of extended Tag and group used as an item in TIFF paths.
Definition: tiffcomposite_int.hpp:90
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:1080
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:1450
virtual uint32_t doSizeData() const =0
Implements sizeData().
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:1560
TiffComponent * addChild(AutoPtr tiffComponent)
Add a child to the component. Default is to do nothing.
Definition: tiffcomposite_int.cpp:806
ByteOrder byteOrder_
Byte order, invalidByteOrder to inherit.
Definition: tiffcomposite_int.hpp:1335
IfdId
Type to specify the IFD to which a metadata belongs.
Definition: tags_int.hpp:54
virtual uint32_t doSizeData() const
Implements sizeData(). Return the size of the data area.
Definition: tiffcomposite_int.cpp:1770
const TiffType ttSignedRational
Exif SRATIONAL type.
Definition: tiffcomposite_int.hpp:65
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:1791
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:1307
TIFF mapping table for functions to decode special cases.
Definition: tiffcomposite_int.hpp:376
void iniOrigDataBuf()
Initialize the original data buffer and its size from the base entry.
Definition: tiffcomposite_int.cpp:598
virtual TiffImageEntry * doClone() const
Internal virtual copy constructor, implements clone().
Definition: tiffcomposite_int.cpp:307
const TiffType ttSignedShort
Exif SSHORT type.
Definition: tiffcomposite_int.hpp:63
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:292
Value interface and concrete subclasses.
virtual ~TiffSubIfd()
Virtual destructor.
Definition: tiffcomposite_int.cpp:191
TiffEntry(uint16_t tag, IfdId group)
Constructor.
Definition: tiffcomposite_int.hpp:571
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:1510
virtual uint32_t doCount() const =0
Implements count().