libopenraw
|
Public Types | |
enum | { IFD_NONE = -1, IFD_EXIF = -2, IFD_GPS = -3, IFD_INTEROP = -4 } |
![]() | |
enum | EndianType { ENDIAN_NULL = 0, ENDIAN_BIG, ENDIAN_LITTLE } |
Public Member Functions | |
IFDFileContainer (IO::Stream *file, off_t offset) | |
virtual | ~IFDFileContainer () |
virtual EndianType | isMagicHeader (const char *p, int len) |
IFDDir::Ref | setDirectory (int dir) |
int | countDirectories (void) |
std::vector< IFDDir::Ref > & | directories () |
int | currentDirectory () |
size_t | getDirectoryDataSize () |
int | lastError () const |
int | exifOffsetCorrection () const |
void | setExifOffsetCorrection (int corr) |
![]() | |
RawContainer (IO::Stream *_file, off_t offset) | |
virtual | ~RawContainer () |
IO::Stream * | file () |
EndianType | endian () const |
bool | readInt8 (IO::Stream *f, int8_t &v) |
bool | readUInt8 (IO::Stream *f, uint8_t &v) |
bool | readInt16 (IO::Stream *f, int16_t &v) |
bool | readInt32 (IO::Stream *f, int32_t &v) |
bool | readUInt16 (IO::Stream *f, uint16_t &v) |
bool | readUInt32 (IO::Stream *f, uint32_t &v) |
size_t | fetchData (void *buf, const off_t offset, const size_t buf_size) |
Protected Member Functions | |
virtual bool | locateDirsPreHook () |
![]() | |
RawContainer (const RawContainer &) | |
RawContainer & | operator= (const RawContainer &) |
void | setEndian (EndianType _endian) |
Additional Inherited Members | |
![]() | |
IO::Stream * | m_file |
off_t | m_offset |
EndianType | m_endian |
Definition at line 45 of file ifdfilecontainer.h.
anonymous enum |
due to the way Exif works, we have to set specific index to address these IFD
Enumerator | |
---|---|
IFD_NONE |
invalid IFD. Means an error |
IFD_EXIF |
exif IFD: see field 0x6789 in IFD 0 |
IFD_GPS |
GPS IFD: see field 0x8825 in IFD 0 |
IFD_INTEROP |
interoperability IFD: see field 0xa005 in exif IFD |
Definition at line 62 of file ifdfilecontainer.h.
OpenRaw::Internals::IFDFileContainer::IFDFileContainer | ( | IO::Stream * | file, |
off_t | offset | ||
) |
constructor
file | the file handle |
offset | the offset from the start of the file |
Definition at line 40 of file ifdfilecontainer.cpp.
|
virtual |
destructor
Definition at line 49 of file ifdfilecontainer.cpp.
int OpenRaw::Internals::IFDFileContainer::countDirectories | ( | void | ) |
Count the number of image file directories, not including EXIF, GPS and INTEROP.
Definition at line 74 of file ifdfilecontainer.cpp.
Referenced by directories(), and setDirectory().
int OpenRaw::Internals::IFDFileContainer::currentDirectory | ( | ) |
Get the number of the current directory
std::vector< IFDDir::Ref > & OpenRaw::Internals::IFDFileContainer::directories | ( | ) |
Get the directories, loading them if necessary
Definition at line 87 of file ifdfilecontainer.cpp.
References countDirectories().
Referenced by OpenRaw::Internals::IFDFile::_enumThumbnailSizes().
size_t OpenRaw::Internals::IFDFileContainer::getDirectoryDataSize | ( | ) |
get the extra data size chunk associated to the current image directory
Definition at line 121 of file ifdfilecontainer.cpp.
References OpenRaw::Internals::RawContainer::m_file, OpenRaw::Internals::RawContainer::readInt32(), and OpenRaw::IO::Stream::seek().
|
virtual |
Check the IFD magic header
p | the pointer to check |
len | the length of the block to check. Likely to be at least 4. |
subclasses needs to override it for like Olympus RAW
Reimplemented in OpenRaw::Internals::MRWContainer, and OpenRaw::Internals::OrfContainer.
Definition at line 56 of file ifdfilecontainer.cpp.
References OpenRaw::Internals::RawContainer::ENDIAN_BIG, and OpenRaw::Internals::RawContainer::ENDIAN_LITTLE.
|
inline |
|
protectedvirtual |
hook to be called at the start of _locateDirs()
Reimplemented in OpenRaw::Internals::MRWContainer.
Definition at line 144 of file ifdfilecontainer.cpp.
IFDDir::Ref OpenRaw::Internals::IFDFileContainer::setDirectory | ( | int | dir | ) |
Set the current directory
dir | the index of the directory to read, or one of the specific IFD index values that are < -1 |
Definition at line 96 of file ifdfilecontainer.cpp.
References countDirectories().