Exiv2
tiffcomposite_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  */
27 #ifndef TIFFCOMPOSITE_INT_HPP_
28 #define TIFFCOMPOSITE_INT_HPP_
29 
30 // *****************************************************************************
31 // included header files
32 #include "value.hpp"
33 #include "tifffwd_int.hpp"
34 #include "types.hpp"
35 
36 // + standard includes
37 #include <iosfwd>
38 #include <vector>
39 #include <string>
40 #include <cassert>
41 
42 // *****************************************************************************
43 // namespace extensions
44 namespace Exiv2 {
45 
46  class BasicIo;
47 
48  namespace Internal {
49 
50 // *****************************************************************************
51 // class definitions
52 
54  typedef uint16_t TiffType;
55 
57  const TiffType ttAsciiString = 2;
61  const TiffType ttSignedByte = 6;
62  const TiffType ttUndefined = 7;
63  const TiffType ttSignedShort = 8;
64  const TiffType ttSignedLong = 9;
66  const TiffType ttTiffFloat =11;
67  const TiffType ttTiffDouble =12;
68  const TiffType ttTiffIfd =13;
69 
71  TypeId toTypeId(TiffType tiffType, uint16_t tag, IfdId group);
73  TiffType toTiffType(TypeId typeId);
74 
78  namespace Tag {
79  const uint32_t none = 0x10000;
80  const uint32_t root = 0x20000;
81  const uint32_t next = 0x30000;
82  const uint32_t all = 0x40000;
83  const uint32_t pana = 0x80000;
84  }
85 
90  class TiffPathItem {
91  public:
93 
96  : extendedTag_(extendedTag), group_(group) {}
98 
100 
101  uint16_t tag() const { return static_cast<uint16_t>(extendedTag_ & 0xffff); }
104  uint32_t extendedTag() const { return extendedTag_; }
106  IfdId group() const { return group_; }
108 
109  private:
110  // DATA
111  uint32_t extendedTag_;
112  IfdId group_;
113  }; // class TiffPathItem
114 
124  class IoWrapper {
125  public:
127 
128 
134  IoWrapper(BasicIo& io, const byte* pHeader, long size, OffsetWriter* pow);
136 
138 
139 
145  long write(const byte* pData, long wcount);
152  int putb(byte data);
154  void setTarget(int id, uint32_t target);
156 
157  private:
158  // DATA
159  BasicIo& io_;
160  const byte* pHeader_;
161  long size_;
162  bool wroteHeader_;
163  OffsetWriter* pow_;
164  }; // class IoWrapper
165 
175  public:
177  typedef std::auto_ptr<TiffComponent> AutoPtr;
179  typedef std::vector<TiffComponent*> Components;
180 
182 
183  TiffComponent(uint16_t tag, IfdId group);
186  virtual ~TiffComponent();
188 
190 
191 
203  TiffComponent* addPath(uint16_t tag,
204  TiffPath& tiffPath,
205  TiffComponent* const pRoot,
206  AutoPtr object =AutoPtr(0));
212  TiffComponent* addChild(AutoPtr tiffComponent);
219  TiffComponent* addNext(AutoPtr tiffComponent);
226  void accept(TiffVisitor& visitor);
232  void setStart(const byte* pStart) { pStart_ = const_cast<byte*>(pStart); }
247  uint32_t write(IoWrapper& ioWrapper,
248  ByteOrder byteOrder,
249  int32_t offset,
250  uint32_t valueIdx,
251  uint32_t dataIdx,
252  uint32_t& imageIdx);
254 
256 
257  uint16_t tag() const { return tag_; }
260  IfdId group() const { return group_; }
262  byte* start() const { return pStart_; }
268  AutoPtr clone() const;
274  uint32_t writeData(IoWrapper& ioWrapper,
275  ByteOrder byteOrder,
276  int32_t offset,
277  uint32_t dataIdx,
278  uint32_t& imageIdx) const;
284  uint32_t writeImage(IoWrapper& ioWrapper,
285  ByteOrder byteOrder) const;
290  uint32_t size() const;
294  uint32_t count() const;
301  uint32_t sizeData() const;
308  uint32_t sizeImage() const;
312  // Todo: This is only implemented in TiffEntryBase. It is needed here so that
313  // we can sort components by tag and idx. Something is not quite right.
314  virtual int idx() const;
316 
317  protected:
319 
320  virtual TiffComponent* doAddPath(uint16_t tag,
322  TiffPath& tiffPath,
323  TiffComponent* const pRoot,
324  TiffComponent::AutoPtr object);
326  virtual TiffComponent* doAddChild(AutoPtr tiffComponent);
328  virtual TiffComponent* doAddNext(AutoPtr tiffComponent);
330  virtual void doAccept(TiffVisitor& visitor) =0;
332  virtual uint32_t doWrite(IoWrapper& ioWrapper,
333  ByteOrder byteOrder,
334  int32_t offset,
335  uint32_t valueIdx,
336  uint32_t dataIdx,
337  uint32_t& imageIdx) =0;
339 
341 
342  virtual TiffComponent* doClone() const =0;
345  virtual uint32_t doWriteData(IoWrapper& ioWrapper,
346  ByteOrder byteOrder,
347  int32_t offset,
348  uint32_t dataIdx,
349  uint32_t& imageIdx) const =0;
351  virtual uint32_t doWriteImage(IoWrapper& ioWrapper,
352  ByteOrder byteOrder) const =0;
354  virtual uint32_t doSize() const =0;
356  virtual uint32_t doCount() const =0;
358  virtual uint32_t doSizeData() const =0;
360  virtual uint32_t doSizeImage() const =0;
362 
363  private:
364  // DATA
365  uint16_t tag_;
366  IfdId group_;
367 
371  byte* pStart_;
372 
373  }; // class TiffComponent
374 
377  struct Key;
386  bool operator==(const Key& key) const;
388  uint16_t tag() const { return static_cast<uint16_t>(extendedTag_ & 0xffff); }
389 
390  // DATA
391  const char* make_;
392  uint32_t extendedTag_;
396 
397  }; // struct TiffMappingInfo
398 
402  Key(const std::string& m, uint32_t e, IfdId g) : m_(m), e_(e), g_(g) {}
404  uint32_t e_;
406  };
407 
414  class TiffEntryBase : public TiffComponent {
415  friend class TiffReader;
416  friend class TiffEncoder;
417  friend int selectNikonLd(TiffBinaryArray* const, TiffComponent* const);
418  public:
420 
424  virtual ~TiffEntryBase();
426 
428 
429 
436  void encode(TiffEncoder& encoder, const Exifdatum* datum);
438  void setOffset(int32_t offset) { offset_ = offset; }
440  void setData(byte* pData, int32_t size);
442  void setData(DataBuf buf);
448  void updateValue(Value::AutoPtr value, ByteOrder byteOrder);
454  void setValue(Value::AutoPtr value);
456 
458 
459  TiffType tiffType() const { return tiffType_; }
465  int32_t offset() const { return offset_; }
469  virtual int idx() const;
474  const byte* pData() const { return pData_; }
476  const Value* pValue() const { return pValue_; }
478 
479  protected:
481 
482  TiffEntryBase(const TiffEntryBase& rhs);
485 
487 
488  virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum) =0;
491  void setCount(uint32_t count) { count_ = count; }
493  void setIdx(int idx) { idx_ = idx; }
499  virtual uint32_t doWrite(IoWrapper& ioWrapper,
500  ByteOrder byteOrder,
501  int32_t offset,
502  uint32_t valueIdx,
503  uint32_t dataIdx,
504  uint32_t& imageIdx);
506 
508 
509  virtual uint32_t doCount() const;
515  virtual uint32_t doWriteData(IoWrapper& ioWrapper,
516  ByteOrder byteOrder,
517  int32_t offset,
518  uint32_t dataIdx,
519  uint32_t& imageIdx) const;
524  virtual uint32_t doWriteImage(IoWrapper& ioWrapper,
525  ByteOrder byteOrder) const;
527  virtual uint32_t doSize() const;
529  virtual uint32_t doSizeData() const;
531  virtual uint32_t doSizeImage() const;
533 
535  static uint32_t writeOffset(byte* buf,
536  int32_t offset,
538  ByteOrder byteOrder);
539 
540  private:
542 
543  TiffEntryBase& operator=(const TiffEntryBase& rhs);
546 
547  // DATA
548  TiffType tiffType_;
549  uint32_t count_;
550  int32_t offset_;
551 
555  uint32_t size_;
556  byte* pData_;
557  bool isMalloced_;
558  int idx_;
559  Value* pValue_;
560 
561  }; // class TiffEntryBase
562 
566  class TiffEntry : public TiffEntryBase {
567  public:
569 
570  TiffEntry(uint16_t tag, IfdId group) : TiffEntryBase(tag, group) {}
573  virtual ~TiffEntry();
575 
576  protected:
578 
579  virtual void doAccept(TiffVisitor& visitor);
580  virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum);
582 
584 
585  virtual TiffEntry* doClone() const;
587 
588  }; // class TiffEntry
589 
599  public:
601 
602  TiffDataEntryBase(uint16_t tag, IfdId group, uint16_t szTag, IfdId szGroup)
604  : TiffEntryBase(tag, group),
605  szTag_(szTag), szGroup_(szGroup) {}
607  virtual ~TiffDataEntryBase();
609 
611 
612 
621  virtual void setStrips(const Value* pSize,
622  const byte* pData,
623  uint32_t sizeData,
624  uint32_t baseOffset) =0;
626 
628 
629  uint16_t szTag() const { return szTag_; }
632  IfdId szGroup() const { return szGroup_; }
634 
635  private:
636  // DATA
637  const uint16_t szTag_;
638  const IfdId szGroup_;
639 
640  }; // class TiffDataEntryBase
641 
654  friend class TiffEncoder;
655  public:
657 
658  TiffDataEntry(uint16_t tag, IfdId group, uint16_t szTag, IfdId szGroup)
661  pDataArea_(0), sizeDataArea_(0) {}
663  virtual ~TiffDataEntry();
665 
667 
668  virtual void setStrips(const Value* pSize,
669  const byte* pData,
670  uint32_t sizeData,
671  uint32_t baseOffset);
673 
674  protected:
676 
677  virtual void doAccept(TiffVisitor& visitor);
678  virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum);
690  virtual uint32_t doWrite(IoWrapper& ioWrapper,
691  ByteOrder byteOrder,
692  int32_t offset,
693  uint32_t valueIdx,
694  uint32_t dataIdx,
695  uint32_t& imageIdx);
697 
699 
700  virtual TiffDataEntry* doClone() const;
705  virtual uint32_t doWriteData(IoWrapper& ioWrapper,
706  ByteOrder byteOrder,
707  int32_t offset,
708  uint32_t dataIdx,
709  uint32_t& imageIdx) const;
710  // Using doWriteImage from base class
711  // Using doSize() from base class
713  virtual uint32_t doSizeData() const;
714  // Using doSizeImage from base class
716 
717  private:
718  // DATA
719  byte* pDataArea_;
720  uint32_t sizeDataArea_;
721 
722  }; // class TiffDataEntry
723 
737  friend class TiffEncoder;
738  public:
740 
741  TiffImageEntry(uint16_t tag, IfdId group, uint16_t szTag, IfdId szGroup)
745  virtual ~TiffImageEntry();
747 
749 
750  virtual void setStrips(const Value* pSize,
751  const byte* pData,
752  uint32_t sizeData,
753  uint32_t baseOffset);
755 
756  protected:
758 
759  virtual void doAccept(TiffVisitor& visitor);
760  virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum);
766  virtual uint32_t doWrite(IoWrapper& ioWrapper,
767  ByteOrder byteOrder,
768  int32_t offset,
769  uint32_t valueIdx,
770  uint32_t dataIdx,
771  uint32_t& imageIdx);
773 
775 
776  virtual TiffImageEntry* doClone() const;
785  virtual uint32_t doWriteData(IoWrapper& ioWrapper,
786  ByteOrder byteOrder,
787  int32_t offset,
788  uint32_t dataIdx,
789  uint32_t& imageIdx) const;
794  virtual uint32_t doWriteImage(IoWrapper& ioWrapper,
795  ByteOrder byteOrder) const;
797  virtual uint32_t doSize() const;
799  virtual uint32_t doSizeData() const;
801  virtual uint32_t doSizeImage() const;
803 
804  private:
806  typedef std::vector<std::pair<const byte*, uint32_t> > Strips;
807 
808  // DATA
809  Strips strips_;
810 
811  }; // class TiffImageEntry
812 
819  class TiffSizeEntry : public TiffEntryBase {
820  public:
822 
823  TiffSizeEntry(uint16_t tag, IfdId group, uint16_t dtTag, IfdId dtGroup)
825  : TiffEntryBase(tag, group), dtTag_(dtTag), dtGroup_(dtGroup) {}
827  virtual ~TiffSizeEntry();
829 
831 
832  uint16_t dtTag() const { return dtTag_; }
835  IfdId dtGroup() const { return dtGroup_; }
837 
838  protected:
840 
841  virtual void doAccept(TiffVisitor& visitor);
842  virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum);
844 
846 
847  virtual TiffSizeEntry* doClone() const;
849 
850  private:
851  // DATA
852  const uint16_t dtTag_;
853  const IfdId dtGroup_;
854 
855  }; // class TiffSizeEntry
856 
861  class TiffDirectory : public TiffComponent {
862  friend class TiffEncoder;
863  public:
865 
866  TiffDirectory(uint16_t tag, IfdId group, bool hasNext =true)
868  : TiffComponent(tag, group), hasNext_(hasNext), pNext_(0) {}
870  virtual ~TiffDirectory();
872 
874 
875  bool hasNext() const { return hasNext_; }
878 
879  protected:
881 
882  TiffDirectory(const TiffDirectory& rhs);
885 
887 
888  virtual TiffComponent* doAddPath(uint16_t tag,
889  TiffPath& tiffPath,
890  TiffComponent* const pRoot,
891  TiffComponent::AutoPtr object);
892  virtual TiffComponent* doAddChild(TiffComponent::AutoPtr tiffComponent);
893  virtual TiffComponent* doAddNext(TiffComponent::AutoPtr tiffComponent);
894  virtual void doAccept(TiffVisitor& visitor);
900  virtual uint32_t doWrite(IoWrapper& ioWrapper,
901  ByteOrder byteOrder,
902  int32_t offset,
903  uint32_t valueIdx,
904  uint32_t dataIdx,
905  uint32_t& imageIdx);
907 
909 
910  virtual TiffDirectory* doClone() const;
915  virtual uint32_t doWriteData(IoWrapper& ioWrapper,
916  ByteOrder byteOrder,
917  int32_t offset,
918  uint32_t dataIdx,
919  uint32_t& imageIdx) const;
926  virtual uint32_t doWriteImage(IoWrapper& ioWrapper,
927  ByteOrder byteOrder) const;
932  virtual uint32_t doSize() const;
937  virtual uint32_t doCount() const;
942  virtual uint32_t doSizeData() const;
947  virtual uint32_t doSizeImage() const;
949 
950  private:
952 
953  TiffDirectory& operator=(const TiffDirectory& rhs);
956 
958 
959  uint32_t writeDirEntry(IoWrapper& ioWrapper,
961  ByteOrder byteOrder,
962  int32_t offset,
963  TiffComponent* pTiffComponent,
964  uint32_t valueIdx,
965  uint32_t dataIdx,
966  uint32_t& imageIdx) const;
968 
969  private:
970  // DATA
971  Components components_;
972  const bool hasNext_;
973  TiffComponent* pNext_;
974 
975  }; // class TiffDirectory
976 
984  class TiffSubIfd : public TiffEntryBase {
985  friend class TiffReader;
986  public:
988 
989  TiffSubIfd(uint16_t tag, IfdId group, IfdId newGroup);
992  virtual ~TiffSubIfd();
994 
995  protected:
997 
998  TiffSubIfd(const TiffSubIfd& rhs);
1001 
1003 
1004  virtual TiffComponent* doAddPath(uint16_t tag,
1005  TiffPath& tiffPath,
1006  TiffComponent* const pRoot,
1007  TiffComponent::AutoPtr object);
1008  virtual TiffComponent* doAddChild(TiffComponent::AutoPtr tiffComponent);
1009  virtual void doAccept(TiffVisitor& visitor);
1010  virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum);
1016  virtual uint32_t doWrite(IoWrapper& ioWrapper,
1017  ByteOrder byteOrder,
1018  int32_t offset,
1019  uint32_t valueIdx,
1020  uint32_t dataIdx,
1021  uint32_t& imageIdx);
1023 
1025 
1026  virtual TiffSubIfd* doClone() const;
1031  virtual uint32_t doWriteData(IoWrapper& ioWrapper,
1032  ByteOrder byteOrder,
1033  int32_t offset,
1034  uint32_t dataIdx,
1035  uint32_t& imageIdx) const;
1040  virtual uint32_t doWriteImage(IoWrapper& ioWrapper,
1041  ByteOrder byteOrder) const;
1043  uint32_t doSize() const;
1045  virtual uint32_t doSizeData() const;
1047  virtual uint32_t doSizeImage() const;
1049 
1050  private:
1052 
1053  TiffSubIfd& operator=(const TiffSubIfd& rhs);
1056 
1058  typedef std::vector<TiffDirectory*> Ifds;
1059 
1060  // DATA
1061  IfdId newGroup_;
1062  Ifds ifds_;
1063 
1064  }; // class TiffSubIfd
1065 
1073  class TiffMnEntry : public TiffEntryBase {
1074  friend class TiffReader;
1075  friend class TiffDecoder;
1076  friend class TiffEncoder;
1077  public:
1079 
1080  TiffMnEntry(uint16_t tag, IfdId group, IfdId mnGroup);
1083  virtual ~TiffMnEntry();
1085 
1086  protected:
1088 
1089  virtual TiffComponent* doAddPath(uint16_t tag,
1090  TiffPath& tiffPath,
1091  TiffComponent* const pRoot,
1092  TiffComponent::AutoPtr object);
1093  virtual TiffComponent* doAddChild(TiffComponent::AutoPtr tiffComponent);
1094  virtual TiffComponent* doAddNext(TiffComponent::AutoPtr tiffComponent);
1095  virtual void doAccept(TiffVisitor& visitor);
1096  virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum);
1101  virtual uint32_t doWrite(IoWrapper& ioWrapper,
1102  ByteOrder byteOrder,
1103  int32_t offset,
1104  uint32_t valueIdx,
1105  uint32_t dataIdx,
1106  uint32_t& imageIdx);
1108 
1110 
1111  virtual TiffMnEntry* doClone() const;
1113  virtual uint32_t doCount() const;
1114  // Using doWriteData from base class
1115  // Using doWriteImage from base class
1120  virtual uint32_t doSize() const;
1121  // Using doSizeData from base class
1122  // Using doSizeImage from base class
1124 
1125  private:
1127 
1128  TiffMnEntry(const TiffMnEntry& rhs);
1131  TiffMnEntry& operator=(const TiffMnEntry& rhs);
1133 
1134  // DATA
1135  IfdId mnGroup_;
1136  TiffComponent* mn_;
1137 
1138  }; // class TiffMnEntry
1139 
1150  friend class TiffReader;
1151  public:
1153 
1154  TiffIfdMakernote(uint16_t tag,
1156  IfdId group,
1157  IfdId mnGroup,
1158  MnHeader* pHeader,
1159  bool hasNext =true);
1161  virtual ~TiffIfdMakernote();
1163 
1165 
1166 
1171  bool readHeader(const byte* pData, uint32_t size, ByteOrder byteOrder);
1179  void setImageByteOrder(ByteOrder byteOrder) { imageByteOrder_ = byteOrder; }
1181 
1183 
1184  uint32_t sizeHeader() const;
1187  uint32_t writeHeader(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
1192  uint32_t mnOffset() const;
1198  uint32_t ifdOffset() const;
1205  ByteOrder byteOrder() const;
1209  ByteOrder imageByteOrder() const { return imageByteOrder_; }
1215  uint32_t baseOffset() const;
1217 
1218  protected:
1220 
1221  virtual TiffComponent* doAddPath(uint16_t tag,
1222  TiffPath& tiffPath,
1223  TiffComponent* const pRoot,
1224  TiffComponent::AutoPtr object);
1225  virtual TiffComponent* doAddChild(TiffComponent::AutoPtr tiffComponent);
1226  virtual TiffComponent* doAddNext(TiffComponent::AutoPtr tiffComponent);
1227  virtual void doAccept(TiffVisitor& visitor);
1233  virtual uint32_t doWrite(IoWrapper& ioWrapper,
1235  int32_t offset,
1236  uint32_t valueIdx,
1237  uint32_t dataIdx,
1238  uint32_t& imageIdx);
1240 
1242 
1243  virtual TiffIfdMakernote* doClone() const;
1248  virtual uint32_t doWriteData(IoWrapper& ioWrapper,
1250  int32_t offset,
1251  uint32_t dataIdx,
1252  uint32_t& imageIdx) const;
1257  virtual uint32_t doWriteImage(IoWrapper& ioWrapper,
1258  ByteOrder byteOrder) const;
1263  virtual uint32_t doSize() const;
1269  virtual uint32_t doCount() const;
1274  virtual uint32_t doSizeData() const;
1279  virtual uint32_t doSizeImage() const;
1281 
1282  private:
1291  TiffIfdMakernote(const TiffIfdMakernote& rhs);
1294  TiffIfdMakernote& operator=(const TiffIfdMakernote& rhs);
1296 
1297  // DATA
1298  MnHeader* pHeader_;
1299  TiffDirectory ifd_;
1300  uint32_t mnOffset_;
1301  ByteOrder imageByteOrder_;
1302 
1303  }; // class TiffIfdMakernote
1304 
1309  typedef int (*CfgSelFct)(uint16_t, const byte*, uint32_t, TiffComponent* const);
1310 
1312  typedef DataBuf (*CryptFct)(uint16_t, const byte*, uint32_t, TiffComponent* const);
1313 
1315  struct ArrayDef {
1317  bool operator==(uint32_t idx) const { return idx_ == idx; }
1319  uint32_t size(uint16_t tag, IfdId group) const;
1320  // DATA
1321  uint32_t idx_;
1323  uint32_t count_;
1324  };
1325 
1327  struct ArrayCfg {
1332  uint32_t tagStep() const { return elDefaultDef_.size(0, group_); }
1333  //DATA
1338  bool hasSize_;
1340  bool concat_;
1342  };
1343 
1345  struct ArraySet {
1346  const ArrayCfg cfg_;
1347  const ArrayDef* def_;
1348  const int defSize_;
1349  };
1350 
1357  public:
1359 
1360  TiffBinaryArray(uint16_t tag,
1362  IfdId group,
1363  const ArrayCfg* arrayCfg,
1364  const ArrayDef* arrayDef,
1365  int defSize);
1367  TiffBinaryArray(uint16_t tag,
1368  IfdId group,
1369  const ArraySet* arraySet,
1370  int setSize,
1371  CfgSelFct cfgSelFct);
1373  virtual ~TiffBinaryArray();
1375 
1377 
1378  uint32_t addElement(uint32_t idx, const ArrayDef& def);
1391  bool initialize(IfdId group);
1402  bool initialize(TiffComponent* const pRoot);
1404  void iniOrigDataBuf();
1406  bool updOrigDataBuf(const byte* pData, uint32_t size);
1408  void setDecoded(bool decoded) { decoded_ = decoded; }
1410 
1412 
1413  const ArrayCfg* cfg() const { return arrayCfg_; }
1416  const ArrayDef* def() const { return arrayDef_; }
1418  int defSize() const { return defSize_; }
1420  bool decoded() const { return decoded_; }
1422 
1423  protected:
1425 
1426  TiffBinaryArray(const TiffBinaryArray& rhs);
1429 
1431 
1432 
1435  virtual TiffComponent* doAddPath(uint16_t tag,
1436  TiffPath& tiffPath,
1437  TiffComponent* const pRoot,
1438  TiffComponent::AutoPtr object);
1442  virtual TiffComponent* doAddChild(TiffComponent::AutoPtr tiffComponent);
1443  virtual void doAccept(TiffVisitor& visitor);
1444  virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum);
1448  virtual uint32_t doWrite(IoWrapper& ioWrapper,
1449  ByteOrder byteOrder,
1450  int32_t offset,
1451  uint32_t valueIdx,
1452  uint32_t dataIdx,
1453  uint32_t& imageIdx);
1455 
1457 
1458  virtual TiffBinaryArray* doClone() const;
1460  virtual uint32_t doCount() const;
1461  // Using doWriteData from base class
1462  // Using doWriteImage from base class
1466  virtual uint32_t doSize() const;
1467  // Using doSizeData from base class
1468  // Using doSizeImage from base class
1470 
1471  private:
1473 
1474  TiffBinaryArray& operator=(const TiffBinaryArray& rhs);
1477 
1478  // DATA
1479  const CfgSelFct cfgSelFct_;
1480  const ArraySet* arraySet_;
1481  const ArrayCfg* arrayCfg_;
1482  const ArrayDef* arrayDef_;
1483  int defSize_;
1484  int setSize_;
1485  Components elements_;
1486  byte* origData_;
1487  uint32_t origSize_;
1488  TiffComponent* pRoot_;
1489  bool decoded_;
1490  }; // class TiffBinaryArray
1491 
1496  public:
1498 
1499  TiffBinaryElement(uint16_t tag, IfdId group);
1502  virtual ~TiffBinaryElement();
1504 
1506 
1507 
1510  void setElDef(const ArrayDef& def) { elDef_ = def; }
1514  void setElByteOrder(ByteOrder byteOrder) { elByteOrder_ = byteOrder; }
1516 
1518 
1519 
1522  const ArrayDef* elDef() const { return &elDef_; }
1526  ByteOrder elByteOrder() const { return elByteOrder_; }
1528 
1529  protected:
1531 
1532  virtual void doAccept(TiffVisitor& visitor);
1533  virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum);
1537  virtual uint32_t doWrite(IoWrapper& ioWrapper,
1538  ByteOrder byteOrder,
1539  int32_t offset,
1540  uint32_t valueIdx,
1541  uint32_t dataIdx,
1542  uint32_t& imageIdx);
1544 
1546 
1547  virtual TiffBinaryElement* doClone() const;
1551  virtual uint32_t doCount() const;
1552  // Using doWriteData from base class
1553  // Using doWriteImage from base class
1558  virtual uint32_t doSize() const;
1559  // Using doSizeData from base class
1560  // Using doSizeImage from base class
1562 
1563  private:
1564  // DATA
1565  ArrayDef elDef_;
1566  ByteOrder elByteOrder_;
1567 
1568  }; // class TiffBinaryElement
1569 
1570 // *****************************************************************************
1571 // template, inline and free functions
1572 
1577  bool cmpTagLt(TiffComponent const* lhs, TiffComponent const* rhs);
1578 
1583  bool cmpGroupLt(TiffComponent const* lhs, TiffComponent const* rhs);
1584 
1586  TiffComponent::AutoPtr newTiffEntry(uint16_t tag, IfdId group);
1587 
1589  TiffComponent::AutoPtr newTiffMnEntry(uint16_t tag, IfdId group);
1590 
1592  TiffComponent::AutoPtr newTiffBinaryElement(uint16_t tag, IfdId group);
1593 
1595  template<IfdId newGroup>
1597  {
1598  return TiffComponent::AutoPtr(new TiffDirectory(tag, newGroup));
1599  }
1600 
1602  template<IfdId newGroup>
1604  {
1605  return TiffComponent::AutoPtr(new TiffSubIfd(tag, group, newGroup));
1606  }
1607 
1609  template<const ArrayCfg* arrayCfg, int N, const ArrayDef (&arrayDef)[N]>
1611  {
1612  // *& acrobatics is a workaround for a MSVC 7.1 bug
1613  return TiffComponent::AutoPtr(
1614  new TiffBinaryArray(tag, group, arrayCfg, *(&arrayDef), N));
1615  }
1616 
1618  template<const ArrayCfg* arrayCfg>
1620  {
1621  return TiffComponent::AutoPtr(
1622  new TiffBinaryArray(tag, group, arrayCfg, 0, 0));
1623  }
1624 
1626  template<const ArraySet* arraySet, int N, CfgSelFct cfgSelFct>
1628  {
1629  return TiffComponent::AutoPtr(
1630  new TiffBinaryArray(tag, group, arraySet, N, cfgSelFct));
1631  }
1632 
1634  template<uint16_t szTag, IfdId szGroup>
1636  {
1637  return TiffComponent::AutoPtr(
1638  new TiffDataEntry(tag, group, szTag, szGroup));
1639  }
1640 
1642  template<uint16_t dtTag, IfdId dtGroup>
1644  {
1645  return TiffComponent::AutoPtr(
1646  new TiffSizeEntry(tag, group, dtTag, dtGroup));
1647  }
1648 
1650  template<uint16_t szTag, IfdId szGroup>
1652  {
1653  return TiffComponent::AutoPtr(
1654  new TiffImageEntry(tag, group, szTag, szGroup));
1655  }
1656 
1658  template<uint16_t dtTag, IfdId dtGroup>
1660  {
1661  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1662  return TiffComponent::AutoPtr(
1663  new TiffSizeEntry(tag, group, dtTag, dtGroup));
1664  }
1665 
1666 }} // namespace Internal, Exiv2
1667 
1668 #endif // #ifndef TIFFCOMPOSITE_INT_HPP_
CryptFct cryptFct_
Crypt function, 0 if not used.
Definition: tiffcomposite_int.hpp:1337
This class is the basis for Makernote support in TIFF. It contains a pointer to a concrete Makernote...
Definition: tiffcomposite_int.hpp:1073
const TiffType ttTiffDouble
TIFF DOUBLE type.
Definition: tiffcomposite_int.hpp:67
TIFF composite visitor to read the TIFF structure from a block of memory and build the composite from...
Definition: tiffvisitor_int.hpp:628
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)
Implements encode().
Definition: tiffcomposite_int.cpp:972
bool concat_
If true, concatenate gaps between defined tags to single tags.
Definition: tiffcomposite_int.hpp:1340
Search key for TIFF mapping structures.
Definition: tiffcomposite_int.hpp:400
virtual uint32_t doWrite(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t valueIdx, uint32_t dataIdx, uint32_t &imageIdx)
Implements write(). Write the value of a standard TIFF entry to the ioWrapper, return the number of b...
Definition: tiffcomposite_int.cpp:1245
const uint32_t next
Special tag: next IFD.
Definition: tiffcomposite_int.hpp:81
An interface for simple binary IO.
Definition: basicio.hpp:55
virtual uint32_t doCount() const
Implements count(). Returns the count from the element definition.
Definition: tiffcomposite_int.cpp:1065
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)
Implements encode().
Definition: tiffcomposite_int.cpp:987
virtual uint32_t doSize() const =0
Implements size().
TiffComponent::AutoPtr newTiffBinaryArray0(uint16_t tag, IfdId group)
Function to create and initialize a new binary array entry.
Definition: tiffcomposite_int.hpp:1610
uint32_t extendedTag_
Tag (32 bit so that it can contain special tags)
Definition: tiffcomposite_int.hpp:392
uint32_t count_
Number of components.
Definition: tiffcomposite_int.hpp:1323
std::vector< TiffComponent * > Components
Container type to hold all metadata.
Definition: tiffcomposite_int.hpp:179
virtual TiffComponent * doAddNext(TiffComponent::AutoPtr tiffComponent)
Implements addNext(). The default implementation does nothing.
Definition: tiffcomposite_int.cpp:863
virtual uint32_t doWriteImage(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Implements writeImage(). Standard TIFF entries have no image data: write nothing and return 0...
Definition: tiffcomposite_int.cpp:1583
const TiffType ttUnsignedByte
Exif BYTE type.
Definition: tiffcomposite_int.hpp:56
virtual uint32_t doWrite(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t valueIdx, uint32_t dataIdx, uint32_t &imageIdx)=0
Implements write().
void setTarget(int id, uint32_t target)
Wrapper for OffsetWriter::setTarget(), using an int instead of the enum to reduce include deps...
Definition: tiffcomposite_int.cpp:87
int(* CfgSelFct)(uint16_t, const byte *, uint32_t, TiffComponent *const)
Function pointer type for a function to determine which cfg + def of a corresponding array set to use...
Definition: tiffcomposite_int.hpp:1309
IfdId dtGroup() const
Return the group of the related entry which has the data area.
Definition: tiffcomposite_int.hpp:835
TiffComponent::AutoPtr newTiffThumbSize(uint16_t tag, IfdId group)
Function to create and initialize a new TIFF entry for a thumbnail (size)
Definition: tiffcomposite_int.hpp:1643
const TiffType ttSignedLong
Exif SLONG type.
Definition: tiffcomposite_int.hpp:64
TiffType tiffType_
TIFF type of the element.
Definition: tiffcomposite_int.hpp:1322
ByteOrder byteOrder() const
Return the byte order for the makernote. Requires the image byte order to be set (setImageByteOrder()...
Definition: tiffcomposite_int.cpp:519
TiffBinaryArray(uint16_t tag, IfdId group, const ArrayCfg *arrayCfg, const ArrayDef *arrayDef, int defSize)
Constructor.
Definition: tiffcomposite_int.cpp:128
virtual void setStrips(const Value *pSize, const byte *pData, uint32_t sizeData, uint32_t baseOffset)
Set the data areas ("strips").
Definition: tiffcomposite_int.cpp:400
Internal TIFF parser related typedefs and forward definitions.
Composite to model an array of different tags. The tag types as well as other aspects of the array ar...
Definition: tiffcomposite_int.hpp:1356
ByteOrder
Type to express the byte order (little or big endian)
Definition: types.hpp:113
Utility class containing a character array. All it does is to take care of memory allocation and dele...
Definition: types.hpp:204
virtual ~TiffDirectory()
Virtual destructor.
Definition: tiffcomposite_int.cpp:183
bool operator==(uint32_t idx) const
Comparison with idx.
Definition: tiffcomposite_int.hpp:1317
virtual uint32_t doWriteData(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t dataIdx, uint32_t &imageIdx) const
This class does not really implement writeData(), it only has write(). This method must not be called...
Definition: tiffcomposite_int.cpp:1544
bool initialize(IfdId group)
Setup cfg and def for the component, in case of a complex binary array. Else do nothing. Return true if the initialization succeeded, else false.
Definition: tiffcomposite_int.cpp:570
ArrayDef elDefaultDef_
Default element.
Definition: tiffcomposite_int.hpp:1341
const byte * pData() const
Return a pointer to the binary representation of the value of this component.
Definition: tiffcomposite_int.hpp:474
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition: tiffcomposite_int.cpp:924
TiffComponent::AutoPtr newTiffMnEntry(uint16_t tag, IfdId group)
Function to create and initialize a new TIFF makernote entry.
Definition: tiffcomposite_int.cpp:1891
bool operator==(const Key &key) const
Compare a TiffMappingInfo with a TiffMappingInfo::Key. The two are equal if TiffMappingInfo::make_ eq...
Definition: tiffcomposite_int.cpp:55
virtual uint32_t doSizeImage() const
Implements sizeImage(). Return the size of the image data area.
Definition: tiffcomposite_int.cpp:1827
TiffComponent::AutoPtr newTiffDirectory(uint16_t tag, IfdId)
Function to create and initialize a new TIFF directory.
Definition: tiffcomposite_int.hpp:1596
virtual void doAccept(TiffVisitor &visitor)=0
Implements accept().
void encode(TiffEncoder &encoder, const Exifdatum *datum)
Encode a TIFF component from the metadatum provided and information from the encoder as needed...
Definition: tiffcomposite_int.cpp:967
uint32_t sizeHeader() const
Return the size of the header in bytes.
Definition: tiffcomposite_int.cpp:552
uint32_t sizeData() const
Return the size in bytes of the IFD data of this component when written to a binary image...
Definition: tiffcomposite_int.cpp:1744
TiffComponent::AutoPtr newTiffImageData(uint16_t tag, IfdId group)
Function to create and initialize a new TIFF entry for image data.
Definition: tiffcomposite_int.hpp:1651
virtual uint32_t doSizeImage() const
Implements sizeImage(). Return the sum of the image sizes of all sub-IFDs.
Definition: tiffcomposite_int.cpp:1808
TypeId
Exiv2 value type identifiers.
Definition: types.hpp:130
virtual TiffIfdMakernote * doClone() const
Internal virtual copy constructor, implements clone().
Definition: tiffcomposite_int.cpp:333
virtual uint32_t doSize() const
Implements size(). Return the size of the strip pointers.
Definition: tiffcomposite_int.cpp:1687
virtual uint32_t doSize() const
Implements size(). Returns count * type-size, both taken from the element definition.
Definition: tiffcomposite_int.cpp:1738
uint32_t e_
Extended tag.
Definition: tiffcomposite_int.hpp:404
int32_t offset() const
Return the offset to the data area relative to the base for the component (usually the start of the T...
Definition: tiffcomposite_int.hpp:465
TIFF composite visitor to decode metadata from the TIFF tree and add it to an Image, which is supplied in the constructor (Visitor pattern). Used by TiffParser to decode the metadata from a TIFF composite.
Definition: tiffvisitor_int.hpp:284
IfdId group_
Group for the elements.
Definition: tiffcomposite_int.hpp:1334
IoWrapper(BasicIo &io, const byte *pHeader, long size, OffsetWriter *pow)
Definition: tiffcomposite_int.cpp:63
virtual void setStrips(const Value *pSize, const byte *pData, uint32_t sizeData, uint32_t baseOffset)
Set the data areas ("strips").
Definition: tiffcomposite_int.cpp:467
const ArrayCfg * cfg() const
Return a pointer to the configuration.
Definition: tiffcomposite_int.hpp:1414
TiffComponent * addNext(AutoPtr tiffComponent)
Add a "next" component to the component. Default is to do nothing.
Definition: tiffcomposite_int.cpp:853
TiffIfdMakernote(uint16_t tag, IfdId group, IfdId mnGroup, MnHeader *pHeader, bool hasNext=true)
Default constructor.
Definition: tiffcomposite_int.cpp:115
const ArrayCfg cfg_
Binary array configuration.
Definition: tiffcomposite_int.hpp:1346
virtual uint32_t doSize() const
Implements size(). Return the size of a standard TIFF entry.
Definition: tiffcomposite_int.cpp:1682
virtual uint32_t doSizeImage() const
Implements sizeImage(). Return the sum of the image sizes of all components plus that of the next-IFD...
Definition: tiffcomposite_int.cpp:1796
const int defSize_
Size of the array definition array.
Definition: tiffcomposite_int.hpp:1348
virtual uint32_t doWriteImage(IoWrapper &ioWrapper, ByteOrder byteOrder) const =0
Implements writeImage().
virtual ~TiffDataEntry()
Virtual destructor.
Definition: tiffcomposite_int.cpp:214
virtual uint32_t doCount() const
Implements count(). Todo: Document it!
Definition: tiffcomposite_int.cpp:1043
void setOffset(int32_t offset)
Set the offset.
Definition: tiffcomposite_int.hpp:438
const char * make_
Camera make for which these mapping functions apply.
Definition: tiffcomposite_int.hpp:391
virtual uint32_t doCount() const
Implements count(). Return the number of entries in the IFD of the Makernote. Does not count entries ...
Definition: tiffcomposite_int.cpp:1038
This abstract base class provides the common functionality of an IFD directory entry and defines an e...
Definition: tiffcomposite_int.hpp:414
uint32_t ifdOffset() const
Return the offset to the start of the Makernote IFD from the start of the Makernote. Returns 0 if there is no header.
Definition: tiffcomposite_int.cpp:513
virtual TiffComponent * doAddChild(AutoPtr tiffComponent)
Implements addChild(). The default implementation does nothing.
Definition: tiffcomposite_int.cpp:811
virtual TiffDataEntry * doClone() const
Internal virtual copy constructor, implements clone().
Definition: tiffcomposite_int.cpp:302
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition: tiffcomposite_int.cpp:944
const uint32_t none
Dummy tag.
Definition: tiffcomposite_int.hpp:79
uint8_t byte
1 byte unsigned integer type.
Definition: types.hpp:105
const uint32_t all
Special tag: all tags in a group.
Definition: tiffcomposite_int.hpp:82
A TIFF IFD entry containing the size of a data area of a related TiffDataEntry. This component is use...
Definition: tiffcomposite_int.hpp:819
Combination of array configuration and definition for arrays.
Definition: tiffcomposite_int.hpp:1345
std::auto_ptr< TiffComponent > AutoPtr
TiffComponent auto_ptr type.
Definition: tiffcomposite_int.hpp:177
void setByteOrder(ByteOrder byteOrder)
Set the byte order for the makernote.
Definition: tiffcomposite_int.cpp:547
virtual uint32_t doCount() const
Implements count(). Return the number of entries in the TIFF directory. Does not count entries which ...
Definition: tiffcomposite_int.cpp:1017
TiffPathItem(uint32_t extendedTag, IfdId group)
Constructor.
Definition: tiffcomposite_int.hpp:95
byte * start() const
Return a pointer to the start of the binary representation of the component.
Definition: tiffcomposite_int.hpp:262
virtual TiffComponent * doAddPath(uint16_t tag, TiffPath &tiffPath, TiffComponent *const pRoot, TiffComponent::AutoPtr object)
Implements addPath(). The default implementation does nothing.
Definition: tiffcomposite_int.cpp:699
virtual uint32_t doWriteData(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t dataIdx, uint32_t &imageIdx) const
Implements writeData(). Standard TIFF entries have no data: write nothing and return 0...
Definition: tiffcomposite_int.cpp:1487
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition: tiffcomposite_int.cpp:902
bool hasSize_
If true, first tag is the size element.
Definition: tiffcomposite_int.hpp:1338
Simple IO wrapper to ensure that the header is only written if there is any other data at all...
Definition: tiffcomposite_int.hpp:124
Type definitions for Exiv2 and related functionality.
const ArrayDef * elDef() const
Return the array definition of this element.
Definition: tiffcomposite_int.hpp:1522
A standard TIFF IFD entry consisting of a value which is an offset to a data area and the data area...
Definition: tiffcomposite_int.hpp:653
virtual TiffDirectory * doClone() const
Internal virtual copy constructor, implements clone().
Definition: tiffcomposite_int.cpp:317
TiffComponent::AutoPtr newTiffBinaryArray2(uint16_t tag, IfdId group)
Function to create and initialize a new complex binary array entry.
Definition: tiffcomposite_int.hpp:1627
const TiffType ttUnsignedShort
Exif SHORT type.
Definition: tiffcomposite_int.hpp:58
DecoderFct decoderFct_
Decoder function for matching tags.
Definition: tiffcomposite_int.hpp:394
uint32_t baseOffset() const
Return the base offset for use with the makernote IFD entries relative to the start of the TIFF heade...
Definition: tiffcomposite_int.cpp:533
virtual TiffMnEntry * doClone() const
Internal virtual copy constructor, implements clone().
Definition: tiffcomposite_int.cpp:327
uint32_t extendedTag() const
Return the extended tag (32 bit so that it can contain special tags)
Definition: tiffcomposite_int.hpp:104
TypeId toTypeId(TiffType tiffType, uint16_t tag, IfdId group)
Convert the tiffType of a tag and group to an Exiv2 typeId.
Definition: tiffcomposite_int.cpp:1841
IfdId group() const
Return the group.
Definition: tiffcomposite_int.hpp:106
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)
Implements encode().
Definition: tiffcomposite_int.cpp:977
uint32_t idx_
Index in bytes from the start.
Definition: tiffcomposite_int.hpp:1321
uint32_t size(uint16_t tag, IfdId group) const
Get the size in bytes of a tag.
Definition: tiffcomposite_int.cpp:564
virtual TiffEntry * doClone() const
Internal virtual copy constructor, implements clone().
Definition: tiffcomposite_int.cpp:297
This class models a TIFF sub-directory (sub-IFD). A sub-IFD is an entry with one or more values that ...
Definition: tiffcomposite_int.hpp:984
virtual uint32_t doWrite(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t valueIdx, uint32_t dataIdx, uint32_t &imageIdx)
Implements write(). Write pointers into the data area to the ioWrapper, relative to the offsets in th...
Definition: tiffcomposite_int.cpp:1283
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)=0
Implements encode().
const ArrayDef * def_
Binary array definition array.
Definition: tiffcomposite_int.hpp:1347
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)
Implements encode().
Definition: tiffcomposite_int.cpp:1002
bool decoded() const
Return the flag which indicates if the array was decoded.
Definition: tiffcomposite_int.hpp:1420
bool readHeader(const byte *pData, uint32_t size, ByteOrder byteOrder)
Read the header from a data buffer, return true if successful.
Definition: tiffcomposite_int.cpp:539
uint32_t write(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t valueIdx, uint32_t dataIdx, uint32_t &imageIdx)
Write a TiffComponent to a binary image.
Definition: tiffcomposite_int.cpp:1070
std::stack< TiffPathItem > TiffPath
Stack to hold a path from the TIFF root element to a TIFF entry.
Definition: tifffwd_int.hpp:111
virtual uint32_t doWriteImage(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Implements writeImage(). Write the image data of each sub-IFD to the ioWrapper. Return the number of ...
Definition: tiffcomposite_int.cpp:1589
TiffType elTiffType_
Type for the array entry and the size element, if any.
Definition: tiffcomposite_int.hpp:1336
TiffSubIfd(uint16_t tag, IfdId group, IfdId newGroup)
Default constructor.
Definition: tiffcomposite_int.cpp:105
virtual TiffComponent * doAddPath(uint16_t tag, TiffPath &tiffPath, TiffComponent *const pRoot, TiffComponent::AutoPtr object)
Implements addPath(). The default implementation does nothing.
Definition: tiffcomposite_int.cpp:756
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)
Implements encode().
Definition: tiffcomposite_int.cpp:1007
virtual uint32_t doSizeData() const
Implements sizeData(). Return the sum of the sizes of all sub-IFDs.
Definition: tiffcomposite_int.cpp:1776
Interface class for components of a TIFF directory hierarchy (Composite pattern). Both TIFF directori...
Definition: tiffcomposite_int.hpp:174
virtual uint32_t doCount() const
Implements count(). Return number of components in the entry.
Definition: tiffcomposite_int.cpp:1027
virtual int idx() const
Return the unique id of the entry in the image.
Definition: tiffcomposite_int.cpp:349
const TiffType ttAsciiString
Exif ASCII type.
Definition: tiffcomposite_int.hpp:57
TiffType toTiffType(TypeId typeId)
Convert the Exiv2 typeId to a TIFF value type.
Definition: tiffcomposite_int.cpp:1858
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition: tiffcomposite_int.cpp:907
virtual uint32_t doSize() const
Implements size() by forwarding the call to the actual concrete Makernote, if there is one...
Definition: tiffcomposite_int.cpp:1697
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition: tiffcomposite_int.cpp:933
virtual TiffComponent * doClone() const =0
Internal virtual copy constructor, implements clone().
const TiffType ttTiffFloat
TIFF FLOAT type.
Definition: tiffcomposite_int.hpp:66
virtual uint32_t doWrite(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t valueIdx, uint32_t dataIdx, uint32_t &imageIdx)
Implements write(). Todo: Document it!
Definition: tiffcomposite_int.cpp:1388
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)
Implements encode().
Definition: tiffcomposite_int.cpp:982
void updateValue(Value::AutoPtr value, ByteOrder byteOrder)
Update the value. Takes ownership of the pointer passed in.
Definition: tiffcomposite_int.cpp:376
uint32_t writeData(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t dataIdx, uint32_t &imageIdx) const
Write the IFD data of this component to a binary image. Return the number of bytes written...
Definition: tiffcomposite_int.cpp:1465
void accept(TiffVisitor &visitor)
Interface to accept visitors (Visitor pattern). Visitors can perform operations on all components of ...
Definition: tiffcomposite_int.cpp:887
bool hasFillers_
If true, write all defined tags.
Definition: tiffcomposite_int.hpp:1339
virtual TiffComponent * doAddPath(uint16_t tag, TiffPath &tiffPath, TiffComponent *const pRoot, TiffComponent::AutoPtr object)
Implements addPath(). The default implementation does nothing.
Definition: tiffcomposite_int.cpp:734
int defSize() const
Return the number of elements in the definition.
Definition: tiffcomposite_int.hpp:1418
virtual uint32_t doWriteImage(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Implements writeImage(). Write the image data of the IFD of the Makernote. Return the number of bytes...
Definition: tiffcomposite_int.cpp:1599
virtual TiffComponent * doAddChild(TiffComponent::AutoPtr tiffComponent)
Implements addChild(). Todo: Document it!
Definition: tiffcomposite_int.cpp:845
Key(const std::string &m, uint32_t e, IfdId g)
Constructor.
Definition: tiffcomposite_int.hpp:402
uint16_t tag() const
Return the tag corresponding to the extended tag.
Definition: tiffcomposite_int.hpp:102
uint16_t TiffType
TIFF value type.
Definition: tiffcomposite_int.hpp:54
TiffEntryBase(uint16_t tag, IfdId group, TiffType tiffType=ttUndefined)
Default constructor.
Definition: tiffcomposite_int.cpp:97
TiffType tiffType() const
Return the TIFF type.
Definition: tiffcomposite_int.hpp:460
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition: tiffcomposite_int.cpp:892
virtual TiffComponent * doAddNext(AutoPtr tiffComponent)
Implements addNext(). The default implementation does nothing.
Definition: tiffcomposite_int.cpp:858
Abstract base class defining the interface for TIFF composite visitors (Visitor pattern) ...
Definition: tiffvisitor_int.hpp:73
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition: tiffcomposite_int.cpp:952
virtual TiffComponent * doAddChild(TiffComponent::AutoPtr tiffComponent)
Implements addChild(). The default implementation does nothing.
Definition: tiffcomposite_int.cpp:831
void setIdx(int idx)
Set the unique id of the entry in the image.
Definition: tiffcomposite_int.hpp:493
uint16_t szTag() const
Return the group of the entry which has the size.
Definition: tiffcomposite_int.hpp:630
uint32_t addElement(uint32_t idx, const ArrayDef &def)
Add an element to the binary array, return the size of the element.
Definition: tiffcomposite_int.cpp:614
uint32_t mnOffset() const
Return the offset to the makernote from the start of the TIFF header.
Definition: tiffcomposite_int.cpp:528
virtual TiffComponent * doAddChild(TiffComponent::AutoPtr tiffComponent)
Implements addChild(). The default implementation does nothing.
Definition: tiffcomposite_int.cpp:816
void setCount(uint32_t count)
Set the number of components in this entry.
Definition: tiffcomposite_int.hpp:491
A standard TIFF IFD entry.
Definition: tiffcomposite_int.hpp:566
IfdId szGroup() const
Return the group of the entry which has the size.
Definition: tiffcomposite_int.hpp:632
virtual ~TiffIfdMakernote()
Virtual destructor.
Definition: tiffcomposite_int.cpp:231
virtual uint32_t doSizeData() const
This class does not really implement sizeData(), it only has size(). This method must not be called; ...
Definition: tiffcomposite_int.cpp:1785
static uint32_t writeOffset(byte *buf, int32_t offset, TiffType tiffType, ByteOrder byteOrder)
Helper function to write an offset to a preallocated binary buffer.
Definition: tiffcomposite_int.cpp:1260
TiffBinaryElement(uint16_t tag, IfdId group)
Constructor.
Definition: tiffcomposite_int.cpp:170
void setElByteOrder(ByteOrder byteOrder)
Set the byte order of this element.
Definition: tiffcomposite_int.hpp:1514
virtual TiffComponent * doAddPath(uint16_t tag, TiffPath &tiffPath, TiffComponent *const pRoot, TiffComponent::AutoPtr object)
Implements addPath(). The default implementation does nothing.
Definition: tiffcomposite_int.cpp:639
const uint32_t pana
Special tag: root IFD of Panasonic RAW images.
Definition: tiffcomposite_int.hpp:83
uint32_t doSize() const
Implements size(). Return the size of the sub-Ifd pointers.
Definition: tiffcomposite_int.cpp:1692
virtual TiffComponent * doAddChild(TiffComponent::AutoPtr tiffComponent)
Implements addChild(). The default implementation does nothing.
Definition: tiffcomposite_int.cpp:840
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)
Implements encode().
Definition: tiffcomposite_int.cpp:997
virtual TiffComponent * doAddPath(uint16_t tag, TiffPath &tiffPath, TiffComponent *const pRoot, TiffComponent::AutoPtr object)
Implements addPath(). The default implementation does nothing.
Definition: tiffcomposite_int.cpp:647
virtual ~TiffSizeEntry()
Virtual destructor.
Definition: tiffcomposite_int.cpp:222
TiffComponent::AutoPtr newTiffThumbData(uint16_t tag, IfdId group)
Function to create and initialize a new TIFF entry for a thumbnail (data)
Definition: tiffcomposite_int.hpp:1635
uint16_t tag() const
Return the tag of this entry.
Definition: tiffcomposite_int.hpp:258
TiffComponent * addPath(uint16_t tag, TiffPath &tiffPath, TiffComponent *const pRoot, AutoPtr object=AutoPtr(0))
Add a TIFF entry tag to the component. Components on the path to the entry are added if they don&#39;t ex...
Definition: tiffcomposite_int.cpp:631
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition: tiffcomposite_int.cpp:962
uint32_t size() const
Return the size in bytes of the IFD value of this component when written to a binary image...
Definition: tiffcomposite_int.cpp:1650
uint16_t dtTag() const
Return the group of the related entry which has the data area.
Definition: tiffcomposite_int.hpp:833
TiffDirectory(uint16_t tag, IfdId group, bool hasNext=true)
Default constructor.
Definition: tiffcomposite_int.hpp:867
virtual uint32_t doSizeData() const
Implements sizeData(). Return the size of the image data area.
Definition: tiffcomposite_int.cpp:1760
int putb(byte data)
Wraps the corresponding BasicIo::putb() method.
Definition: tiffcomposite_int.cpp:78
Additional configuration for a binary array.
Definition: tiffcomposite_int.hpp:1327
virtual ~TiffDataEntryBase()
Virtual destructor.
Definition: tiffcomposite_int.cpp:210
void(TiffEncoder::* EncoderFct)(TiffEntryBase *, const Exifdatum *)
Function pointer type for a TiffDecoder member function to decode a TIFF component.
Definition: tifffwd_int.hpp:88
TiffComponent::AutoPtr newTiffEntry(uint16_t tag, IfdId group)
Function to create and initialize a new TIFF entry.
Definition: tiffcomposite_int.cpp:1886
virtual uint32_t doSizeImage() const =0
Implements sizeImage().
TiffComponent::AutoPtr newTiffSubIfd(uint16_t tag, IfdId group)
Function to create and initialize a new TIFF sub-directory.
Definition: tiffcomposite_int.hpp:1603
virtual TiffComponent * doAddNext(TiffComponent::AutoPtr tiffComponent)
Implements addNext(). The default implementation does nothing.
Definition: tiffcomposite_int.cpp:873
virtual uint32_t doWriteData(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t dataIdx, uint32_t &imageIdx) const
This class does not really implement writeData(), it only has write(). This method must not be called...
Definition: tiffcomposite_int.cpp:1474
virtual ~TiffEntry()
Virtual destructor.
Definition: tiffcomposite_int.cpp:206
virtual uint32_t doWriteImage(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Implements writeImage(). Write the image data area to the ioWrapper. Return the number of bytes writt...
Definition: tiffcomposite_int.cpp:1609
Interface for a standard TIFF IFD entry consisting of a value which is a set of offsets to a data are...
Definition: tiffcomposite_int.hpp:598
void setDecoded(bool decoded)
Set a flag to indicate if the array was decoded.
Definition: tiffcomposite_int.hpp:1408
IPTC string type.
Definition: types.hpp:147
void setStart(const byte *pStart)
Set a pointer to the start of the binary representation of the component in a memory buffer...
Definition: tiffcomposite_int.hpp:232
virtual uint32_t doWriteData(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t dataIdx, uint32_t &imageIdx) const
Implements writeData(). Write the image data area to the ioWrapper. Return the number of bytes writte...
Definition: tiffcomposite_int.cpp:1496
Class to insert pointers or offsets to computed addresses at specific locations in an image...
Definition: tiffimage_int.hpp:426
const TiffType ttSignedByte
Exif SBYTE type.
Definition: tiffcomposite_int.hpp:61
virtual TiffBinaryElement * doClone() const
Internal virtual copy constructor, implements clone().
Definition: tiffcomposite_int.cpp:344
Tiff IFD Makernote. This is a concrete class suitable for all IFD makernotes.
Definition: tiffcomposite_int.hpp:1149
virtual uint32_t doSize() const
Implements size(). Todo: Document it!
Definition: tiffcomposite_int.cpp:1710
Common interface for all types of values used with metadata.
Definition: value.hpp:60
std::auto_ptr< Value > AutoPtr
Shortcut for a Value auto pointer.
Definition: value.hpp:63
virtual ~TiffComponent()
Virtual destructor.
Definition: tiffcomposite_int.cpp:179
const TiffType ttUnsignedLong
Exif LONG type.
Definition: tiffcomposite_int.hpp:59
TiffDataEntry(uint16_t tag, IfdId group, uint16_t szTag, IfdId szGroup)
Constructor.
Definition: tiffcomposite_int.hpp:659
virtual uint32_t doSizeData() const
This class does not really implement sizeData(), it only has size(). This method must not be called; ...
Definition: tiffcomposite_int.cpp:1749
TiffDataEntryBase(uint16_t tag, IfdId group, uint16_t szTag, IfdId szGroup)
Constructor.
Definition: tiffcomposite_int.hpp:603
virtual ~TiffBinaryArray()
Virtual destructor.
Definition: tiffcomposite_int.cpp:236
TiffComponent::AutoPtr newTiffBinaryArray1(uint16_t tag, IfdId group)
Function to create and initialize a new simple binary array entry.
Definition: tiffcomposite_int.hpp:1619
virtual void setStrips(const Value *pSize, const byte *pData, uint32_t sizeData, uint32_t baseOffset)=0
Set the data areas ("strips").
std::string m_
Camera make.
Definition: tiffcomposite_int.hpp:403
A standard TIFF IFD entry consisting of a value which is an array of offsets to image data areas...
Definition: tiffcomposite_int.hpp:736
const TiffType ttUndefined
Exif UNDEFINED type.
Definition: tiffcomposite_int.hpp:62
IfdId g_
Group
Definition: tiffcomposite_int.hpp:405
void setElDef(const ArrayDef &def)
Set the array definition for this element.
Definition: tiffcomposite_int.hpp:1510
uint16_t tag() const
Return the tag corresponding to the extended tag.
Definition: tiffcomposite_int.hpp:388
ByteOrder elByteOrder() const
Return the byte order of this element.
Definition: tiffcomposite_int.hpp:1526
virtual uint32_t doSize() const
Implements size(). Return the size of the Makernote header, TIFF directory, values and additional dat...
Definition: tiffcomposite_int.cpp:1705
void setData(byte *pData, int32_t size)
Set pointer and size of the entry&#39;s data (not taking ownership of the data).
Definition: tiffcomposite_int.cpp:366
virtual TiffSubIfd * doClone() const
Internal virtual copy constructor, implements clone().
Definition: tiffcomposite_int.cpp:322
bool cmpGroupLt(TiffComponent const *lhs, TiffComponent const *rhs)
Compare two TIFF component pointers by group. Return true if the group of component lhs is less than ...
Definition: tiffcomposite_int.cpp:1879
Makernote header interface. This class is used with TIFF makernotes.
Definition: makernote_int.hpp:136
virtual void doEncode(TiffEncoder &encoder, const Exifdatum *datum)
Implements encode().
Definition: tiffcomposite_int.cpp:992
uint32_t tagStep() const
Return the size of the default tag, which is used to calculate tag numbers as idx/tagStep.
Definition: tiffcomposite_int.hpp:1332
EncoderFct encoderFct_
Encoder function for matching tags.
Definition: tiffcomposite_int.hpp:395
void setValue(Value::AutoPtr value)
Set tag value. Takes ownership of the pointer passed in.
Definition: tiffcomposite_int.cpp:391
TiffMnEntry(uint16_t tag, IfdId group, IfdId mnGroup)
Default constructor.
Definition: tiffcomposite_int.cpp:110
IfdId group_
Group that contains the tag.
Definition: tiffcomposite_int.hpp:393
uint32_t count() const
Return the number of components in this component.
Definition: tiffcomposite_int.cpp:1012
DataBuf(* CryptFct)(uint16_t, const byte *, uint32_t, TiffComponent *const)
Function pointer type for a crypt function used for binary arrays.
Definition: tiffcomposite_int.hpp:1312
TiffComponent::AutoPtr newTiffBinaryElement(uint16_t tag, IfdId group)
Function to create and initialize a new binary array element.
Definition: tiffcomposite_int.cpp:1896
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition: tiffcomposite_int.cpp:912
virtual TiffBinaryArray * doClone() const
Internal virtual copy constructor, implements clone().
Definition: tiffcomposite_int.cpp:339
virtual TiffSizeEntry * doClone() const
Internal virtual copy constructor, implements clone().
Definition: tiffcomposite_int.cpp:312
const TiffType ttTiffIfd
TIFF IFD type.
Definition: tiffcomposite_int.hpp:68
Provides classes and functions to encode and decode Exif and Iptc data. The libexiv2 API consists of ...
Definition: asfvideo.hpp:36
void setImageByteOrder(ByteOrder byteOrder)
Set the byte order used for the image.
Definition: tiffcomposite_int.hpp:1179
This class models a TIFF directory (Ifd). It is a composite component of the TIFF tree...
Definition: tiffcomposite_int.hpp:861
const uint32_t root
Special tag: root IFD.
Definition: tiffcomposite_int.hpp:80
TIFF composite visitor to encode metadata from an image to the TIFF tree. The metadata containers and...
Definition: tiffvisitor_int.hpp:382
virtual TiffComponent * doAddPath(uint16_t tag, TiffPath &tiffPath, TiffComponent *const pRoot, TiffComponent::AutoPtr object)
Implements addPath(). Todo: Document it!
Definition: tiffcomposite_int.cpp:764
virtual TiffComponent * doAddNext(TiffComponent::AutoPtr tiffComponent)
Implements addNext(). The default implementation does nothing.
Definition: tiffcomposite_int.cpp:882
void(TiffDecoder::* DecoderFct)(const TiffEntryBase *)
Function pointer type for a TiffDecoder member function to decode a TIFF component.
Definition: tifffwd_int.hpp:83
TiffComponent(uint16_t tag, IfdId group)
Constructor.
Definition: tiffcomposite_int.cpp:92
bool cmpTagLt(TiffComponent const *lhs, TiffComponent const *rhs)
Compare two TIFF component pointers by tag. Return true if the tag of component lhs is less than that...
Definition: tiffcomposite_int.cpp:1871
TiffImageEntry(uint16_t tag, IfdId group, uint16_t szTag, IfdId szGroup)
Constructor.
Definition: tiffcomposite_int.hpp:742
TiffComponent::AutoPtr newTiffImageSize(uint16_t tag, IfdId group)
Function to create and initialize a new TIFF entry for image data (size)
Definition: tiffcomposite_int.hpp:1659
An Exif metadatum, consisting of an ExifKey and a Value and methods to manipulate these...
Definition: exif.hpp:59
virtual uint32_t doWriteData(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t dataIdx, uint32_t &imageIdx) const =0
Implements writeData().
IfdId group() const
Return the group id of this component.
Definition: tiffcomposite_int.hpp:260
Element of a TiffBinaryArray.
Definition: tiffcomposite_int.hpp:1495
virtual uint32_t doSizeImage() const
Implements sizeImage(). Return the total image data size of the makernote IFD.
Definition: tiffcomposite_int.cpp:1817
virtual uint32_t doWrite(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t valueIdx, uint32_t dataIdx, uint32_t &imageIdx)
Implements write() by forwarding the call to the actual concrete Makernote, if there is one...
Definition: tiffcomposite_int.cpp:1358
virtual ~TiffMnEntry()
Virtual destructor.
Definition: tiffcomposite_int.cpp:226
TiffSizeEntry(uint16_t tag, IfdId group, uint16_t dtTag, IfdId dtGroup)
Constructor.
Definition: tiffcomposite_int.hpp:824
const ArrayDef * def() const
Return a pointer to the definition.
Definition: tiffcomposite_int.hpp:1416
virtual ~TiffImageEntry()
Virtual destructor.
Definition: tiffcomposite_int.cpp:218
const Value * pValue() const
Return a const pointer to the converted value of this component.
Definition: tiffcomposite_int.hpp:476
uint32_t writeHeader(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Write the header to a data buffer, return the number of bytes written.
Definition: tiffcomposite_int.cpp:558
ByteOrder imageByteOrder() const
Return the byte order used for the image.
Definition: tiffcomposite_int.hpp:1209
bool hasNext() const
Return true if the directory has a next pointer.
Definition: tiffcomposite_int.hpp:876
virtual uint32_t doCount() const
Implements count().
Definition: tiffcomposite_int.cpp:1022
virtual ~TiffBinaryElement()
Virtual destructor.
Definition: tiffcomposite_int.cpp:243
virtual void doAccept(TiffVisitor &visitor)
Implements accept().
Definition: tiffcomposite_int.cpp:897
virtual ~TiffEntryBase()
Virtual destructor.
Definition: tiffcomposite_int.cpp:198
virtual TiffComponent * doAddChild(TiffComponent::AutoPtr tiffComponent)
Implements addChild(). The default implementation does nothing.
Definition: tiffcomposite_int.cpp:823
virtual uint32_t doWrite(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t valueIdx, uint32_t dataIdx, uint32_t &imageIdx)
Implements write(). Write the Makernote header, TIFF directory, values and additional data to the ioW...
Definition: tiffcomposite_int.cpp:1371
virtual uint32_t doSizeImage() const
Implements sizeImage(). Return 0.
Definition: tiffcomposite_int.cpp:1822
const TiffType ttUnsignedRational
Exif RATIONAL type.
Definition: tiffcomposite_int.hpp:60
bool updOrigDataBuf(const byte *pData, uint32_t size)
Update the original data buffer and its size, return true if successful.
Definition: tiffcomposite_int.cpp:604
virtual int idx() const
Return the unique id of the entry in the image.
Definition: tiffcomposite_int.cpp:354
virtual uint32_t doWriteData(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t dataIdx, uint32_t &imageIdx) const
Implements writeData(). Write the sub-IFDs to the ioWrapper. Return the number of bytes written...
Definition: tiffcomposite_int.cpp:1527
virtual uint32_t doWrite(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t valueIdx, uint32_t dataIdx, uint32_t &imageIdx)
Implements write(). Write the sub-IFD pointers to the ioWrapper, return the number of bytes written...
Definition: tiffcomposite_int.cpp:1339
long write(const byte *pData, long wcount)
Wraps the corresponding BasicIo::write() method.
Definition: tiffcomposite_int.cpp:69
uint32_t writeImage(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Write the image data of this component to a binary image. Return the number of bytes written...
Definition: tiffcomposite_int.cpp:1554
Defines one tag in a binary array.
Definition: tiffcomposite_int.hpp:1315
virtual uint32_t doSizeData() const
Implements sizeData(). Return 0.
Definition: tiffcomposite_int.cpp:1755
virtual uint32_t doSize() const
Implements size(). Return the size of the TIFF directory, values and additional data, including the next-IFD, if any.
Definition: tiffcomposite_int.cpp:1655
A tupel consisting of extended Tag and group used as an item in TIFF paths.
Definition: tiffcomposite_int.hpp:90
virtual uint32_t doWrite(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t valueIdx, uint32_t dataIdx, uint32_t &imageIdx)
Implements write(). Write the TIFF directory, values and additional data, including the next-IFD...
Definition: tiffcomposite_int.cpp:1080
virtual uint32_t doWrite(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t valueIdx, uint32_t dataIdx, uint32_t &imageIdx)
Implements write(). Todo: Document it!
Definition: tiffcomposite_int.cpp:1450
virtual uint32_t doSizeData() const =0
Implements sizeData().
virtual uint32_t doWriteImage(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Implements writeImage(). Write the image data of the TIFF directory to the ioWrapper by forwarding th...
Definition: tiffcomposite_int.cpp:1560
TiffComponent * addChild(AutoPtr tiffComponent)
Add a child to the component. Default is to do nothing.
Definition: tiffcomposite_int.cpp:806
ByteOrder byteOrder_
Byte order, invalidByteOrder to inherit.
Definition: tiffcomposite_int.hpp:1335
IfdId
Type to specify the IFD to which a metadata belongs.
Definition: tags_int.hpp:54
virtual uint32_t doSizeData() const
Implements sizeData(). Return the size of the data area.
Definition: tiffcomposite_int.cpp:1770
const TiffType ttSignedRational
Exif SRATIONAL type.
Definition: tiffcomposite_int.hpp:65
uint32_t sizeImage() const
Return the size in bytes of the image data of this component when written to a binary image...
Definition: tiffcomposite_int.cpp:1791
virtual uint32_t doWrite(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t valueIdx, uint32_t dataIdx, uint32_t &imageIdx)
Implements write(). Write pointers into the image data area to the ioWrapper. Return the number of by...
Definition: tiffcomposite_int.cpp:1307
TIFF mapping table for functions to decode special cases.
Definition: tiffcomposite_int.hpp:376
void iniOrigDataBuf()
Initialize the original data buffer and its size from the base entry.
Definition: tiffcomposite_int.cpp:598
virtual TiffImageEntry * doClone() const
Internal virtual copy constructor, implements clone().
Definition: tiffcomposite_int.cpp:307
const TiffType ttSignedShort
Exif SSHORT type.
Definition: tiffcomposite_int.hpp:63
AutoPtr clone() const
Return an auto-pointer to a copy of itself (deep copy, but without any children). The caller owns thi...
Definition: tiffcomposite_int.cpp:292
Value interface and concrete subclasses.
virtual ~TiffSubIfd()
Virtual destructor.
Definition: tiffcomposite_int.cpp:191
TiffEntry(uint16_t tag, IfdId group)
Constructor.
Definition: tiffcomposite_int.hpp:571
virtual uint32_t doWriteData(IoWrapper &ioWrapper, ByteOrder byteOrder, int32_t offset, uint32_t dataIdx, uint32_t &imageIdx) const
Implements writeData(). Write the data area to the ioWrapper. Return the number of bytes written...
Definition: tiffcomposite_int.cpp:1510
virtual uint32_t doCount() const =0
Implements count().