Exiv2
tiffvisitor_int.hpp
1 // ***************************************************************** -*- C++ -*-
2 /*
3  * Copyright (C) 2004-2021 Exiv2 authors
4  * This program is part of the Exiv2 distribution.
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.
19  */
20 #ifndef TIFFVISITOR_INT_HPP_
21 #define TIFFVISITOR_INT_HPP_
22 
23 // *****************************************************************************
24 // included header files
25 #include "exif.hpp"
26 #include "tifffwd_int.hpp"
27 #include "types.hpp"
28 
29 // + standard includes
30 #include <memory>
31 #include <iostream>
32 #include <iomanip>
33 #include <cassert>
34 #include <map>
35 #include <set>
36 #include <vector>
37 
38 // *****************************************************************************
39 // namespace extensions
40 namespace Exiv2 {
41 
42  class IptcData;
43  class XmpData;
44 
45  namespace Internal {
46 
47 // *****************************************************************************
48 // class definitions
49 
65  class TiffVisitor {
66  public:
68  enum GoEvent {
73  // Note: If you add more events here, adjust the events_ constant too!
74  };
75 
76  private:
77  static const int events_ = 2;
78  bool go_[events_];
79 
80  public:
82 
83  TiffVisitor();
86  virtual ~TiffVisitor();
88 
90 
91 
102  void setGo(GoEvent event, bool go);
104  virtual void visitEntry(TiffEntry* object) =0;
106  virtual void visitDataEntry(TiffDataEntry* object) =0;
108  virtual void visitImageEntry(TiffImageEntry* object) =0;
110  virtual void visitSizeEntry(TiffSizeEntry* object) =0;
112  virtual void visitDirectory(TiffDirectory* object) =0;
117  virtual void visitDirectoryNext(TiffDirectory* object);
122  virtual void visitDirectoryEnd(TiffDirectory* object);
124  virtual void visitSubIfd(TiffSubIfd* object) =0;
126  virtual void visitMnEntry(TiffMnEntry* object) =0;
128  virtual void visitIfdMakernote(TiffIfdMakernote* object) =0;
130  virtual void visitIfdMakernoteEnd(TiffIfdMakernote* object);
132  virtual void visitBinaryArray(TiffBinaryArray* object) =0;
137  virtual void visitBinaryArrayEnd(TiffBinaryArray* object);
139  virtual void visitBinaryElement(TiffBinaryElement* object) =0;
141 
143 
144  bool go(GoEvent event) const;
147 
148  }; // class TiffVisitor
149 
156  class TiffFinder : public TiffVisitor {
157  public:
159 
160  TiffFinder(uint16_t tag, IfdId group)
162  : tag_(tag), group_(group), tiffComponent_(0) {}
164  virtual ~TiffFinder();
166 
168 
169  virtual void visitEntry(TiffEntry* object);
172  virtual void visitDataEntry(TiffDataEntry* object);
174  virtual void visitImageEntry(TiffImageEntry* object);
176  virtual void visitSizeEntry(TiffSizeEntry* object);
178  virtual void visitDirectory(TiffDirectory* object);
180  virtual void visitSubIfd(TiffSubIfd* object);
182  virtual void visitMnEntry(TiffMnEntry* object);
184  virtual void visitIfdMakernote(TiffIfdMakernote* object);
186  virtual void visitBinaryArray(TiffBinaryArray* object);
188  virtual void visitBinaryElement(TiffBinaryElement* object);
189 
191  void findObject(TiffComponent* object);
193  void init(uint16_t tag, IfdId group);
195 
197 
198 
202  TiffComponent* result() const { return tiffComponent_; }
204 
205  private:
206  uint16_t tag_;
207  IfdId group_;
208  TiffComponent* tiffComponent_;
209  }; // class TiffFinder
210 
216  class TiffCopier : public TiffVisitor {
217  public:
219 
220 
228  TiffCopier( TiffComponent* pRoot,
229  uint32_t root,
230  const TiffHeaderBase* pHeader,
231  const PrimaryGroups* pPrimaryGroups);
233  virtual ~TiffCopier();
235 
237 
238  virtual void visitEntry(TiffEntry* object);
241  virtual void visitDataEntry(TiffDataEntry* object);
243  virtual void visitImageEntry(TiffImageEntry* object);
245  virtual void visitSizeEntry(TiffSizeEntry* object);
247  virtual void visitDirectory(TiffDirectory* object);
249  virtual void visitSubIfd(TiffSubIfd* object);
251  virtual void visitMnEntry(TiffMnEntry* object);
253  virtual void visitIfdMakernote(TiffIfdMakernote* object);
255  virtual void visitBinaryArray(TiffBinaryArray* object);
257  virtual void visitBinaryElement(TiffBinaryElement* object);
258 
260  void copyObject(TiffComponent* object);
262 
263  private:
264  TiffComponent* pRoot_;
265  uint32_t root_;
266  const TiffHeaderBase* pHeader_;
267  const PrimaryGroups* pPrimaryGroups_;
268  }; // class TiffCopier
269 
276  class TiffDecoder : public TiffVisitor {
277  public:
279 
280 
285  TiffDecoder(
286  ExifData& exifData,
287  IptcData& iptcData,
288  XmpData& xmpData,
289  TiffComponent* const pRoot,
290  FindDecoderFct findDecoderFct
291  );
293  virtual ~TiffDecoder();
295 
297 
298  virtual void visitEntry(TiffEntry* object);
301  virtual void visitDataEntry(TiffDataEntry* object);
303  virtual void visitImageEntry(TiffImageEntry* object);
305  virtual void visitSizeEntry(TiffSizeEntry* object);
307  virtual void visitDirectory(TiffDirectory* object);
309  virtual void visitSubIfd(TiffSubIfd* object);
311  virtual void visitMnEntry(TiffMnEntry* object);
313  virtual void visitIfdMakernote(TiffIfdMakernote* object);
315  virtual void visitBinaryArray(TiffBinaryArray* object);
317  virtual void visitBinaryElement(TiffBinaryElement* object);
318 
320  void decodeTiffEntry(const TiffEntryBase* object);
322  void decodeStdTiffEntry(const TiffEntryBase* object);
324  void decodeIptc(const TiffEntryBase* object);
326  void decodeXmp(const TiffEntryBase* object);
328  void decodeCanonAFInfo(const TiffEntryBase* object);
330 
331  private:
333 
334 
342  void getObjData(byte const*& pData,
343  long& size,
344  uint16_t tag,
345  IfdId group,
346  const TiffEntryBase* object);
348 
349  private:
350  // DATA
351  ExifData& exifData_;
352  IptcData& iptcData_;
353  XmpData& xmpData_;
354  TiffComponent* const pRoot_;
355  const FindDecoderFct findDecoderFct_;
356  std::string make_;
357  bool decodedIptc_;
358 
359  }; // class TiffDecoder
360 
376  class TiffEncoder : public TiffVisitor {
377  public:
379 
380 
385  TiffEncoder(
386  const ExifData& exifData,
387  const IptcData& iptcData,
388  const XmpData& xmpData,
389  TiffComponent* pRoot,
390  const bool isNewImage,
391  const PrimaryGroups* pPrimaryGroups,
392  const TiffHeaderBase* pHeader,
393  FindEncoderFct findEncoderFct
394  );
396  virtual ~TiffEncoder();
398 
400 
401  virtual void visitEntry(TiffEntry* object);
404  virtual void visitDataEntry(TiffDataEntry* object);
406  virtual void visitImageEntry(TiffImageEntry* object);
408  virtual void visitSizeEntry(TiffSizeEntry* object);
410  virtual void visitDirectory(TiffDirectory* object);
412  virtual void visitDirectoryNext(TiffDirectory* object);
414  virtual void visitSubIfd(TiffSubIfd* object);
416  virtual void visitMnEntry(TiffMnEntry* object);
418  virtual void visitIfdMakernote(TiffIfdMakernote* object);
420  virtual void visitIfdMakernoteEnd(TiffIfdMakernote* object);
422  virtual void visitBinaryArray(TiffBinaryArray* object);
424  virtual void visitBinaryArrayEnd(TiffBinaryArray* object);
426  virtual void visitBinaryElement(TiffBinaryElement* object);
427 
447  void encodeTiffComponent(
448  TiffEntryBase* object,
449  const Exifdatum* datum =0
450  );
451 
453  void encodeBinaryElement(TiffBinaryElement* object, const Exifdatum* datum);
455  void encodeBinaryArray(TiffBinaryArray* object, const Exifdatum* datum);
457  void encodeDataEntry(TiffDataEntry* object, const Exifdatum* datum);
459  void encodeTiffEntry(TiffEntry* object, const Exifdatum* datum);
461  void encodeImageEntry(TiffImageEntry* object, const Exifdatum* datum);
463  void encodeMnEntry(TiffMnEntry* object, const Exifdatum* datum);
465  void encodeSizeEntry(TiffSizeEntry* object, const Exifdatum* datum);
467  void encodeSubIfd(TiffSubIfd* object, const Exifdatum* datum);
468 
470  void encodeTiffEntryBase(TiffEntryBase* object, const Exifdatum* datum);
472  void encodeOffsetEntry(TiffEntryBase* object, const Exifdatum* datum);
473 
475  // Todo void encodeNikonSubIfd(TiffEntryBase* object, const Exifdatum* datum);
476 
478  void encodeIptc(TiffEntryBase* object, const Exifdatum* datum);
491  void add(
492  TiffComponent* pRootDir,
493  TiffComponent* pSourceDir,
494  uint32_t root
495  );
497  void setDirty(bool flag =true);
499 
501 
502 
506  ByteOrder byteOrder() const { return byteOrder_; }
511  bool dirty() const;
513  WriteMethod writeMethod() const { return writeMethod_; }
515 
516  private:
518 
519 
524  void encodeIptc();
529  void encodeXmp();
531 
533 
534 
539  uint32_t updateDirEntry(byte* buf,
541  TiffComponent* pTiffComponent) const;
551  bool isImageTag(uint16_t tag, IfdId group) const;
553 
554  private:
555  // DATA
556  ExifData exifData_;
557  const IptcData& iptcData_;
558  const XmpData& xmpData_;
559  bool del_;
560  const TiffHeaderBase* pHeader_;
561  TiffComponent* pRoot_;
562  const bool isNewImage_;
563  const PrimaryGroups* pPrimaryGroups_;
564  TiffComponent* pSourceTree_;
565  ByteOrder byteOrder_;
566  ByteOrder origByteOrder_;
567  const FindEncoderFct findEncoderFct_;
568  std::string make_;
569  bool dirty_;
570  WriteMethod writeMethod_;
571 
572  }; // class TiffEncoder
573 
580  class TiffRwState {
581  public:
583 
586  uint32_t baseOffset)
587  : byteOrder_(byteOrder),
588  baseOffset_(baseOffset) {}
590 
592 
593 
597  ByteOrder byteOrder() const { return byteOrder_; }
609  uint32_t baseOffset() const { return baseOffset_; }
611 
612  private:
613  ByteOrder byteOrder_;
614  uint32_t baseOffset_;
615  }; // TiffRwState
616 
622  class TiffReader : public TiffVisitor {
623  public:
625 
626 
635  TiffReader(const byte* pData,
636  uint32_t size,
637  TiffComponent* pRoot,
638  TiffRwState state);
639 
641  virtual ~TiffReader();
643 
645 
646  virtual void visitEntry(TiffEntry* object);
649  virtual void visitDataEntry(TiffDataEntry* object);
651  virtual void visitImageEntry(TiffImageEntry* object);
653  virtual void visitSizeEntry(TiffSizeEntry* object);
655  virtual void visitDirectory(TiffDirectory* object);
657  virtual void visitSubIfd(TiffSubIfd* object);
659  virtual void visitMnEntry(TiffMnEntry* object);
661  virtual void visitIfdMakernote(TiffIfdMakernote* object);
663  virtual void visitIfdMakernoteEnd(TiffIfdMakernote* object);
665  virtual void visitBinaryArray(TiffBinaryArray* object);
667  virtual void visitBinaryElement(TiffBinaryElement* object);
668 
670  void readTiffEntry(TiffEntryBase* object);
672  void readDataEntryBase(TiffDataEntryBase* object);
679  void setMnState(const TiffRwState* state =0);
681  void setOrigState();
683  bool circularReference(const byte* start, IfdId group);
685  int nextIdx(IfdId group);
686 
696  void postProcess();
698 
700 
701  ByteOrder byteOrder() const;
704  uint32_t baseOffset() const;
706 
707  private:
708  typedef std::map<const byte*, IfdId> DirList;
709  typedef std::map<uint16_t, int> IdxSeq;
710  typedef std::vector<TiffComponent*> PostList;
711 
712  // DATA
713  const byte* pData_;
714  const uint32_t size_;
715  const byte* pLast_;
716  TiffComponent* const pRoot_;
717  TiffRwState* pState_;
718  TiffRwState origState_;
719  TiffRwState mnState_;
720  DirList dirList_;
721  IdxSeq idxSeq_;
722  PostList postList_;
723  bool postProc_;
724  }; // class TiffReader
725 
726 }} // namespace Internal, Exiv2
727 
728 #endif // #ifndef TIFFVISITOR_INT_HPP_
Exiv2::Internal::TiffVisitor::setGo
void setGo(GoEvent event, bool go)
Set the stop/go flag: true for go, false for stop.
Definition: tiffvisitor_int.cpp:92
Exiv2::Internal::TiffVisitor::~TiffVisitor
virtual ~TiffVisitor()
Virtual destructor.
Definition: tiffvisitor_int.cpp:88
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::TiffReader::visitDataEntry
virtual void visitDataEntry(TiffDataEntry *object)
Read a TIFF data entry from the data buffer.
Definition: tiffvisitor_int.cpp:1282
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::TiffCopier::visitIfdMakernote
virtual void visitIfdMakernote(TiffIfdMakernote *object)
Copy an IFD makernote if it is an image tag.
Definition: tiffvisitor_int.cpp:260
Exiv2::Internal::TiffReader::setMnState
void setMnState(const TiffRwState *state=0)
Set the state of the reader to one suitable for the Makernote.
Definition: tiffvisitor_int.cpp:1238
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::tag
uint16_t tag() const
Return the tag of this entry.
Definition: tiffcomposite_int.hpp:255
Exiv2::Internal::ArrayDef::tiffType_
TiffType tiffType_
TIFF type of the element.
Definition: tiffcomposite_int.hpp:1320
Exiv2::Internal::TiffVisitor::visitIfdMakernote
virtual void visitIfdMakernote(TiffIfdMakernote *object)=0
Operation to perform for an IFD makernote.
Exiv2::Internal::TiffCopier::visitImageEntry
virtual void visitImageEntry(TiffImageEntry *object)
Copy a TIFF image entry if it is an image tag.
Definition: tiffvisitor_int.cpp:235
Exiv2::Internal::TiffEntryBase::tiffType
TiffType tiffType() const
Return the TIFF type.
Definition: tiffcomposite_int.hpp:457
Exiv2::Internal::TiffFinder::visitMnEntry
virtual void visitMnEntry(TiffMnEntry *object)
Find tag and group in a TIFF makernote.
Definition: tiffvisitor_int.cpp:170
Exiv2::Internal::TiffFinder::visitBinaryArray
virtual void visitBinaryArray(TiffBinaryArray *object)
Find tag and group in a binary array.
Definition: tiffvisitor_int.cpp:180
Exiv2::Internal::TiffEncoder::visitIfdMakernote
virtual void visitIfdMakernote(TiffIfdMakernote *object)
Encode an IFD makernote.
Definition: tiffvisitor_int.cpp:803
Exiv2::Internal::TiffEncoder::encodeIptc
void encodeIptc(TiffEntryBase *object, const Exifdatum *datum)
Special encoder function to encode SubIFD contents to Image group if it contains primary image data.
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::TiffDecoder::decodeTiffEntry
void decodeTiffEntry(const TiffEntryBase *object)
Entry function, determines how to decode each tag.
Definition: tiffvisitor_int.cpp:537
Exiv2::Internal::TiffVisitor::visitSubIfd
virtual void visitSubIfd(TiffSubIfd *object)=0
Operation to perform for a TIFF sub-IFD.
Exiv2::Internal::TiffVisitor::visitSizeEntry
virtual void visitSizeEntry(TiffSizeEntry *object)=0
Operation to perform for a TIFF size entry.
Exiv2::Internal::TiffFinder::init
void init(uint16_t tag, IfdId group)
Initialize the Finder for a new search.
Definition: tiffvisitor_int.cpp:120
Exiv2::Internal::TiffEncoder::encodeDataEntry
void encodeDataEntry(TiffDataEntry *object, const Exifdatum *datum)
Callback encoder function for a data entry.
Definition: tiffvisitor_int.cpp:960
Exiv2::Internal::TiffReader::visitMnEntry
virtual void visitMnEntry(TiffMnEntry *object)
Read a TIFF makernote entry from the data buffer.
Definition: tiffvisitor_int.cpp:1465
Exiv2::DataBuf::pData_
byte * pData_
Pointer to the buffer, 0 if none has been allocated.
Definition: types.hpp:258
Exiv2::Internal::TiffEncoder::visitMnEntry
virtual void visitMnEntry(TiffMnEntry *object)
Encode a TIFF makernote.
Definition: tiffvisitor_int.cpp:789
Exiv2::Internal::TiffEncoder::~TiffEncoder
virtual ~TiffEncoder()
Virtual destructor.
Definition: tiffvisitor_int.cpp:623
Exiv2::Internal::TiffEncoder::encodeMnEntry
void encodeMnEntry(TiffMnEntry *object, const Exifdatum *datum)
Callback encoder function for a Makernote entry.
Definition: tiffvisitor_int.cpp:1071
exif.hpp
Encoding and decoding of Exif data.
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::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::ExifData::findKey
iterator findKey(const ExifKey &key)
Find the first Exifdatum with the given key, return an iterator to it.
Definition: exif.cpp:605
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::TiffEncoder::encodeOffsetEntry
void encodeOffsetEntry(TiffEntryBase *object, const Exifdatum *datum)
Special encoder function for an offset entry.
Definition: tiffvisitor_int.cpp:1112
Exiv2::Internal::TiffVisitor
Abstract base class defining the interface for TIFF composite visitors (Visitor pattern)
Definition: tiffvisitor_int.hpp:65
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::ExifData::add
void add(const ExifKey &key, const Value *pValue)
Add an Exifdatum from the supplied key and value pair. This method copies (clones) key and value....
Definition: exif.cpp:588
Exiv2::Internal::TiffEncoder::visitDataEntry
virtual void visitDataEntry(TiffDataEntry *object)
Encode a TIFF data entry.
Definition: tiffvisitor_int.cpp:729
Exiv2::Internal::TiffEncoder::visitSubIfd
virtual void visitSubIfd(TiffSubIfd *object)
Encode a TIFF sub-IFD.
Definition: tiffvisitor_int.cpp:784
Exiv2::make
EXIV2API ExifData::const_iterator make(const ExifData &ed)
Return the camera make.
Definition: easyaccess.cpp:437
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::TiffReader::visitBinaryElement
virtual void visitBinaryElement(TiffBinaryElement *object)
Read an element of a binary array from the data buffer.
Definition: tiffvisitor_int.cpp:1734
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::TiffEncoder::TiffEncoder
TiffEncoder(const ExifData &exifData, const IptcData &iptcData, const XmpData &xmpData, TiffComponent *pRoot, const bool isNewImage, const PrimaryGroups *pPrimaryGroups, const TiffHeaderBase *pHeader, FindEncoderFct findEncoderFct)
Constructor, taking the root element of the composite to encode to, the image with the metadata to en...
Definition: tiffvisitor_int.cpp:574
Exiv2::Exifdatum::idx
int idx() const
Return the index (unique id of this key within the original IFD)
Definition: exif.cpp:374
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::Exifdatum
An Exif metadatum, consisting of an ExifKey and a Value and methods to manipulate these.
Definition: exif.hpp:59
Exiv2::Internal::TiffCopier::visitEntry
virtual void visitEntry(TiffEntry *object)
Copy a TIFF entry if it is an image tag.
Definition: tiffvisitor_int.cpp:225
Exiv2::Internal::TiffEncoder::encodeSizeEntry
void encodeSizeEntry(TiffSizeEntry *object, const Exifdatum *datum)
Callback encoder function for a size entry.
Definition: tiffvisitor_int.cpp:1077
Exiv2::Internal::TiffHeaderBase
Abstract base class defining the interface of an image header. Used internally by classes for TIFF-ba...
Definition: tiffimage_int.hpp:52
Exiv2::Internal::TiffBinaryElement
Element of a TiffBinaryArray.
Definition: tiffcomposite_int.hpp:1493
Exiv2::Internal::IfdId
IfdId
Type to specify the IFD to which a metadata belongs.
Definition: tags_int.hpp:46
Exiv2::Internal::TiffEncoder::encodeTiffComponent
void encodeTiffComponent(TiffEntryBase *object, const Exifdatum *datum=0)
Top level encoder function. Determines how to encode each TIFF component. This function is called by ...
Definition: tiffvisitor_int.cpp:890
Exiv2::ExifData::begin
iterator begin()
Begin of the metadata.
Definition: exif.hpp:490
Exiv2::Internal::TiffReader::visitDirectory
virtual void visitDirectory(TiffDirectory *object)
Read a TIFF directory from the data buffer.
Definition: tiffvisitor_int.cpp:1335
Exiv2::ExifData::const_iterator
ExifMetadata::const_iterator const_iterator
ExifMetadata const iterator type.
Definition: exif.hpp:439
Exiv2::Internal::TiffDecoder::~TiffDecoder
virtual ~TiffDecoder()
Virtual destructor.
Definition: tiffvisitor_int.cpp:307
Exiv2::Internal::TiffVisitor::go
bool go(GoEvent event) const
Check if stop flag for event is clear, return true if it's clear.
Definition: tiffvisitor_int.cpp:98
Exiv2::Value::typeId
TypeId typeId() const
Return the type identifier (Exif data format type).
Definition: value.hpp:104
Exiv2::Internal::TiffEncoder::encodeSubIfd
void encodeSubIfd(TiffSubIfd *object, const Exifdatum *datum)
Callback encoder function for a sub-IFD entry.
Definition: tiffvisitor_int.cpp:1082
Exiv2::Internal::TiffVisitor::visitBinaryArray
virtual void visitBinaryArray(TiffBinaryArray *object)=0
Operation to perform for a binary array.
Exiv2::Internal::TiffComponent::count
uint32_t count() const
Return the number of components in this component.
Definition: tiffcomposite_int.cpp:1008
Exiv2::IptcParser::decode
static int decode(IptcData &iptcData, const byte *pData, uint32_t size)
Decode binary IPTC data in IPTC IIM4 format from a buffer pData of length size to the provided metada...
Definition: iptc.cpp:433
Exiv2::Internal::TiffEncoder::encodeImageEntry
void encodeImageEntry(TiffImageEntry *object, const Exifdatum *datum)
Callback encoder function for an image entry.
Definition: tiffvisitor_int.cpp:999
Exiv2::Internal::TiffCopier::~TiffCopier
virtual ~TiffCopier()
Virtual destructor.
Definition: tiffvisitor_int.cpp:204
Exiv2::Internal::TiffCopier::copyObject
void copyObject(TiffComponent *object)
Check if object is an image tag and if so, copy it to the target tree.
Definition: tiffvisitor_int.cpp:208
Exiv2::Photoshop::locateIptcIrb
static int locateIptcIrb(const byte *pPsData, long sizePsData, const byte **record, uint32_t *const sizeHdr, uint32_t *const sizeData)
Forwards to locateIrb() with psTag = iptc_.
Definition: jpgimage.cpp:229
Exiv2::Internal::ttTiffIfd
const TiffType ttTiffIfd
TIFF IFD type.
Definition: tiffcomposite_int.hpp:61
Exiv2::Internal::TiffIfdMakernote::setByteOrder
void setByteOrder(ByteOrder byteOrder)
Set the byte order for the makernote.
Definition: tiffcomposite_int.cpp:543
Exiv2::signedShort
@ signedShort
Exif SSHORT type, a 16-bit (2-byte) signed (twos-complement) integer.
Definition: types.hpp:127
Exiv2::ExifData::erase
iterator erase(iterator pos)
Delete the Exifdatum at iterator position pos, return the position of the next exifdatum....
Definition: exif.cpp:631
Exiv2::TagInfo::name_
const char * name_
One word tag label.
Definition: tags.hpp:88
Exiv2::Internal::TiffVisitor::visitMnEntry
virtual void visitMnEntry(TiffMnEntry *object)=0
Operation to perform for the makernote component.
Exiv2::Internal::TiffVisitor::geTraverse
@ geTraverse
Signal to control traversing of the composite tree.
Definition: tiffvisitor_int.hpp:70
Exiv2::Internal::TiffCopier::TiffCopier
TiffCopier(TiffComponent *pRoot, uint32_t root, const TiffHeaderBase *pHeader, const PrimaryGroups *pPrimaryGroups)
Constructor.
Definition: tiffvisitor_int.cpp:190
Exiv2::Internal::TiffFinder::result
TiffComponent * result() const
Return the search result. 0 if no TIFF component was found for the tag and group combination.
Definition: tiffvisitor_int.hpp:202
Exiv2::Internal::TiffEntry
A standard TIFF IFD entry.
Definition: tiffcomposite_int.hpp:563
Exiv2::Value::create
static AutoPtr create(TypeId typeId)
A (simple) factory to create a Value type.
Definition: value.cpp:93
Exiv2::Internal::TiffComponent
Interface class for components of a TIFF directory hierarchy (Composite pattern). Both TIFF directori...
Definition: tiffcomposite_int.hpp:171
Exiv2::Exifdatum::groupName
std::string groupName() const
Return the name of the metadata group (which is also the second part of the key)
Definition: exif.cpp:344
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::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::TiffReader::visitBinaryArray
virtual void visitBinaryArray(TiffBinaryArray *object)
Read a binary array from the data buffer.
Definition: tiffvisitor_int.cpp:1654
Exiv2::Internal::TiffDecoder::visitSizeEntry
virtual void visitSizeEntry(TiffSizeEntry *object)
Decode a TIFF size entry.
Definition: tiffvisitor_int.cpp:326
Exiv2::Value::count
virtual long count() const =0
Return the number of components of the value.
Exiv2::Internal::TiffEncoder::visitBinaryArray
virtual void visitBinaryArray(TiffBinaryArray *object)
Encode a binary array.
Definition: tiffvisitor_int.cpp:839
Exiv2::Internal::ArrayDef::idx_
uint32_t idx_
Index in bytes from the start.
Definition: tiffcomposite_int.hpp:1319
Exiv2::ExifData::end
iterator end()
End of the metadata.
Definition: exif.hpp:492
Exiv2::Internal::Tag::next
const uint32_t next
Special tag: next IFD.
Definition: tiffcomposite_int.hpp:74
Exiv2::unsignedLong
@ unsignedLong
Exif LONG type, 32-bit (4-byte) unsigned integer.
Definition: types.hpp:123
Exiv2::Internal::TiffVisitor::visitDirectoryEnd
virtual void visitDirectoryEnd(TiffDirectory *object)
Operation to perform for a TIFF directory, at the end of the processing.
Definition: tiffvisitor_int.cpp:108
Exiv2::Internal::TiffReader::visitIfdMakernoteEnd
virtual void visitIfdMakernoteEnd(TiffIfdMakernote *object)
Reset reader to its original state, undo makernote specific settings.
Definition: tiffvisitor_int.cpp:1521
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::TiffEntryBase::idx
virtual int idx() const
Return the unique id of the entry in the image.
Definition: tiffcomposite_int.cpp:350
Exiv2::Internal::TiffDecoder::visitMnEntry
virtual void visitMnEntry(TiffMnEntry *object)
Decode a TIFF makernote.
Definition: tiffvisitor_int.cpp:341
Exiv2::Internal::TiffEncoder::visitDirectoryNext
virtual void visitDirectoryNext(TiffDirectory *object)
Update directory entries.
Definition: tiffvisitor_int.cpp:749
Exiv2::Internal::TiffComponent::group
IfdId group() const
Return the group id of this component.
Definition: tiffcomposite_int.hpp:257
Exiv2::Internal::FindEncoderFct
EncoderFct(* FindEncoderFct)(const std::string &make, uint32_t extendedTag, IfdId group)
Type for a function pointer for a function to encode a TIFF component.
Definition: tifffwd_int.hpp:91
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::TiffCreator::getPath
static void getPath(TiffPath &tiffPath, uint32_t extendedTag, IfdId group, uint32_t root)
Get the path, i.e., a list of extended tag and group pairs, from the root TIFF element to the TIFF en...
Definition: tiffimage_int.cpp:1701
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::groupName
const char * groupName(IfdId ifdId)
Return the group name for a group id.
Definition: tags_int.cpp:2540
Exiv2::Internal::TiffDecoder::decodeCanonAFInfo
void decodeCanonAFInfo(const TiffEntryBase *object)
Decode Exif.Canon.AFInfo.
Definition: tiffvisitor_int.cpp:471
Exiv2::Internal::TiffDirectory::hasNext
bool hasNext() const
Return true if the directory has a next pointer.
Definition: tiffcomposite_int.hpp:874
Exiv2::Internal::TiffFinder::visitDataEntry
virtual void visitDataEntry(TiffDataEntry *object)
Find tag and group in a TIFF data entry.
Definition: tiffvisitor_int.cpp:145
Exiv2::Internal::TiffEncoder::encodeBinaryArray
void encodeBinaryArray(TiffBinaryArray *object, const Exifdatum *datum)
Callback encoder function for a binary array.
Definition: tiffvisitor_int.cpp:950
Exiv2::Internal::TiffDecoder::visitDirectory
virtual void visitDirectory(TiffDirectory *object)
Decode a TIFF directory.
Definition: tiffvisitor_int.cpp:331
Exiv2::ExifKey::idx
int idx() const
Return the index (unique id of this key within the original Exif data, 0 if not set)
Definition: tags.cpp:425
Exiv2::Internal::TiffDecoder::visitBinaryArray
virtual void visitBinaryArray(TiffBinaryArray *object)
Decode a binary array.
Definition: tiffvisitor_int.cpp:562
Exiv2::Internal::TiffDecoder::visitIfdMakernote
virtual void visitIfdMakernote(TiffIfdMakernote *object)
Decode an IFD makernote.
Definition: tiffvisitor_int.cpp:347
Exiv2::Internal::TiffEncoder::writeMethod
WriteMethod writeMethod() const
Return the write method used.
Definition: tiffvisitor_int.hpp:513
Exiv2::hexdump
EXIV2API void hexdump(std::ostream &os, const byte *buf, long len, long offset=0)
Print len bytes from buf in hex and ASCII format to the given stream, prefixed with the position in t...
Definition: types.cpp:513
Exiv2::Internal::TiffDecoder::visitDataEntry
virtual void visitDataEntry(TiffDataEntry *object)
Decode a TIFF data entry.
Definition: tiffvisitor_int.cpp:316
Exiv2::Internal::TiffCopier::visitDirectory
virtual void visitDirectory(TiffDirectory *object)
Copy a TIFF directory if it is an image tag.
Definition: tiffvisitor_int.cpp:245
Exiv2::Internal::TiffFinder::~TiffFinder
virtual ~TiffFinder()
Virtual destructor.
Definition: tiffvisitor_int.cpp:128
Exiv2::Internal::ArrayCfg
Additional configuration for a binary array.
Definition: tiffcomposite_int.hpp:1325
Exiv2::Internal::TiffEncoder::byteOrder
ByteOrder byteOrder() const
Return the applicable byte order. May be different for the Makernote and the rest of the TIFF entries...
Definition: tiffvisitor_int.hpp:506
Exiv2::Internal::TiffEncoder::encodeTiffEntryBase
void encodeTiffEntryBase(TiffEntryBase *object, const Exifdatum *datum)
Special encoder function for the base part of a TIFF entry.
Definition: tiffvisitor_int.cpp:1087
Exiv2::Internal::TiffEncoder::visitImageEntry
virtual void visitImageEntry(TiffImageEntry *object)
Encode a TIFF image entry.
Definition: tiffvisitor_int.cpp:734
Exiv2::Internal::TiffReader::nextIdx
int nextIdx(IfdId group)
Return the next idx sequence number for group.
Definition: tiffvisitor_int.cpp:1319
Exiv2::Internal::TiffFinder::visitSizeEntry
virtual void visitSizeEntry(TiffSizeEntry *object)
Find tag and group in a TIFF size entry.
Definition: tiffvisitor_int.cpp:155
Exiv2::Internal::TiffVisitor::visitDataEntry
virtual void visitDataEntry(TiffDataEntry *object)=0
Operation to perform for a TIFF data entry.
Exiv2::Internal::ttUnsignedLong
const TiffType ttUnsignedLong
Exif LONG type.
Definition: tiffcomposite_int.hpp:52
Exiv2::Internal::FindDecoderFct
DecoderFct(* FindDecoderFct)(const std::string &make, uint32_t extendedTag, IfdId group)
Type for a function pointer for a function to decode a TIFF component.
Definition: tifffwd_int.hpp:85
Exiv2::Internal::TiffReader::visitEntry
virtual void visitEntry(TiffEntry *object)
Read a TIFF entry from the data buffer.
Definition: tiffvisitor_int.cpp:1277
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::TiffFinder
Search the composite for a component with tag and group. Return a pointer to the component or 0,...
Definition: tiffvisitor_int.hpp:156
Exiv2::Internal::TiffReader::TiffReader
TiffReader(const byte *pData, uint32_t size, TiffComponent *pRoot, TiffRwState state)
Constructor. The data buffer and table describing the TIFF structure of the data are set in the const...
Definition: tiffvisitor_int.cpp:1211
Exiv2::Internal::TiffDecoder::visitBinaryElement
virtual void visitBinaryElement(TiffBinaryElement *object)
Decode an element of a binary array.
Definition: tiffvisitor_int.cpp:569
Exiv2::Internal::TiffCopier::visitMnEntry
virtual void visitMnEntry(TiffMnEntry *object)
Copy a TIFF makernote if it is an image tag.
Definition: tiffvisitor_int.cpp:255
Exiv2::Internal::TiffEncoder::dirty
bool dirty() const
True if any tag was deleted or allocated in the process of visiting a TIFF composite tree.
Definition: tiffvisitor_int.cpp:718
Exiv2::Internal::ttSignedLong
const TiffType ttSignedLong
Exif SLONG type.
Definition: tiffcomposite_int.hpp:57
Exiv2::Internal::TiffFinder::visitEntry
virtual void visitEntry(TiffEntry *object)
Find tag and group in a TIFF entry.
Definition: tiffvisitor_int.cpp:140
Exiv2::Internal::TiffDataEntryBase::szGroup
IfdId szGroup() const
Return the group of the entry which has the size.
Definition: tiffcomposite_int.hpp:629
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::Internal::TiffBinaryArray::decoded
bool decoded() const
Return the flag which indicates if the array was decoded.
Definition: tiffcomposite_int.hpp:1418
Exiv2::unsignedByte
@ unsignedByte
Exif BYTE type, 8-bit unsigned integer.
Definition: types.hpp:120
Exiv2::us2Data
EXIV2API long us2Data(byte *buf, uint16_t s, ByteOrder byteOrder)
Convert an unsigned short to data, write the data to the buffer, return number of bytes written.
Definition: types.cpp:390
Exiv2::Internal::TiffEncoder::encodeTiffEntry
void encodeTiffEntry(TiffEntry *object, const Exifdatum *datum)
Callback encoder function for a standard TIFF entry.
Definition: tiffvisitor_int.cpp:994
Exiv2::Internal::TiffVisitor::visitEntry
virtual void visitEntry(TiffEntry *object)=0
Operation to perform for a TIFF entry.
Exiv2::Internal::PrimaryGroups
std::vector< IfdId > PrimaryGroups
Type for a list of primary image groups.
Definition: tifffwd_int.hpp:107
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::ExifKey
Concrete keys for Exif metadata and access to Exif tag reference data.
Definition: tags.hpp:140
Exiv2::Value::toString
std::string toString() const
Return the value as a string. Implemented in terms of write(std::ostream& os) const of the concrete c...
Definition: value.cpp:168
Exiv2::DataBuf::size_
long size_
The current size of the buffer.
Definition: types.hpp:260
Exiv2::Internal::TiffReader::visitImageEntry
virtual void visitImageEntry(TiffImageEntry *object)
Read a TIFF image entry from the data buffer.
Definition: tiffvisitor_int.cpp:1287
Exiv2::getLong
EXIV2API int32_t getLong(const byte *buf, ByteOrder byteOrder)
Read a 4 byte signed long value from the data buffer.
Definition: types.cpp:323
Exiv2::Internal::TiffReader::visitSizeEntry
virtual void visitSizeEntry(TiffSizeEntry *object)
Read a TIFF size entry from the data buffer.
Definition: tiffvisitor_int.cpp:1292
Exiv2::XmpParser::encode
static int encode(std::string &xmpPacket, const XmpData &xmpData, uint16_t formatFlags=useCompactFormat, uint32_t padding=0)
Encode (serialize) XMP metadata from xmpData into a string xmpPacket. The XMP packet returned in the ...
Definition: xmp.cpp:1000
Exiv2::Internal::TiffDecoder::visitEntry
virtual void visitEntry(TiffEntry *object)
Decode a TIFF entry.
Definition: tiffvisitor_int.cpp:311
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::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::TiffDecoder::visitImageEntry
virtual void visitImageEntry(TiffImageEntry *object)
Decode a TIFF image entry.
Definition: tiffvisitor_int.cpp:321
Exiv2::ExifTags::tagList
static const TagInfo * tagList(const std::string &groupName)
Return read-only list of built-in groupName tags.
Definition: tags.cpp:177
Exiv2::Internal::TiffReader::baseOffset
uint32_t baseOffset() const
Return the base offset. See class TiffRwState for details.
Definition: tiffvisitor_int.cpp:1258
Exiv2::Internal::TiffEncoder::encodeBinaryElement
void encodeBinaryElement(TiffBinaryElement *object, const Exifdatum *datum)
Callback encoder function for an element of a binary array.
Definition: tiffvisitor_int.cpp:955
Exiv2::Internal::TiffDecoder::decodeStdTiffEntry
void decodeStdTiffEntry(const TiffEntryBase *object)
Decode a standard TIFF entry.
Definition: tiffvisitor_int.cpp:553
Exiv2::Internal::TiffRwState
Simple state class containing relevant state information for the TIFF reader. This is in a separate c...
Definition: tiffvisitor_int.hpp:580
Exiv2::Internal::TiffEncoder::add
void add(TiffComponent *pRootDir, TiffComponent *pSourceDir, uint32_t root)
Add metadata from image to the TIFF composite.
Definition: tiffvisitor_int.cpp:1138
Exiv2::Internal::TiffBinaryElement::elByteOrder
ByteOrder elByteOrder() const
Return the byte order of this element.
Definition: tiffcomposite_int.hpp:1524
Exiv2::Value::toLong
virtual long toLong(long n=0) const =0
Convert the n-th component of the value to a long. The behaviour of this method may be undefined if t...
Exiv2::ExifData::count
long count() const
Get the number of metadata entries.
Definition: exif.hpp:514
Exiv2::unsignedShort
@ unsignedShort
Exif SHORT type, 16-bit (2-byte) unsigned integer.
Definition: types.hpp:122
Exiv2::Internal::ArrayDef::count_
uint32_t count_
Number of components.
Definition: tiffcomposite_int.hpp:1321
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::TiffVisitor::visitBinaryElement
virtual void visitBinaryElement(TiffBinaryElement *object)=0
Operation to perform for an element of a binary array.
Exiv2
Provides classes and functions to encode and decode Exif and Iptc data. The libexiv2 API consists of ...
Definition: asfvideo.hpp:36
Exiv2::ExifKey::key
virtual std::string key() const
Return the key of the metadatum as a string. The key is of the form 'familyName.groupName....
Definition: tags.cpp:367
Exiv2::XmpData
A container for XMP data. This is a top-level class of the Exiv2 library.
Definition: xmp_exiv2.hpp:166
Exiv2::Internal::TiffReader::~TiffReader
virtual ~TiffReader()
Virtual destructor.
Definition: tiffvisitor_int.cpp:1229
Exiv2::Internal::TiffFinder::visitBinaryElement
virtual void visitBinaryElement(TiffBinaryElement *object)
Find tag and group in an element of a binary array.
Definition: tiffvisitor_int.cpp:185
Exiv2::Internal::TiffVisitor::visitImageEntry
virtual void visitImageEntry(TiffImageEntry *object)=0
Operation to perform for a TIFF image entry.
Exiv2::Internal::ArrayCfg::cryptFct_
CryptFct cryptFct_
Crypt function, 0 if not used.
Definition: tiffcomposite_int.hpp:1335
Exiv2::TypeId
TypeId
Exiv2 value type identifiers.
Definition: types.hpp:119
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::TiffRwState::baseOffset
uint32_t baseOffset() const
Return the base offset.
Definition: tiffvisitor_int.hpp:609
Exiv2::Exifdatum::size
long size() const
Return the size of the value in bytes.
Definition: exif.cpp:404
Exiv2::Internal::TiffDataEntryBase::szTag
uint16_t szTag() const
Return the group of the entry which has the size.
Definition: tiffcomposite_int.hpp:627
Exiv2::ul2Data
EXIV2API long ul2Data(byte *buf, uint32_t l, ByteOrder byteOrder)
Convert an unsigned long to data, write the data to the buffer, return number of bytes written.
Definition: types.cpp:403
Exiv2::Internal::TiffVisitor::visitBinaryArrayEnd
virtual void visitBinaryArrayEnd(TiffBinaryArray *object)
Operation to perform for a TIFF binary array, at the end of the processing.
Definition: tiffvisitor_int.cpp:116
Exiv2::Internal::TiffDecoder::decodeXmp
void decodeXmp(const TiffEntryBase *object)
Decode XMP packet from an XMLPacket tag.
Definition: tiffvisitor_int.cpp:386
Exiv2::Internal::TiffCreator::create
static std::auto_ptr< TiffComponent > create(uint32_t extendedTag, IfdId group)
Create the TiffComponent for TIFF entry extendedTag and group. The embedded lookup table is used to f...
Definition: tiffimage_int.cpp:1675
Exiv2::Internal::TiffReader::readDataEntryBase
void readDataEntryBase(TiffDataEntryBase *object)
Read a TiffDataEntryBase from the data buffer.
Definition: tiffvisitor_int.cpp:1264
Exiv2::TagInfo
Tag information.
Definition: tags.hpp:74
Exiv2::Internal::TiffBinaryArray::cfg
const ArrayCfg * cfg() const
Return a pointer to the configuration.
Definition: tiffcomposite_int.hpp:1412
EXV_WARNING
#define EXV_WARNING
Shorthand for a temp warning log message object and return its ostringstream.
Definition: error.hpp:148
Exiv2::Internal::TiffCopier::visitSizeEntry
virtual void visitSizeEntry(TiffSizeEntry *object)
Copy a TIFF size entry if it is an image tag.
Definition: tiffvisitor_int.cpp:240
Exiv2::Internal::ttUndefined
const TiffType ttUndefined
Exif UNDEFINED type.
Definition: tiffcomposite_int.hpp:55
Exiv2::Internal::TiffCopier::visitDataEntry
virtual void visitDataEntry(TiffDataEntry *object)
Copy a TIFF data entry if it is an image tag.
Definition: tiffvisitor_int.cpp:230
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::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::TiffType
uint16_t TiffType
TIFF value type.
Definition: tiffcomposite_int.hpp:47
Exiv2::Internal::TiffCopier
Copy all image tags from the source tree (the tree that is traversed) to a target tree,...
Definition: tiffvisitor_int.hpp:216
Exiv2::getUShort
EXIV2API uint16_t getUShort(const byte *buf, ByteOrder byteOrder)
Read a 2 byte unsigned short value from the data buffer.
Definition: types.cpp:273
Exiv2::ByteOrder
ByteOrder
Type to express the byte order (little or big endian)
Definition: types.hpp:102
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::TiffEncoder::visitIfdMakernoteEnd
virtual void visitIfdMakernoteEnd(TiffIfdMakernote *object)
Reset encoder to its original state, undo makernote specific settings.
Definition: tiffvisitor_int.cpp:832
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::XmpData::usePacket
bool usePacket() const
are we to use the packet?
Definition: xmp_exiv2.hpp:245
Exiv2::Internal::TiffDecoder::TiffDecoder
TiffDecoder(ExifData &exifData, IptcData &iptcData, XmpData &xmpData, TiffComponent *const pRoot, FindDecoderFct findDecoderFct)
Constructor, taking metadata containers to add the metadata to, the root element of the composite to ...
Definition: tiffvisitor_int.cpp:275
Exiv2::Internal::TiffFinder::visitIfdMakernote
virtual void visitIfdMakernote(TiffIfdMakernote *object)
Find tag and group in an IFD makernote.
Definition: tiffvisitor_int.cpp:175
Exiv2::Internal::TiffDecoder::visitSubIfd
virtual void visitSubIfd(TiffSubIfd *object)
Decode a TIFF sub-IFD.
Definition: tiffvisitor_int.cpp:336
Exiv2::Internal::TiffEncoder::visitBinaryElement
virtual void visitBinaryElement(TiffBinaryElement *object)
Encode an element of a binary array.
Definition: tiffvisitor_int.cpp:873
Exiv2::Internal::TiffRwState::byteOrder
ByteOrder byteOrder() const
Return the applicable byte order. May be different for the Makernote and the rest of the TIFF entries...
Definition: tiffvisitor_int.hpp:597
Exiv2::Internal::TiffVisitor::visitDirectoryNext
virtual void visitDirectoryNext(TiffDirectory *object)
Operation to perform for a TIFF directory, after all components and before the next entry is processe...
Definition: tiffvisitor_int.cpp:104
Exiv2::ExifKey::setIdx
void setIdx(int idx)
Set the index.
Definition: tags.cpp:362
Exiv2::Internal::TiffEncoder::setDirty
void setDirty(bool flag=true)
Set the dirty flag and end of traversing signal.
Definition: tiffvisitor_int.cpp:712
Exiv2::Internal::TiffReader::visitIfdMakernote
virtual void visitIfdMakernote(TiffIfdMakernote *object)
Read an IFD makernote from the data buffer.
Definition: tiffvisitor_int.cpp:1489
Exiv2::Error
BasicError< char > Error
Error class used for exceptions (std::string based)
Definition: error.hpp:324
Exiv2::Internal::TiffReader::postProcess
void postProcess()
Read deferred components.
Definition: tiffvisitor_int.cpp:1324
Exiv2::Internal::ArrayCfg::concat_
bool concat_
If true, concatenate gaps between defined tags to single tags.
Definition: tiffcomposite_int.hpp:1338
Exiv2::Internal::TiffFinder::visitSubIfd
virtual void visitSubIfd(TiffSubIfd *object)
Find tag and group in a TIFF sub-IFD.
Definition: tiffvisitor_int.cpp:165
Exiv2::Value::sizeDataArea
virtual long sizeDataArea() const
Return the size of the data area, 0 if there is none.
Definition: value.cpp:181
Exiv2::Internal::TiffDecoder::decodeIptc
void decodeIptc(const TiffEntryBase *object)
Decode IPTC data from an IPTCNAA tag or Photoshop ImageResources.
Definition: tiffvisitor_int.cpp:413
Exiv2::IptcData
A container for IPTC data. This is a top-level class of the Exiv2 library.
Definition: iptc.hpp:170
Exiv2::Internal::TiffFinder::TiffFinder
TiffFinder(uint16_t tag, IfdId group)
Constructor, taking tag and group of the component to find.
Definition: tiffvisitor_int.hpp:161
Exiv2::Internal::TiffMnCreator::create
static TiffComponent * create(uint16_t tag, IfdId group, const std::string &make, const byte *pData, uint32_t size, ByteOrder byteOrder)
Create the Makernote for camera make and details from the makernote entry itself if needed....
Definition: makernote_int.cpp:166
Exiv2::Internal::TiffComponent::AutoPtr
std::auto_ptr< TiffComponent > AutoPtr
TiffComponent auto_ptr type.
Definition: tiffcomposite_int.hpp:174
Exiv2::IptcParser::encode
static DataBuf encode(const IptcData &iptcData)
Encode the IPTC datasets from iptcData to a binary representation in IPTC IIM4 format.
Definition: iptc.cpp:510
Exiv2::TagInfo::tag_
uint16_t tag_
Tag.
Definition: tags.hpp:87
Exiv2::Internal::TiffFinder::findObject
void findObject(TiffComponent *object)
Check if object matches tag and group.
Definition: tiffvisitor_int.cpp:132
Exiv2::Internal::TiffRwState::TiffRwState
TiffRwState(ByteOrder byteOrder, uint32_t baseOffset)
Constructor.
Definition: tiffvisitor_int.hpp:585
Exiv2::Internal::TiffBinaryElement::elDef
const ArrayDef * elDef() const
Return the array definition of this element.
Definition: tiffcomposite_int.hpp:1520
Exiv2::Internal::TiffHeaderBase::isImageTag
virtual bool isImageTag(uint16_t tag, IfdId group, const PrimaryGroups *pPrimaryGroups) const
Return true if the Exif tag from group is an image tag.
Definition: tiffimage_int.cpp:1986
Exiv2::Internal::TiffReader::setOrigState
void setOrigState()
Set the state to the original state as set in the constructor.
Definition: tiffvisitor_int.cpp:1233
Exiv2::Internal::TiffReader::readTiffEntry
void readTiffEntry(TiffEntryBase *object)
Read a standard TIFF entry from the data buffer.
Definition: tiffvisitor_int.cpp:1527
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::ArrayCfg::elDefaultDef_
ArrayDef elDefaultDef_
Default element.
Definition: tiffcomposite_int.hpp:1339
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::TiffVisitor::geKnownMakernote
@ geKnownMakernote
Signal used by TiffReader to signal an unknown makernote.
Definition: tiffvisitor_int.hpp:72
EXV_ERROR
#define EXV_ERROR
Shorthand for a temp error log message object and return its ostringstream.
Definition: error.hpp:150
Exiv2::Internal::TiffVisitor::visitDirectory
virtual void visitDirectory(TiffDirectory *object)=0
Operation to perform for a TIFF directory.
Exiv2::Internal::TiffCopier::visitSubIfd
virtual void visitSubIfd(TiffSubIfd *object)
Copy a TIFF sub-IFD if it is an image tag.
Definition: tiffvisitor_int.cpp:250
Exiv2::Internal::TiffEncoder::visitEntry
virtual void visitEntry(TiffEntry *object)
Encode a TIFF entry.
Definition: tiffvisitor_int.cpp:724
Exiv2::Internal::TiffEncoder::visitSizeEntry
virtual void visitSizeEntry(TiffSizeEntry *object)
Encode a TIFF size entry.
Definition: tiffvisitor_int.cpp:739
Exiv2::Internal::TiffCopier::visitBinaryElement
virtual void visitBinaryElement(TiffBinaryElement *object)
Copy an element of a binary array if it is an image tag.
Definition: tiffvisitor_int.cpp:270
Exiv2::Internal::TiffVisitor::GoEvent
GoEvent
Events for the stop/go flag. See setGo().
Definition: tiffvisitor_int.hpp:68
Exiv2::Photoshop::setIptcIrb
static DataBuf setIptcIrb(const byte *pPsData, long sizePsData, const IptcData &iptcData)
Set the new IPTC IRB, keeps existing IRBs but removes the IPTC block if there is no new IPTC data to ...
Definition: jpgimage.cpp:249
Exiv2::ExifData::iterator
ExifMetadata::iterator iterator
ExifMetadata iterator type.
Definition: exif.hpp:437
Exiv2::Internal::TiffEncoder::visitBinaryArrayEnd
virtual void visitBinaryArrayEnd(TiffBinaryArray *object)
Re-encrypt binary array if necessary.
Definition: tiffvisitor_int.cpp:846
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::TiffVisitor::TiffVisitor
TiffVisitor()
Default constructor. Initialises all stop/go flags to true.
Definition: tiffvisitor_int.cpp:81
Exiv2::Internal::TiffIfdMakernote
Tiff IFD Makernote. This is a concrete class suitable for all IFD makernotes.
Definition: tiffcomposite_int.hpp:1147
Exiv2::Internal::ArrayDef
Defines one tag in a binary array.
Definition: tiffcomposite_int.hpp:1313
Exiv2::Internal::TiffCopier::visitBinaryArray
virtual void visitBinaryArray(TiffBinaryArray *object)
Copy a binary array if it is an image tag.
Definition: tiffvisitor_int.cpp:265
Exiv2::Internal::TiffFinder::visitDirectory
virtual void visitDirectory(TiffDirectory *object)
Find tag and group in a TIFF directory.
Definition: tiffvisitor_int.cpp:160
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::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::WriteMethod
WriteMethod
Type to indicate write method used by TIFF parsers.
Definition: types.hpp:105
Exiv2::Internal::groupId
IfdId groupId(const std::string &groupName)
Return the group id for a group name.
Definition: tags_int.cpp:2525
Exiv2::Internal::TiffHeaderBase::byteOrder
virtual ByteOrder byteOrder() const
Return the byte order (little or big endian).
Definition: tiffimage_int.cpp:1956
Exiv2::TypeInfo::typeSize
static long typeSize(TypeId typeId)
Return the size in bytes of one element of this type.
Definition: types.cpp:116
Exiv2::Internal::TiffReader::visitSubIfd
virtual void visitSubIfd(TiffSubIfd *object)
Read a TIFF sub-IFD from the data buffer.
Definition: tiffvisitor_int.cpp:1415
Exiv2::Value::AutoPtr
std::auto_ptr< Value > AutoPtr
Shortcut for a Value auto pointer.
Definition: value.hpp:54
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::XmpParser::decode
static int decode(XmpData &xmpData, const std::string &xmpPacket)
Decode XMP metadata from an XMP packet xmpPacket into xmpData. The format of the XMP packet must foll...
Definition: xmp.cpp:887
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::TiffReader::byteOrder
ByteOrder byteOrder() const
Return the byte order.
Definition: tiffvisitor_int.cpp:1252
Exiv2::getULong
EXIV2API uint32_t getULong(const byte *buf, ByteOrder byteOrder)
Read a 4 byte unsigned long value from the data buffer.
Definition: types.cpp:278
Exiv2::Internal::TiffReader::circularReference
bool circularReference(const byte *start, IfdId group)
Check IFD directory pointer start for circular reference.
Definition: tiffvisitor_int.cpp:1305
Exiv2::Internal::TiffEncoder::visitDirectory
virtual void visitDirectory(TiffDirectory *object)
Encode a TIFF directory.
Definition: tiffvisitor_int.cpp:744
Exiv2::Internal::TiffFinder::visitImageEntry
virtual void visitImageEntry(TiffImageEntry *object)
Find tag and group in a TIFF image entry.
Definition: tiffvisitor_int.cpp:150
iptc.hpp
Encoding and decoding of IPTC data.
Exiv2::ExifData
A container for Exif data. This is a top-level class of the Exiv2 library. The container holds Exifda...
Definition: exif.hpp:434
Exiv2::Internal::TiffVisitor::visitIfdMakernoteEnd
virtual void visitIfdMakernoteEnd(TiffIfdMakernote *object)
Operation to perform after processing an IFD makernote.
Definition: tiffvisitor_int.cpp:112
Exiv2::Exifdatum::getValue
Value::AutoPtr getValue() const
Return an auto-pointer to a copy (clone) of the value. The caller owns this copy and the auto-poiner ...
Definition: exif.cpp:434