summaryrefslogtreecommitdiff
path: root/gpr/source/lib/dng_sdk/dng_info.h
diff options
context:
space:
mode:
Diffstat (limited to 'gpr/source/lib/dng_sdk/dng_info.h')
-rw-r--r--gpr/source/lib/dng_sdk/dng_info.h163
1 files changed, 163 insertions, 0 deletions
diff --git a/gpr/source/lib/dng_sdk/dng_info.h b/gpr/source/lib/dng_sdk/dng_info.h
new file mode 100644
index 0000000..3ccefd1
--- /dev/null
+++ b/gpr/source/lib/dng_sdk/dng_info.h
@@ -0,0 +1,163 @@
+/*****************************************************************************/
+// 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<dng_exif> fExif;
+
+ AutoPtr<dng_shared> fShared;
+
+ int32 fMainIndex;
+
+ int32 fMaskIndex;
+
+ uint32 fIFDCount;
+
+ AutoPtr<dng_ifd> fIFD [kMaxSubIFDs + 1];
+
+ uint32 fChainedIFDCount;
+
+ AutoPtr<dng_ifd> 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
+
+/*****************************************************************************/