/*****************************************************************************/ // Copyright 2006-2011 Adobe Systems Incorporated // All Rights Reserved. // // NOTICE: Adobe permits you to use, modify, and distribute this file in // accordance with the terms of the Adobe license agreement accompanying it. /*****************************************************************************/ /* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_info.h#1 $ */ /* $DateTime: 2012/05/30 13:28:51 $ */ /* $Change: 832332 $ */ /* $Author: tknoll $ */ /** \file * Class for holding top-level information about a DNG image. */ /*****************************************************************************/ #ifndef __dng_info__ #define __dng_info__ /*****************************************************************************/ #include "dng_classes.h" #include "dng_ifd.h" #include "dng_exif.h" #include "dng_shared.h" #include "dng_errors.h" #include "dng_sdk_limits.h" #include "dng_auto_ptr.h" /*****************************************************************************/ /// \brief Top-level structure of DNG file with access to metadata. /// /// See \ref spec_dng "DNG 1.1.0 specification" for information on member fields of this class. class dng_info { public: uint64 fTIFFBlockOffset; uint64 fTIFFBlockOriginalOffset; bool fBigEndian; uint32 fMagic; AutoPtr fExif; AutoPtr fShared; int32 fMainIndex; int32 fMaskIndex; uint32 fIFDCount; AutoPtr fIFD [kMaxSubIFDs + 1]; uint32 fChainedIFDCount; AutoPtr fChainedIFD [kMaxChainedIFDs]; protected: uint32 fMakerNoteNextIFD; public: dng_info (); virtual ~dng_info (); /// Read dng_info from a dng_stream /// \param host DNG host used for progress updating, abort testing, buffer allocation, etc. /// \param stream Stream to read DNG data from. virtual void Parse (dng_host &host, dng_stream &stream); /// Must be called immediately after a successful Parse operation. virtual void PostParse (dng_host &host); /// Test validity of DNG data. /// \retval true if stream provided a valid DNG. virtual bool IsValidDNG (); protected: virtual void ValidateMagic (); virtual void ParseTag (dng_host &host, dng_stream &stream, dng_exif *exif, dng_shared *shared, dng_ifd *ifd, uint32 parentCode, uint32 tagCode, uint32 tagType, uint32 tagCount, uint64 tagOffset, int64 offsetDelta); virtual bool ValidateIFD (dng_stream &stream, uint64 ifdOffset, int64 offsetDelta); virtual void ParseIFD (dng_host &host, dng_stream &stream, dng_exif *exif, dng_shared *shared, dng_ifd *ifd, uint64 ifdOffset, int64 offsetDelta, uint32 parentCode); virtual bool ParseMakerNoteIFD (dng_host &host, dng_stream &stream, uint64 ifdSize, uint64 ifdOffset, int64 offsetDelta, uint64 minOffset, uint64 maxOffset, uint32 parentCode); virtual void ParseMakerNote (dng_host &host, dng_stream &stream, uint32 makerNoteCount, uint64 makerNoteOffset, int64 offsetDelta, uint64 minOffset, uint64 maxOffset); virtual void ParseSonyPrivateData (dng_host &host, dng_stream &stream, uint64 count, uint64 oldOffset, uint64 newOffset); virtual void ParseDNGPrivateData (dng_host &host, dng_stream &stream); private: // Hidden copy constructor and assignment operator. dng_info (const dng_info &info); dng_info & operator= (const dng_info &info); }; /*****************************************************************************/ #endif /*****************************************************************************/