22#ifndef OR_INTERNALS_IFD_FILE_H_
23#define OR_INTERNALS_IFD_FILE_H_
30#include <libopenraw/consts.h>
33#include "io/stream.hpp"
35#include "rawcontainer.hpp"
37#include "makernotedir.hpp"
45class 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;
generic IFD based raw file.
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)
virtual ::or_error _enumThumbnailSizes(std::vector< uint32_t > &list) override
IfdFileContainer * m_container
virtual ::or_error _getRawData(RawData &data, uint32_t options) override
virtual ::or_error _locateThumbnail(const IfdDir::Ref &dir, std::vector< uint32_t > &list)
::or_error _getRawDataFromDir(RawData &data, const IfdDir::Ref &dir)
virtual RawContainer * getContainer() const override
virtual uint32_t _getJpegThumbnailOffset(const IfdDir::Ref &dir, uint32_t &len)
const IfdDir::Ref & cfaIfd()
virtual uint32_t _translateCompressionType(IFD::TiffCompress tiffCompression)
CIFF is the container for CRW files. It is an attempt from Canon to make this a standard....