OpenRaw::Internals::IFDFileContainer Class Reference

Inheritance diagram for OpenRaw::Internals::IFDFileContainer:

OpenRaw::Internals::RawContainer OpenRaw::Internals::ORFContainer List of all members.

Public Types

 IFD_NONE = -1
 IFD_EXIF = -2
 IFD_GPS = -3
enum  { IFD_NONE = -1, IFD_EXIF = -2, IFD_GPS = -3, IFD_INTEROP = -4 }

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

Detailed Description

Definition at line 45 of file ifdfilecontainer.h.

Member Enumeration Documentation

anonymous enum

due to the way Exif works, we have to set specific index to address these IFD

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.

Constructor & Destructor Documentation

OpenRaw::Internals::IFDFileContainer::IFDFileContainer ( IO::Stream file,
off_t  offset 


file the file handle
offset the offset from the start of the file

Definition at line 40 of file ifdfilecontainer.cpp.

OpenRaw::Internals::IFDFileContainer::~IFDFileContainer (  )  [virtual]


Definition at line 48 of file ifdfilecontainer.cpp.

Member Function Documentation

int OpenRaw::Internals::IFDFileContainer::countDirectories ( void   ) 

Count the number of image file directories, not including EXIF, GPS and INTEROP.

the number of image file directories

Definition at line 73 of file ifdfilecontainer.cpp.

Referenced by directories(), and setDirectory().

int OpenRaw::Internals::IFDFileContainer::currentDirectory (  ) 

Get the number of the current directory

the index of the current directory. By default we are in directory 0. -1 indicates an initialized IFD file

std::vector< IFDDir::Ref > & OpenRaw::Internals::IFDFileContainer::directories (  ) 

Get the directories, loading them if necessary

the directories

Definition at line 86 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

the size of the data chunk in bytes

Definition at line 120 of file ifdfilecontainer.cpp.

References OpenRaw::Internals::RawContainer::m_file, OpenRaw::Internals::RawContainer::readInt32(), and OpenRaw::IO::Stream::seek().

IFDFileContainer::EndianType OpenRaw::Internals::IFDFileContainer::isMagicHeader ( const char *  p,
int  len 
) [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.
the endian if it is the magic header
subclasses needs to override it for like Olympus RAW

Reimplemented in OpenRaw::Internals::ORFContainer.

Definition at line 55 of file ifdfilecontainer.cpp.

References OpenRaw::Internals::RawContainer::ENDIAN_BIG, and OpenRaw::Internals::RawContainer::ENDIAN_LITTLE.

int OpenRaw::Internals::IFDFileContainer::lastError (  )  const [inline]

Return the last error

the error code

Definition at line 116 of file ifdfilecontainer.h.

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
NULL if no error, or return the reference to the current directory

Definition at line 95 of file ifdfilecontainer.cpp.

References countDirectories().

The documentation for this class was generated from the following files:
Generated on Sat Jan 27 11:36:13 2007 for libopenraw by  doxygen 1.4.7