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;
141 IfdDir::Ref m_exifIfd;
142 MakerNoteDir::Ref m_makerNoteIfd;
CIFF is the container for CRW files. It is an attempt from Canon to make this a standard. I guess it failed.
virtual ::or_error _enumThumbnailSizes(std::vector< uint32_t > &list) override
virtual ::or_error _getRawData(RawData &data, uint32_t options) override
virtual uint32_t _getJpegThumbnailOffset(const IfdDir::Ref &dir, uint32_t &len)
virtual ::or_error _locateThumbnail(const IfdDir::Ref &dir, std::vector< uint32_t > &list)
virtual ::or_error _unpackData(uint16_t bpc, uint32_t compression, RawData &data, uint32_t x, uint32_t y, uint32_t offset, uint32_t byte_length)
const IfdDir::Ref & cfaIfd()
virtual RawContainer * getContainer() const override
IfdFileContainer * m_container
::or_error _getRawDataFromDir(RawData &data, const IfdDir::Ref &dir)
generic IFD based raw file.
virtual uint32_t _translateCompressionType(IFD::TiffCompress tiffCompression)