| /*****************************************************************************/ |
| // 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 |
| |
| /*****************************************************************************/ |