Exiv2
tiffvisitor_int.hpp
Go to the documentation of this file.
1 // ***************************************************************** -*- C++ -*-
2 /*
3  * Copyright (C) 2004-2018 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  */
28 #ifndef TIFFVISITOR_INT_HPP_
29 #define TIFFVISITOR_INT_HPP_
30 
31 // *****************************************************************************
32 // included header files
33 #include "exif.hpp"
34 #include "tifffwd_int.hpp"
35 #include "types.hpp"
36 
37 // + standard includes
38 #include <memory>
39 #include <iostream>
40 #include <iomanip>
41 #include <cassert>
42 #include <map>
43 #include <set>
44 #include <vector>
45 
46 // *****************************************************************************
47 // namespace extensions
48 namespace Exiv2 {
49 
50  class IptcData;
51  class XmpData;
52 
53  namespace Internal {
54 
55 // *****************************************************************************
56 // class definitions
57 
73  class TiffVisitor {
74  public:
76  enum GoEvent {
81  // Note: If you add more events here, adjust the events_ constant too!
82  };
83 
84  private:
85  static const int events_ = 2;
86  bool go_[events_];
87 
88  public:
90 
91  TiffVisitor();
94  virtual ~TiffVisitor();
96 
98 
99 
110  void setGo(GoEvent event, bool go);
112  virtual void visitEntry(TiffEntry* object) =0;
114  virtual void visitDataEntry(TiffDataEntry* object) =0;
116  virtual void visitImageEntry(TiffImageEntry* object) =0;
118  virtual void visitSizeEntry(TiffSizeEntry* object) =0;
120  virtual void visitDirectory(TiffDirectory* object) =0;
125  virtual void visitDirectoryNext(TiffDirectory* object);
130  virtual void visitDirectoryEnd(TiffDirectory* object);
132  virtual void visitSubIfd(TiffSubIfd* object) =0;
134  virtual void visitMnEntry(TiffMnEntry* object) =0;
136  virtual void visitIfdMakernote(TiffIfdMakernote* object) =0;
138  virtual void visitIfdMakernoteEnd(TiffIfdMakernote* object);
140  virtual void visitBinaryArray(TiffBinaryArray* object) =0;
145  virtual void visitBinaryArrayEnd(TiffBinaryArray* object);
147  virtual void visitBinaryElement(TiffBinaryElement* object) =0;
149 
151 
152  bool go(GoEvent event) const;
155 
156  }; // class TiffVisitor
157 
164  class TiffFinder : public TiffVisitor {
165  public:
167 
168  TiffFinder(uint16_t tag, IfdId group)
170  : tag_(tag), group_(group), tiffComponent_(0) {}
172  virtual ~TiffFinder();
174 
176 
177  virtual void visitEntry(TiffEntry* object);
180  virtual void visitDataEntry(TiffDataEntry* object);
182  virtual void visitImageEntry(TiffImageEntry* object);
184  virtual void visitSizeEntry(TiffSizeEntry* object);
186  virtual void visitDirectory(TiffDirectory* object);
188  virtual void visitSubIfd(TiffSubIfd* object);
190  virtual void visitMnEntry(TiffMnEntry* object);
192  virtual void visitIfdMakernote(TiffIfdMakernote* object);
194  virtual void visitBinaryArray(TiffBinaryArray* object);
196  virtual void visitBinaryElement(TiffBinaryElement* object);
197 
199  void findObject(TiffComponent* object);
201  void init(uint16_t tag, IfdId group);
203 
205 
206 
210  TiffComponent* result() const { return tiffComponent_; }
212 
213  private:
214  uint16_t tag_;
215  IfdId group_;
216  TiffComponent* tiffComponent_;
217  }; // class TiffFinder
218 
224  class TiffCopier : public TiffVisitor {
225  public:
227 
228 
236  TiffCopier( TiffComponent* pRoot,
237  uint32_t root,
238  const TiffHeaderBase* pHeader,
239  const PrimaryGroups* pPrimaryGroups);
241  virtual ~TiffCopier();
243 
245 
246  virtual void visitEntry(TiffEntry* object);
249  virtual void visitDataEntry(TiffDataEntry* object);
251  virtual void visitImageEntry(TiffImageEntry* object);
253  virtual void visitSizeEntry(TiffSizeEntry* object);
255  virtual void visitDirectory(TiffDirectory* object);
257  virtual void visitSubIfd(TiffSubIfd* object);
259  virtual void visitMnEntry(TiffMnEntry* object);
261  virtual void visitIfdMakernote(TiffIfdMakernote* object);
263  virtual void visitBinaryArray(TiffBinaryArray* object);
265  virtual void visitBinaryElement(TiffBinaryElement* object);
266 
268  void copyObject(TiffComponent* object);
270 
271  private:
272  TiffComponent* pRoot_;
273  uint32_t root_;
274  const TiffHeaderBase* pHeader_;
275  const PrimaryGroups* pPrimaryGroups_;
276  }; // class TiffCopier
277 
284  class TiffDecoder : public TiffVisitor {
285  public:
287 
288 
293  TiffDecoder(
294  ExifData& exifData,
295  IptcData& iptcData,
296  XmpData& xmpData,
297  TiffComponent* const pRoot,
298  FindDecoderFct findDecoderFct
299  );
301  virtual ~TiffDecoder();
303 
305 
306  virtual void visitEntry(TiffEntry* object);
309  virtual void visitDataEntry(TiffDataEntry* object);
311  virtual void visitImageEntry(TiffImageEntry* object);
313  virtual void visitSizeEntry(TiffSizeEntry* object);
315  virtual void visitDirectory(TiffDirectory* object);
317  virtual void visitSubIfd(TiffSubIfd* object);
319  virtual void visitMnEntry(TiffMnEntry* object);
321  virtual void visitIfdMakernote(TiffIfdMakernote* object);
323  virtual void visitBinaryArray(TiffBinaryArray* object);
325  virtual void visitBinaryElement(TiffBinaryElement* object);
326 
328  void decodeTiffEntry(const TiffEntryBase* object);
330  void decodeStdTiffEntry(const TiffEntryBase* object);
332  void decodeIptc(const TiffEntryBase* object);
334  void decodeXmp(const TiffEntryBase* object);
336  void decodeCanonAFInfo(const TiffEntryBase* object);
338 
339  private:
341 
342 
350  void getObjData(byte const*& pData,
351  long& size,
352  uint16_t tag,
353  IfdId group,
354  const TiffEntryBase* object);
356 
357  private:
358  // DATA
359  ExifData& exifData_;
360  IptcData& iptcData_;
361  XmpData& xmpData_;
362  TiffComponent* const pRoot_;
363  const FindDecoderFct findDecoderFct_;
364  std::string make_;
365  bool decodedIptc_;
366 
367  }; // class TiffDecoder
368 
384  class TiffEncoder : public TiffVisitor {
385  public:
387 
388 
393  TiffEncoder(
394  const ExifData& exifData,
395  const IptcData& iptcData,
396  const XmpData& xmpData,
397  TiffComponent* pRoot,
398  const bool isNewImage,
399  const PrimaryGroups* pPrimaryGroups,
400  const TiffHeaderBase* pHeader,
401  FindEncoderFct findEncoderFct
402  );
404  virtual ~TiffEncoder();
406 
408 
409  virtual void visitEntry(TiffEntry* object);
412  virtual void visitDataEntry(TiffDataEntry* object);
414  virtual void visitImageEntry(TiffImageEntry* object);
416  virtual void visitSizeEntry(TiffSizeEntry* object);
418  virtual void visitDirectory(TiffDirectory* object);
420  virtual void visitDirectoryNext(TiffDirectory* object);
422  virtual void visitSubIfd(TiffSubIfd* object);
424  virtual void visitMnEntry(TiffMnEntry* object);
426  virtual void visitIfdMakernote(TiffIfdMakernote* object);
428  virtual void visitIfdMakernoteEnd(TiffIfdMakernote* object);
430  virtual void visitBinaryArray(TiffBinaryArray* object);
432  virtual void visitBinaryArrayEnd(TiffBinaryArray* object);
434  virtual void visitBinaryElement(TiffBinaryElement* object);
435 
455  void encodeTiffComponent(
456  TiffEntryBase* object,
457  const Exifdatum* datum =0
458  );
459 
461  void encodeBinaryElement(TiffBinaryElement* object, const Exifdatum* datum);
463  void encodeBinaryArray(TiffBinaryArray* object, const Exifdatum* datum);
465  void encodeDataEntry(TiffDataEntry* object, const Exifdatum* datum);
467  void encodeTiffEntry(TiffEntry* object, const Exifdatum* datum);
469  void encodeImageEntry(TiffImageEntry* object, const Exifdatum* datum);
471  void encodeMnEntry(TiffMnEntry* object, const Exifdatum* datum);
473  void encodeSizeEntry(TiffSizeEntry* object, const Exifdatum* datum);
475  void encodeSubIfd(TiffSubIfd* object, const Exifdatum* datum);
476 
478  void encodeTiffEntryBase(TiffEntryBase* object, const Exifdatum* datum);
480  void encodeOffsetEntry(TiffEntryBase* object, const Exifdatum* datum);
481 
483  // Todo void encodeNikonSubIfd(TiffEntryBase* object, const Exifdatum* datum);
484 
486  void encodeIptc(TiffEntryBase* object, const Exifdatum* datum);
499  void add(
500  TiffComponent* pRootDir,
501  TiffComponent* pSourceDir,
502  uint32_t root
503  );
505  void setDirty(bool flag =true);
507 
509 
510 
514  ByteOrder byteOrder() const { return byteOrder_; }
519  bool dirty() const;
521  WriteMethod writeMethod() const { return writeMethod_; }
523 
524  private:
526 
527 
532  void encodeIptc();
537  void encodeXmp();
539 
541 
542 
547  uint32_t updateDirEntry(byte* buf,
549  TiffComponent* pTiffComponent) const;
559  bool isImageTag(uint16_t tag, IfdId group) const;
561 
562  private:
563  // DATA
564  ExifData exifData_;
565  const IptcData& iptcData_;
566  const XmpData& xmpData_;
567  bool del_;
568  const TiffHeaderBase* pHeader_;
569  TiffComponent* pRoot_;
570  const bool isNewImage_;
571  const PrimaryGroups* pPrimaryGroups_;
572  TiffComponent* pSourceTree_;
573  ByteOrder byteOrder_;
574  ByteOrder origByteOrder_;
575  const FindEncoderFct findEncoderFct_;
576  std::string make_;
577  bool dirty_;
578  WriteMethod writeMethod_;
579 
580  }; // class TiffEncoder
581 
588  class TiffRwState {
589  public:
591 
594  uint32_t baseOffset)
595  : byteOrder_(byteOrder),
596  baseOffset_(baseOffset) {}
598 
600 
601 
605  ByteOrder byteOrder() const { return byteOrder_; }
617  uint32_t baseOffset() const { return baseOffset_; }
619 
620  private:
621  ByteOrder byteOrder_;
622  uint32_t baseOffset_;
623  }; // TiffRwState
624 
630  class TiffReader : public TiffVisitor {
631  public:
633 
634 
643  TiffReader(const byte* pData,
644  uint32_t size,
645  TiffComponent* pRoot,
646  TiffRwState state);
647 
649  virtual ~TiffReader();
651 
653 
654  virtual void visitEntry(TiffEntry* object);
657  virtual void visitDataEntry(TiffDataEntry* object);
659  virtual void visitImageEntry(TiffImageEntry* object);
661  virtual void visitSizeEntry(TiffSizeEntry* object);
663  virtual void visitDirectory(TiffDirectory* object);
665  virtual void visitSubIfd(TiffSubIfd* object);
667  virtual void visitMnEntry(TiffMnEntry* object);
669  virtual void visitIfdMakernote(TiffIfdMakernote* object);
671  virtual void visitIfdMakernoteEnd(TiffIfdMakernote* object);
673  virtual void visitBinaryArray(TiffBinaryArray* object);
675  virtual void visitBinaryElement(TiffBinaryElement* object);
676 
678  void readTiffEntry(TiffEntryBase* object);
680  void readDataEntryBase(TiffDataEntryBase* object);
687  void setMnState(const TiffRwState* state =0);
689  void setOrigState();
691  bool circularReference(const byte* start, IfdId group);
693  int nextIdx(IfdId group);
694 
704  void postProcess();
706 
708 
709  ByteOrder byteOrder() const;
712  uint32_t baseOffset() const;
714 
715  private:
716  typedef std::map<const byte*, IfdId> DirList;
717  typedef std::map<uint16_t, int> IdxSeq;
718  typedef std::vector<TiffComponent*> PostList;
719 
720  // DATA
721  const byte* pData_;
722  const uint32_t size_;
723  const byte* pLast_;
724  TiffComponent* const pRoot_;
725  TiffRwState* pState_;
726  TiffRwState origState_;
727  TiffRwState mnState_;
728  DirList dirList_;
729  IdxSeq idxSeq_;
730  PostList postList_;
731  bool postProc_;
732  }; // class TiffReader
733 
734 }} // namespace Internal, Exiv2
735 
736 #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:96
Exiv2::Internal::TiffVisitor::~TiffVisitor
virtual ~TiffVisitor()
Virtual destructor.
Definition: tiffvisitor_int.cpp:92
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:887
Exiv2::Internal::TiffReader::visitDataEntry
virtual void visitDataEntry(TiffDataEntry *object)
Read a TIFF data entry from the data buffer.
Definition: tiffvisitor_int.cpp:1281
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:598
Exiv2::Internal::TiffCopier::visitIfdMakernote
virtual void visitIfdMakernote(TiffIfdMakernote *object)
Copy an IFD makernote if it is an image tag.
Definition: tiffvisitor_int.cpp:264
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:1237
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:1650
Exiv2::Internal::TiffComponent::tag
uint16_t tag() const
Return the tag of this entry.
Definition: tiffcomposite_int.hpp:258
Exiv2::Internal::ArrayDef::tiffType_
TiffType tiffType_
TIFF type of the element.
Definition: tiffcomposite_int.hpp:1322
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:239
Exiv2::ExifData::clear
void clear()
Delete all Exifdatum instances resulting in an empty container. Note that this also removes thumbnail...
Definition: exif.cpp:596
Exiv2::Internal::TiffEntryBase::tiffType
TiffType tiffType() const
Return the TIFF type.
Definition: tiffcomposite_int.hpp:460
Exiv2::Internal::TiffFinder::visitMnEntry
virtual void visitMnEntry(TiffMnEntry *object)
Find tag and group in a TIFF makernote.
Definition: tiffvisitor_int.cpp:174
Exiv2::Internal::TiffFinder::visitBinaryArray
virtual void visitBinaryArray(TiffBinaryArray *object)
Find tag and group in a binary array.
Definition: tiffvisitor_int.cpp:184
Exiv2::Internal::TiffEncoder::visitIfdMakernote
virtual void visitIfdMakernote(TiffIfdMakernote *object)
Encode an IFD makernote.
Definition: tiffvisitor_int.cpp:804
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:513
Exiv2::Internal::TiffDecoder::decodeTiffEntry
void decodeTiffEntry(const TiffEntryBase *object)
Entry function, determines how to decode each tag.
Definition: tiffvisitor_int.cpp:538
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:124
Exiv2::Internal::TiffEncoder::encodeDataEntry
void encodeDataEntry(TiffDataEntry *object, const Exifdatum *datum)
Callback encoder function for a data entry.
Definition: tiffvisitor_int.cpp:961
Exiv2::Internal::TiffReader::visitMnEntry
virtual void visitMnEntry(TiffMnEntry *object)
Read a TIFF makernote entry from the data buffer.
Definition: tiffvisitor_int.cpp:1464
Exiv2::DataBuf::pData_
byte * pData_
Pointer to the buffer, 0 if none has been allocated.
Definition: types.hpp:269
Exiv2::Internal::TiffEncoder::visitMnEntry
virtual void visitMnEntry(TiffMnEntry *object)
Encode a TIFF makernote.
Definition: tiffvisitor_int.cpp:790
Exiv2::Internal::TiffEncoder::~TiffEncoder
virtual ~TiffEncoder()
Virtual destructor.
Definition: tiffvisitor_int.cpp:624
Exiv2::Internal::TiffEncoder::encodeMnEntry
void encodeMnEntry(TiffMnEntry *object, const Exifdatum *datum)
Callback encoder function for a Makernote entry.
Definition: tiffvisitor_int.cpp:1070
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:414
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:631
Exiv2::ExifData::findKey
iterator findKey(const ExifKey &key)
Find the first Exifdatum with the given key, return an iterator to it.
Definition: exif.cpp:590
Exiv2::Internal::TiffSizeEntry::dtTag
uint16_t dtTag() const
Return the group of the related entry which has the data area.
Definition: tiffcomposite_int.hpp:833
Exiv2::Internal::TiffEncoder::encodeOffsetEntry
void encodeOffsetEntry(TiffEntryBase *object, const Exifdatum *datum)
Special encoder function for an offset entry.
Definition: tiffvisitor_int.cpp:1111
Exiv2::Internal::TiffVisitor
Abstract base class defining the interface for TIFF composite visitors (Visitor pattern)
Definition: tiffvisitor_int.hpp:73
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:83
tiffvisitor_int.hpp
Internal operations on a TIFF composite tree, implemented as visitor classes.
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:573
Exiv2::Internal::TiffEncoder::visitDataEntry
virtual void visitDataEntry(TiffDataEntry *object)
Encode a TIFF data entry.
Definition: tiffvisitor_int.cpp:730
Exiv2::Internal::TiffEncoder::visitSubIfd
virtual void visitSubIfd(TiffSubIfd *object)
Encode a TIFF sub-IFD.
Definition: tiffvisitor_int.cpp:785
Exiv2::make
EXIV2API ExifData::const_iterator make(const ExifData &ed)
Return the camera make.
Definition: easyaccess.cpp:428
Exiv2::Internal::TiffEncoder
TIFF composite visitor to encode metadata from an image to the TIFF tree. The metadata containers and...
Definition: tiffvisitor_int.hpp:384
Exiv2::Internal::TiffReader::visitBinaryElement
virtual void visitBinaryElement(TiffBinaryElement *object)
Read an element of a binary array from the data buffer.
Definition: tiffvisitor_int.cpp:1730
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:111
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:575
Exiv2::Exifdatum::idx
int idx() const
Return the index (unique id of this key within the original IFD)
Definition: exif.cpp:359
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:88
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:229
Exiv2::Internal::TiffEncoder::encodeSizeEntry
void encodeSizeEntry(TiffSizeEntry *object, const Exifdatum *datum)
Callback encoder function for a size entry.
Definition: tiffvisitor_int.cpp:1076
Exiv2::Internal::TiffHeaderBase
Abstract base class defining the interface of an image header. Used internally by classes for TIFF-ba...
Definition: tiffimage_int.hpp:59
Exiv2::Internal::TiffBinaryElement
Element of a TiffBinaryArray.
Definition: tiffcomposite_int.hpp:1495
Exiv2::Internal::IfdId
IfdId
Type to specify the IFD to which a metadata belongs.
Definition: tags_int.hpp:54
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:891
Exiv2::ExifData::begin
iterator begin()
Begin of the metadata.
Definition: exif.hpp:490
types.hpp
Type definitions for Exiv2 and related functionality.
Exiv2::Internal::TiffReader::visitDirectory
virtual void visitDirectory(TiffDirectory *object)
Read a TIFF directory from the data buffer.
Definition: tiffvisitor_int.cpp:1334
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:308
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:102
Exiv2::Value::typeId
TypeId typeId() const
Return the type identifier (Exif data format type).
Definition: value.hpp:113
Exiv2::Internal::TiffEncoder::encodeSubIfd
void encodeSubIfd(TiffSubIfd *object, const Exifdatum *datum)
Callback encoder function for a sub-IFD entry.
Definition: tiffvisitor_int.cpp:1081
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:1012
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:432
Exiv2::Internal::TiffEncoder::encodeImageEntry
void encodeImageEntry(TiffImageEntry *object, const Exifdatum *datum)
Callback encoder function for an image entry.
Definition: tiffvisitor_int.cpp:998
Exiv2::Internal::TiffCopier::~TiffCopier
virtual ~TiffCopier()
Virtual destructor.
Definition: tiffvisitor_int.cpp:208
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:212
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:219
Exiv2::Internal::ttTiffIfd
const TiffType ttTiffIfd
TIFF IFD type.
Definition: tiffcomposite_int.hpp:68
Exiv2::Internal::TiffIfdMakernote::setByteOrder
void setByteOrder(ByteOrder byteOrder)
Set the byte order for the makernote.
Definition: tiffcomposite_int.cpp:547
Exiv2::signedShort
@ signedShort
Exif SSHORT type, a 16-bit (2-byte) signed (twos-complement) integer.
Definition: types.hpp:138
Exiv2::ExifData::erase
iterator erase(iterator pos)
Delete the Exifdatum at iterator position pos, return the position of the next exifdatum....
Definition: exif.cpp:616
Exiv2::TagInfo::name_
const char * name_
One word tag label.
Definition: tags.hpp:96
Exiv2::Internal::TiffVisitor::visitMnEntry
virtual void visitMnEntry(TiffMnEntry *object)=0
Operation to perform for the makernote component.
Exiv2::XmpData::clear
void clear()
Delete all Xmpdatum instances resulting in an empty container.
Definition: xmp.cpp:345
Exiv2::Internal::TiffVisitor::geTraverse
@ geTraverse
Signal to control traversing of the composite tree.
Definition: tiffvisitor_int.hpp:78
Exiv2::Internal::TiffCopier::TiffCopier
TiffCopier(TiffComponent *pRoot, uint32_t root, const TiffHeaderBase *pHeader, const PrimaryGroups *pPrimaryGroups)
Constructor.
Definition: tiffvisitor_int.cpp:194
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:210
Exiv2::Internal::TiffEntry
A standard TIFF IFD entry.
Definition: tiffcomposite_int.hpp:566
Exiv2::Value::create
static AutoPtr create(TypeId typeId)
A (simple) factory to create a Value type.
Definition: value.cpp:100
Exiv2::Internal::TiffComponent
Interface class for components of a TIFF directory hierarchy (Composite pattern). Both TIFF directori...
Definition: tiffcomposite_int.hpp:174
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:329
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:1073
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:604
Exiv2::Internal::TiffReader::visitBinaryArray
virtual void visitBinaryArray(TiffBinaryArray *object)
Read a binary array from the data buffer.
Definition: tiffvisitor_int.cpp:1650
Exiv2::Internal::TiffDecoder::visitSizeEntry
virtual void visitSizeEntry(TiffSizeEntry *object)
Decode a TIFF size entry.
Definition: tiffvisitor_int.cpp:327
Exiv2::Value::count
virtual long count() const =0
Return the number of components of the value.
EXV_COUNTOF
#define EXV_COUNTOF(a)
Macro to determine the size of an array.
Definition: types.hpp:517
Exiv2::Internal::TiffEncoder::visitBinaryArray
virtual void visitBinaryArray(TiffBinaryArray *object)
Encode a binary array.
Definition: tiffvisitor_int.cpp:840
Exiv2::Internal::ArrayDef::idx_
uint32_t idx_
Index in bytes from the start.
Definition: tiffcomposite_int.hpp:1321
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:81
Exiv2::unsignedLong
@ unsignedLong
Exif LONG type, 32-bit (4-byte) unsigned integer.
Definition: types.hpp:134
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:112
Exiv2::Internal::TiffReader::visitIfdMakernoteEnd
virtual void visitIfdMakernoteEnd(TiffIfdMakernote *object)
Reset reader to its original state, undo makernote specific settings.
Definition: tiffvisitor_int.cpp:1520
Exiv2::IptcData::clear
void clear()
Delete all Iptcdatum instances resulting in an empty container.
Definition: iptc.hpp:218
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:1858
Exiv2::Internal::TiffEntryBase::idx
virtual int idx() const
Return the unique id of the entry in the image.
Definition: tiffcomposite_int.cpp:354
Exiv2::Internal::TiffDecoder::visitMnEntry
virtual void visitMnEntry(TiffMnEntry *object)
Decode a TIFF makernote.
Definition: tiffvisitor_int.cpp:342
Exiv2::Internal::TiffEncoder::visitDirectoryNext
virtual void visitDirectoryNext(TiffDirectory *object)
Update directory entries.
Definition: tiffvisitor_int.cpp:750
Exiv2::Internal::TiffComponent::group
IfdId group() const
Return the group id of this component.
Definition: tiffcomposite_int.hpp:260
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:98
tifffwd_int.hpp
Internal TIFF parser related typedefs and forward definitions.
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:736
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:1650
Exiv2::Internal::TiffEntryBase::pValue
const Value * pValue() const
Return a const pointer to the converted value of this component.
Definition: tiffcomposite_int.hpp:476
Exiv2::Internal::groupName
const char * groupName(IfdId ifdId)
Return the group name for a group id.
Definition: tags_int.cpp:2158
Exiv2::Internal::TiffDecoder::decodeCanonAFInfo
void decodeCanonAFInfo(const TiffEntryBase *object)
Decode Exif.Canon.AFInfo.
Definition: tiffvisitor_int.cpp:472
Exiv2::Internal::TiffDirectory::hasNext
bool hasNext() const
Return true if the directory has a next pointer.
Definition: tiffcomposite_int.hpp:876
Exiv2::Internal::TiffFinder::visitDataEntry
virtual void visitDataEntry(TiffDataEntry *object)
Find tag and group in a TIFF data entry.
Definition: tiffvisitor_int.cpp:149
enforce.hpp
Port of D's enforce() to C++ & Exiv2.
Exiv2::Internal::TiffEncoder::encodeBinaryArray
void encodeBinaryArray(TiffBinaryArray *object, const Exifdatum *datum)
Callback encoder function for a binary array.
Definition: tiffvisitor_int.cpp:951
Exiv2::Internal::TiffDecoder::visitDirectory
virtual void visitDirectory(TiffDirectory *object)
Decode a TIFF directory.
Definition: tiffvisitor_int.cpp:332
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:432
Exiv2::Internal::TiffDecoder::visitBinaryArray
virtual void visitBinaryArray(TiffBinaryArray *object)
Decode a binary array.
Definition: tiffvisitor_int.cpp:563
Exiv2::Internal::TiffDecoder::visitIfdMakernote
virtual void visitIfdMakernote(TiffIfdMakernote *object)
Decode an IFD makernote.
Definition: tiffvisitor_int.cpp:348
Exiv2::Internal::TiffEncoder::writeMethod
WriteMethod writeMethod() const
Return the write method used.
Definition: tiffvisitor_int.hpp:521
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:518
Exiv2::Internal::TiffDecoder::visitDataEntry
virtual void visitDataEntry(TiffDataEntry *object)
Decode a TIFF data entry.
Definition: tiffvisitor_int.cpp:317
Exiv2::Internal::TiffCopier::visitDirectory
virtual void visitDirectory(TiffDirectory *object)
Copy a TIFF directory if it is an image tag.
Definition: tiffvisitor_int.cpp:249
Exiv2::Internal::TiffFinder::~TiffFinder
virtual ~TiffFinder()
Virtual destructor.
Definition: tiffvisitor_int.cpp:132
Exiv2::Internal::ArrayCfg
Additional configuration for a binary array.
Definition: tiffcomposite_int.hpp:1327
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:514
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:1086
Exiv2::Internal::TiffEncoder::visitImageEntry
virtual void visitImageEntry(TiffImageEntry *object)
Encode a TIFF image entry.
Definition: tiffvisitor_int.cpp:735
Exiv2::Internal::TiffReader::nextIdx
int nextIdx(IfdId group)
Return the next idx sequence number for group.
Definition: tiffvisitor_int.cpp:1318
Exiv2::Internal::TiffFinder::visitSizeEntry
virtual void visitSizeEntry(TiffSizeEntry *object)
Find tag and group in a TIFF size entry.
Definition: tiffvisitor_int.cpp:159
Exiv2::Internal::TiffVisitor::visitDataEntry
virtual void visitDataEntry(TiffDataEntry *object)=0
Operation to perform for a TIFF data entry.
tiffimage_int.hpp
Internal class TiffParserWorker to parse TIFF data.
Exiv2::Internal::ttUnsignedLong
const TiffType ttUnsignedLong
Exif LONG type.
Definition: tiffcomposite_int.hpp:59
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:92
Exiv2::Internal::TiffReader::visitEntry
virtual void visitEntry(TiffEntry *object)
Read a TIFF entry from the data buffer.
Definition: tiffvisitor_int.cpp:1276
enforce
void enforce(bool condition, const T &arg1)
Ensure that condition is true, otherwise throw an exception of the type exception_t.
Definition: enforce.hpp:43
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:819
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:164
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:1210
Exiv2::Internal::TiffDecoder::visitBinaryElement
virtual void visitBinaryElement(TiffBinaryElement *object)
Decode an element of a binary array.
Definition: tiffvisitor_int.cpp:570
Exiv2::Internal::TiffCopier::visitMnEntry
virtual void visitMnEntry(TiffMnEntry *object)
Copy a TIFF makernote if it is an image tag.
Definition: tiffvisitor_int.cpp:259
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:719
Exiv2::Internal::ttSignedLong
const TiffType ttSignedLong
Exif SLONG type.
Definition: tiffcomposite_int.hpp:64
Exiv2::Internal::TiffFinder::visitEntry
virtual void visitEntry(TiffEntry *object)
Find tag and group in a TIFF entry.
Definition: tiffvisitor_int.cpp:144
Exiv2::Internal::TiffDataEntryBase::szGroup
IfdId szGroup() const
Return the group of the entry which has the size.
Definition: tiffcomposite_int.hpp:632
Exiv2::DataBuf
Utility class containing a character array. All it does is to take care of memory allocation and dele...
Definition: types.hpp:204
Exiv2::Internal::TiffBinaryArray::decoded
bool decoded() const
Return the flag which indicates if the array was decoded.
Definition: tiffcomposite_int.hpp:1420
Exiv2::unsignedByte
@ unsignedByte
Exif BYTE type, 8-bit unsigned integer.
Definition: types.hpp:131
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:395
Exiv2::Internal::TiffEncoder::encodeTiffEntry
void encodeTiffEntry(TiffEntry *object, const Exifdatum *datum)
Callback encoder function for a standard TIFF entry.
Definition: tiffvisitor_int.cpp:993
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:114
Exiv2::Internal::TiffDecoder
TIFF composite visitor to decode metadata from the TIFF tree and add it to an Image,...
Definition: tiffvisitor_int.hpp:284
Exiv2::ExifKey
Concrete keys for Exif metadata and access to Exif tag reference data.
Definition: tags.hpp:148
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:175
Exiv2::DataBuf::size_
long size_
The current size of the buffer.
Definition: types.hpp:271
Exiv2::Internal::TiffReader::visitImageEntry
virtual void visitImageEntry(TiffImageEntry *object)
Read a TIFF image entry from the data buffer.
Definition: tiffvisitor_int.cpp:1286
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:328
Exiv2::Internal::TiffReader::visitSizeEntry
virtual void visitSizeEntry(TiffSizeEntry *object)
Read a TIFF size entry from the data buffer.
Definition: tiffvisitor_int.cpp:1291
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:836
Exiv2::Internal::TiffDecoder::visitEntry
virtual void visitEntry(TiffEntry *object)
Decode a TIFF entry.
Definition: tiffvisitor_int.cpp:312
Exiv2::find
const T * find(T(&src)[N], const K &key)
Find an element that matches key in the array src.
Definition: types.hpp:508
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:653
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:474
Exiv2::Internal::TiffDecoder::visitImageEntry
virtual void visitImageEntry(TiffImageEntry *object)
Decode a TIFF image entry.
Definition: tiffvisitor_int.cpp:322
Exiv2::ExifTags::tagList
static const TagInfo * tagList(const std::string &groupName)
Return read-only list of built-in groupName tags.
Definition: tags.cpp:184
Exiv2::Internal::TiffReader::baseOffset
uint32_t baseOffset() const
Return the base offset. See class TiffRwState for details.
Definition: tiffvisitor_int.cpp:1257
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:956
Exiv2::Internal::TiffDecoder::decodeStdTiffEntry
void decodeStdTiffEntry(const TiffEntryBase *object)
Decode a standard TIFF entry.
Definition: tiffvisitor_int.cpp:554
Exiv2::Internal::TiffRwState
Simple state class containing relevant state information for the TIFF reader. This is in a separate c...
Definition: tiffvisitor_int.hpp:588
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:1137
Exiv2::Internal::TiffBinaryElement::elByteOrder
ByteOrder elByteOrder() const
Return the byte order of this element.
Definition: tiffcomposite_int.hpp:1526
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:133
Exiv2::Internal::ArrayDef::count_
uint32_t count_
Number of components.
Definition: tiffcomposite_int.hpp:1323
Exiv2::Internal::TiffSizeEntry::dtGroup
IfdId dtGroup() const
Return the group of the related entry which has the data area.
Definition: tiffcomposite_int.hpp:835
Exiv2::Internal::TiffVisitor::visitBinaryElement
virtual void visitBinaryElement(TiffBinaryElement *object)=0
Operation to perform for an element of a binary array.
makernote_int.hpp
Makernote factory and registry, IFD makernote header, and camera vendor specific makernote implementa...
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:374
Exiv2::XmpData
A container for XMP data. This is a top-level class of the Exiv2 library.
Definition: xmp_exiv2.hpp:173
Exiv2::Internal::TiffReader::~TiffReader
virtual ~TiffReader()
Virtual destructor.
Definition: tiffvisitor_int.cpp:1228
Exiv2::Internal::TiffFinder::visitBinaryElement
virtual void visitBinaryElement(TiffBinaryElement *object)
Find tag and group in an element of a binary array.
Definition: tiffvisitor_int.cpp:189
value.hpp
Value interface and concrete subclasses.
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:1337
Exiv2::TypeId
TypeId
Exiv2 value type identifiers.
Definition: types.hpp:130
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:570
Exiv2::Internal::TiffRwState::baseOffset
uint32_t baseOffset() const
Return the base offset.
Definition: tiffvisitor_int.hpp:617
image.hpp
Exiv2::Exifdatum::size
long size() const
Return the size of the value in bytes.
Definition: exif.cpp:389
Exiv2::Internal::TiffDataEntryBase::szTag
uint16_t szTag() const
Return the group of the entry which has the size.
Definition: tiffcomposite_int.hpp:630
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:408
EXV_CALL_MEMBER_FN
#define EXV_CALL_MEMBER_FN(object, ptrToMember)
Macro to make calls to member functions through a pointer more readable. See the C++ FAQ LITE,...
Definition: types.hpp:77
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:120
Exiv2::Internal::TiffDecoder::decodeXmp
void decodeXmp(const TiffEntryBase *object)
Decode XMP packet from an XMLPacket tag.
Definition: tiffvisitor_int.cpp:387
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:1624
Exiv2::Internal::TiffReader::readDataEntryBase
void readDataEntryBase(TiffDataEntryBase *object)
Read a TiffDataEntryBase from the data buffer.
Definition: tiffvisitor_int.cpp:1263
Exiv2::TagInfo
Tag information.
Definition: tags.hpp:82
Exiv2::Internal::TiffBinaryArray::cfg
const ArrayCfg * cfg() const
Return a pointer to the configuration.
Definition: tiffcomposite_int.hpp:1414
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:244
Exiv2::Internal::ttUndefined
const TiffType ttUndefined
Exif UNDEFINED type.
Definition: tiffcomposite_int.hpp:62
Exiv2::Internal::TiffCopier::visitDataEntry
virtual void visitDataEntry(TiffDataEntry *object)
Copy a TIFF data entry if it is an image tag.
Definition: tiffvisitor_int.cpp:234
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:630
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:539
Exiv2::Internal::TiffType
uint16_t TiffType
TIFF value type.
Definition: tiffcomposite_int.hpp:54
Exiv2::Internal::TiffCopier
Copy all image tags from the source tree (the tree that is traversed) to a target tree,...
Definition: tiffvisitor_int.hpp:224
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:278
Exiv2::ByteOrder
ByteOrder
Type to express the byte order (little or big endian)
Definition: types.hpp:113
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:1332
Exiv2::Internal::TiffEncoder::visitIfdMakernoteEnd
virtual void visitIfdMakernoteEnd(TiffIfdMakernote *object)
Reset encoder to its original state, undo makernote specific settings.
Definition: tiffvisitor_int.cpp:833
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:1356
Exiv2::XmpData::usePacket
bool usePacket() const
are we to use the packet?
Definition: xmp_exiv2.hpp:252
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:279
sonymn_int.hpp
Sony MakerNote implemented using the following references: Sony Makernote list by Phil Harvey Email...
Exiv2::Internal::TiffFinder::visitIfdMakernote
virtual void visitIfdMakernote(TiffIfdMakernote *object)
Find tag and group in an IFD makernote.
Definition: tiffvisitor_int.cpp:179
Exiv2::Internal::TiffDecoder::visitSubIfd
virtual void visitSubIfd(TiffSubIfd *object)
Decode a TIFF sub-IFD.
Definition: tiffvisitor_int.cpp:337
Exiv2::Internal::TiffEncoder::visitBinaryElement
virtual void visitBinaryElement(TiffBinaryElement *object)
Encode an element of a binary array.
Definition: tiffvisitor_int.cpp:874
Exiv2::Internal::Tag::root
const uint32_t root
Special tag: root IFD.
Definition: tiffcomposite_int.hpp:80
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:605
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:108
Exiv2::ExifKey::setIdx
void setIdx(int idx)
Set the index.
Definition: tags.cpp:369
Exiv2::Internal::TiffEncoder::setDirty
void setDirty(bool flag=true)
Set the dirty flag and end of traversing signal.
Definition: tiffvisitor_int.cpp:713
Exiv2::Internal::TiffReader::visitIfdMakernote
virtual void visitIfdMakernote(TiffIfdMakernote *object)
Read an IFD makernote from the data buffer.
Definition: tiffvisitor_int.cpp:1488
Exiv2::Error
BasicError< char > Error
Error class used for exceptions (std::string based)
Definition: error.hpp:323
Exiv2::Internal::TiffReader::postProcess
void postProcess()
Read deferred components.
Definition: tiffvisitor_int.cpp:1323
Exiv2::Internal::ArrayCfg::concat_
bool concat_
If true, concatenate gaps between defined tags to single tags.
Definition: tiffcomposite_int.hpp:1340
Exiv2::Internal::TiffFinder::visitSubIfd
virtual void visitSubIfd(TiffSubIfd *object)
Find tag and group in a TIFF sub-IFD.
Definition: tiffvisitor_int.cpp:169
Exiv2::Value::sizeDataArea
virtual long sizeDataArea() const
Return the size of the data area, 0 if there is none.
Definition: value.cpp:188
Exiv2::Internal::TiffDecoder::decodeIptc
void decodeIptc(const TiffEntryBase *object)
Decode IPTC data from an IPTCNAA tag or Photoshop ImageResources.
Definition: tiffvisitor_int.cpp:414
Exiv2::IptcData
A container for IPTC data. This is a top-level class of the Exiv2 library.
Definition: iptc.hpp:173
Exiv2::Internal::TiffFinder::TiffFinder
TiffFinder(uint16_t tag, IfdId group)
Constructor, taking tag and group of the component to find.
Definition: tiffvisitor_int.hpp:169
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:177
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:509
Exiv2::TagInfo::tag_
uint16_t tag_
Tag.
Definition: tags.hpp:95
Exiv2::Internal::TiffFinder::findObject
void findObject(TiffComponent *object)
Check if object matches tag and group.
Definition: tiffvisitor_int.cpp:136
Exiv2::Internal::TiffRwState::TiffRwState
TiffRwState(ByteOrder byteOrder, uint32_t baseOffset)
Constructor.
Definition: tiffvisitor_int.hpp:593
Exiv2::Internal::TiffBinaryElement::elDef
const ArrayDef * elDef() const
Return the array definition of this element.
Definition: tiffcomposite_int.hpp:1522
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:1935
Exiv2::string
@ string
IPTC string type.
Definition: types.hpp:147
Exiv2::Internal::TiffReader::setOrigState
void setOrigState()
Set the state to the original state as set in the constructor.
Definition: tiffvisitor_int.cpp:1232
Exiv2::Internal::TiffReader::readTiffEntry
void readTiffEntry(TiffEntryBase *object)
Read a standard TIFF entry from the data buffer.
Definition: tiffvisitor_int.cpp:1526
Exiv2::Internal::TiffComponent::start
byte * start() const
Return a pointer to the start of the binary representation of the component.
Definition: tiffcomposite_int.hpp:262
Exiv2::Internal::ArrayCfg::elDefaultDef_
ArrayDef elDefaultDef_
Default element.
Definition: tiffcomposite_int.hpp:1341
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:519
Exiv2::Internal::TiffVisitor::geKnownMakernote
@ geKnownMakernote
Signal used by TiffReader to signal an unknown makernote.
Definition: tiffvisitor_int.hpp:80
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:254
Exiv2::Internal::TiffEncoder::visitEntry
virtual void visitEntry(TiffEntry *object)
Encode a TIFF entry.
Definition: tiffvisitor_int.cpp:725
Exiv2::Internal::TiffEncoder::visitSizeEntry
virtual void visitSizeEntry(TiffSizeEntry *object)
Encode a TIFF size entry.
Definition: tiffvisitor_int.cpp:740
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:274
Exiv2::Internal::TiffVisitor::GoEvent
GoEvent
Events for the stop/go flag. See setGo().
Definition: tiffvisitor_int.hpp:76
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:239
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:847
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:984
Exiv2::Internal::TiffVisitor::TiffVisitor
TiffVisitor()
Default constructor. Initialises all stop/go flags to true.
Definition: tiffvisitor_int.cpp:85
Exiv2::Internal::TiffIfdMakernote
Tiff IFD Makernote. This is a concrete class suitable for all IFD makernotes.
Definition: tiffcomposite_int.hpp:1149
Exiv2::Internal::ArrayDef
Defines one tag in a binary array.
Definition: tiffcomposite_int.hpp:1315
Exiv2::Internal::TiffCopier::visitBinaryArray
virtual void visitBinaryArray(TiffBinaryArray *object)
Copy a binary array if it is an image tag.
Definition: tiffvisitor_int.cpp:269
Exiv2::Internal::TiffFinder::visitDirectory
virtual void visitDirectory(TiffDirectory *object)
Find tag and group in a TIFF directory.
Definition: tiffvisitor_int.cpp:164
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:533
Exiv2::WriteMethod
WriteMethod
Type to indicate write method used by TIFF parsers.
Definition: types.hpp:116
Exiv2::Internal::groupId
IfdId groupId(const std::string &groupName)
Return the group id for a group name.
Definition: tags_int.cpp:2143
Exiv2::Internal::TiffHeaderBase::byteOrder
virtual ByteOrder byteOrder() const
Return the byte order (little or big endian).
Definition: tiffimage_int.cpp:1905
Exiv2::TypeInfo::typeSize
static long typeSize(TypeId typeId)
Return the size in bytes of one element of this type.
Definition: types.cpp:121
Exiv2::Internal::TiffReader::visitSubIfd
virtual void visitSubIfd(TiffSubIfd *object)
Read a TIFF sub-IFD from the data buffer.
Definition: tiffvisitor_int.cpp:1414
Exiv2::Value::AutoPtr
std::auto_ptr< Value > AutoPtr
Shortcut for a Value auto pointer.
Definition: value.hpp:63
Exiv2::Internal::TiffDirectory
This class models a TIFF directory (Ifd). It is a composite component of the TIFF tree.
Definition: tiffcomposite_int.hpp:861
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:723
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:1312
Exiv2::Internal::TiffReader::byteOrder
ByteOrder byteOrder() const
Return the byte order.
Definition: tiffvisitor_int.cpp:1251
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:283
Exiv2::Internal::TiffReader::circularReference
bool circularReference(const byte *start, IfdId group)
Check IFD directory pointer start for circular reference.
Definition: tiffvisitor_int.cpp:1304
tiffcomposite_int.hpp
Internal classes used in a TIFF composite structure.
Exiv2::Internal::TiffEncoder::visitDirectory
virtual void visitDirectory(TiffDirectory *object)
Encode a TIFF directory.
Definition: tiffvisitor_int.cpp:745
Exiv2::Internal::TiffFinder::visitImageEntry
virtual void visitImageEntry(TiffImageEntry *object)
Find tag and group in a TIFF image entry.
Definition: tiffvisitor_int.cpp:154
jpgimage.hpp
Class JpegImage to access JPEG images.
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:116
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:419