22 #ifndef OR_INTERNALS_IFD_FILE_H_
23 #define OR_INTERNALS_IFD_FILE_H_
26 #include <sys/types.h>
30 #include <libopenraw/consts.h>
32 #include "rawfile.hpp"
33 #include "io/stream.hpp"
35 #include "rawcontainer.hpp"
37 #include "makernotedir.hpp"
45 class IfdFileContainer;
49 #if defined(IN_TESTSUITE)
55 IfdFile(
const IO::Stream::Ptr &s, Type _type,
56 bool instantiateContainer =
true);
65 std::vector<uint32_t> &list)
override;
73 std::vector<uint32_t> &list);
94 virtual IfdDir::Ref _locateCfaIfd() = 0;
95 virtual IfdDir::Ref _locateMainIfd() = 0;
96 virtual IfdDir::Ref _locateExifIfd();
97 virtual MakerNoteDir::Ref _locateMakerNoteIfd();
99 virtual void _identifyId()
override;
101 virtual MetaValue *_getMetaValue(int32_t meta_index)
override;
109 IFD::TiffCompress tiffCompression);
120 virtual ::or_error
_unpackData(uint16_t bpc, uint32_t compression,
121 RawData &data, uint32_t x, uint32_t y,
122 uint32_t offset, uint32_t byte_length);
125 const IfdDir::Ref &
cfaIfd();
126 const IfdDir::Ref &mainIfd();
127 const IfdDir::Ref &exifIfd();
128 const MakerNoteDir::Ref &makerNoteIfd();
132 virtual ::or_error _decompressIfNeeded(
RawData &, uint32_t);
135 IfdDir::Ref m_cfaIfd;
136 IfdDir::Ref m_mainIfd;
140 IfdDir::Ref m_exifIfd;
141 MakerNoteDir::Ref m_makerNoteIfd;