diff options
Diffstat (limited to 'gpr/source/lib/dng_sdk/dng_iptc.h')
-rw-r--r-- | gpr/source/lib/dng_sdk/dng_iptc.h | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/gpr/source/lib/dng_sdk/dng_iptc.h b/gpr/source/lib/dng_sdk/dng_iptc.h new file mode 100644 index 0000000..82ebaeb --- /dev/null +++ b/gpr/source/lib/dng_sdk/dng_iptc.h @@ -0,0 +1,172 @@ +/*****************************************************************************/
+// Copyright 2006-2008 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_iptc.h#1 $ */
+/* $DateTime: 2012/05/30 13:28:51 $ */
+/* $Change: 832332 $ */
+/* $Author: tknoll $ */
+
+/** \file
+ * Support for IPTC metadata within DNG files.
+ */
+
+/*****************************************************************************/
+
+#ifndef __dng_iptc__
+#define __dng_iptc__
+
+/*****************************************************************************/
+
+#include "dng_date_time.h"
+#include "dng_string.h"
+#include "dng_string_list.h"
+
+/*****************************************************************************/
+
+/// \brief Class for reading and holding IPTC metadata associated with a DNG file.
+///
+/// See the \ref spec_iptc "IPTC specification"
+/// for information on member fields of this class.
+
+class dng_iptc
+ {
+
+ public:
+
+ dng_string fTitle;
+
+ int32 fUrgency;
+
+ dng_string fCategory;
+
+ dng_string_list fSupplementalCategories;
+
+ dng_string_list fKeywords;
+
+ dng_string fInstructions;
+
+ dng_date_time_info fDateTimeCreated;
+
+ dng_date_time_info fDigitalCreationDateTime;
+
+ dng_string_list fAuthors;
+
+ dng_string fAuthorsPosition;
+
+ dng_string fCity;
+ dng_string fState;
+ dng_string fCountry;
+ dng_string fCountryCode;
+
+ dng_string fLocation;
+
+ dng_string fTransmissionReference;
+
+ dng_string fHeadline;
+
+ dng_string fCredit;
+
+ dng_string fSource;
+
+ dng_string fCopyrightNotice;
+
+ dng_string fDescription;
+ dng_string fDescriptionWriter;
+
+ protected:
+
+ enum DataSet
+ {
+ kRecordVersionSet = 0,
+ kObjectNameSet = 5,
+ kUrgencySet = 10,
+ kCategorySet = 15,
+ kSupplementalCategoriesSet = 20,
+ kKeywordsSet = 25,
+ kSpecialInstructionsSet = 40,
+ kDateCreatedSet = 55,
+ kTimeCreatedSet = 60,
+ kDigitalCreationDateSet = 62,
+ kDigitalCreationTimeSet = 63,
+ kBylineSet = 80,
+ kBylineTitleSet = 85,
+ kCitySet = 90,
+ kSublocationSet = 92,
+ kProvinceStateSet = 95,
+ kCountryCodeSet = 100,
+ kCountryNameSet = 101,
+ kOriginalTransmissionReferenceSet = 103,
+ kHeadlineSet = 105,
+ kCreditSet = 110,
+ kSourceSet = 115,
+ kCopyrightNoticeSet = 116,
+ kCaptionSet = 120,
+ kCaptionWriterSet = 122
+ };
+
+ enum CharSet
+ {
+ kCharSetUnknown = 0,
+ kCharSetUTF8 = 1
+ };
+
+ public:
+
+ dng_iptc ();
+
+ virtual ~dng_iptc ();
+
+ /// Test if IPTC metadata exists.
+ /// \retval true if no IPTC metadata exists for this DNG.
+
+ bool IsEmpty () const;
+
+ /// Test if IPTC metadata exists.
+ /// \retval true if IPTC metadata exists for this DNG.
+
+ bool NotEmpty () const
+ {
+ return !IsEmpty ();
+ }
+
+ /// Parse a complete block of IPTC data.
+ /// \param blockData The block of IPTC data.
+ /// \param blockSize Size in bytes of data block.
+ /// \param offsetInOriginalFile Used to enable certain file patching operations such as updating date/time in place.
+
+ void Parse (const void *blockData,
+ uint32 blockSize,
+ uint64 offsetInOriginalFile);
+
+ /// Serialize IPTC data to a memory block.
+ /// \param allocator Memory allocator used to acquire memory block.
+ /// \param padForTIFF Forces length of block to be a multiple of four bytes in accordance with TIFF standard.
+ /// \retval Memory block
+
+ dng_memory_block * Spool (dng_memory_allocator &allocator,
+ bool padForTIFF);
+
+ protected:
+
+ void ParseString (dng_stream &stream,
+ dng_string &s,
+ CharSet charSet);
+
+ void SpoolString (dng_stream &stream,
+ const dng_string &s,
+ uint8 dataSet,
+ uint32 maxChars,
+ CharSet charSet);
+
+ };
+
+/*****************************************************************************/
+
+#endif
+
+/*****************************************************************************/
|