30#include "exiv2lib_export.h"
33#include "metadatum.hpp"
50 RecordInfo(uint16_t recordId,
const char* name,
const char* desc);
86 class EXIV2API IptcDataSets {
95 static const uint16_t invalidRecord = 0;
96 static const uint16_t envelope = 1;
97 static const uint16_t application2 = 2;
102 static const uint16_t ModelVersion = 0;
103 static const uint16_t Destination = 5;
104 static const uint16_t FileFormat = 20;
105 static const uint16_t FileVersion = 22;
106 static const uint16_t ServiceId = 30;
107 static const uint16_t EnvelopeNumber = 40;
108 static const uint16_t ProductId = 50;
109 static const uint16_t EnvelopePriority = 60;
110 static const uint16_t DateSent = 70;
111 static const uint16_t TimeSent = 80;
112 static const uint16_t CharacterSet = 90;
113 static const uint16_t UNO = 100;
114 static const uint16_t ARMId = 120;
115 static const uint16_t ARMVersion = 122;
116 static const uint16_t RecordVersion = 0;
117 static const uint16_t ObjectType = 3;
118 static const uint16_t ObjectAttribute = 4;
119 static const uint16_t ObjectName = 5;
120 static const uint16_t EditStatus = 7;
121 static const uint16_t EditorialUpdate = 8;
122 static const uint16_t Urgency = 10;
123 static const uint16_t Subject = 12;
124 static const uint16_t Category = 15;
125 static const uint16_t SuppCategory = 20;
126 static const uint16_t FixtureId = 22;
127 static const uint16_t Keywords = 25;
128 static const uint16_t LocationCode = 26;
129 static const uint16_t LocationName = 27;
130 static const uint16_t ReleaseDate = 30;
131 static const uint16_t ReleaseTime = 35;
132 static const uint16_t ExpirationDate = 37;
133 static const uint16_t ExpirationTime = 38;
134 static const uint16_t SpecialInstructions = 40;
135 static const uint16_t ActionAdvised = 42;
136 static const uint16_t ReferenceService = 45;
137 static const uint16_t ReferenceDate = 47;
138 static const uint16_t ReferenceNumber = 50;
139 static const uint16_t DateCreated = 55;
140 static const uint16_t TimeCreated = 60;
141 static const uint16_t DigitizationDate = 62;
142 static const uint16_t DigitizationTime = 63;
143 static const uint16_t Program = 65;
144 static const uint16_t ProgramVersion = 70;
145 static const uint16_t ObjectCycle = 75;
146 static const uint16_t Byline = 80;
147 static const uint16_t BylineTitle = 85;
148 static const uint16_t City = 90;
149 static const uint16_t SubLocation = 92;
150 static const uint16_t ProvinceState = 95;
151 static const uint16_t CountryCode = 100;
152 static const uint16_t CountryName = 101;
153 static const uint16_t TransmissionReference = 103;
154 static const uint16_t Headline = 105;
155 static const uint16_t Credit = 110;
156 static const uint16_t Source = 115;
157 static const uint16_t Copyright = 116;
158 static const uint16_t Contact = 118;
159 static const uint16_t Caption = 120;
160 static const uint16_t Writer = 122;
161 static const uint16_t RasterizedCaption = 125;
162 static const uint16_t ImageType = 130;
163 static const uint16_t ImageOrientation = 131;
164 static const uint16_t Language = 135;
165 static const uint16_t AudioType = 150;
166 static const uint16_t AudioRate = 151;
167 static const uint16_t AudioResolution = 152;
168 static const uint16_t AudioDuration = 153;
169 static const uint16_t AudioOutcue = 154;
170 static const uint16_t PreviewFormat = 200;
171 static const uint16_t PreviewVersion = 201;
172 static const uint16_t Preview = 202;
179 IptcDataSets(
const IptcDataSets& rhs);
181 IptcDataSets& operator=(
const IptcDataSets& rhs);
264 static int dataSetIdx(uint16_t number, uint16_t
recordId);
267 static const DataSet* records_[];
313 virtual std::string
key()
const;
320 virtual std::string
tagName()
const;
321 virtual std::string
tagLabel()
const;
322 virtual uint16_t
tag()
const;
350 virtual IptcKey* clone_()
const;
353 static const char* familyName_;
static void dataSetList(std::ostream &os)
Print a list of all dataSets to output stream.
Definition datasets.cpp:575
static const DataSet * envelopeRecordList()
Return read-only list of built-in Envelope Record datasets.
Definition datasets.cpp:158
static uint16_t recordId(const std::string &recordName)
Return the Id number of a record.
Definition datasets.cpp:561
static std::string recordName(uint16_t recordId)
Return the name of the Record.
Definition datasets.cpp:541
static const char * recordDesc(uint16_t recordId)
Return the description of a record.
Definition datasets.cpp:553
static const char * dataSetPsName(uint16_t number, uint16_t recordId)
Return the photohsop name of a given dataset.
Definition datasets.cpp:510
static const DataSet * application2RecordList()
Return read-only list of built-in Application2 Record datasets.
Definition datasets.cpp:435
static TypeId dataSetType(uint16_t number, uint16_t recordId)
Return the type for dataSet number and Record id.
Definition datasets.cpp:478
static const char * dataSetDesc(uint16_t number, uint16_t recordId)
Return the description of the dataset.
Definition datasets.cpp:503
static std::string dataSetName(uint16_t number, uint16_t recordId)
Return the name of the dataset.
Definition datasets.cpp:485
static const char * dataSetTitle(uint16_t number, uint16_t recordId)
Return the title (label) of the dataset.
Definition datasets.cpp:496
static uint16_t dataSet(const std::string &dataSetName, uint16_t recordId)
Return the dataSet number for dataset name and record id.
Definition datasets.cpp:524
static bool dataSetRepeatable(uint16_t number, uint16_t recordId)
Check if a given dataset is repeatable.
Definition datasets.cpp:517
std::string recordName() const
Return the name of the record.
Definition datasets.cpp:649
virtual uint16_t tag() const
Return the tag number.
Definition datasets.cpp:644
virtual const char * familyName() const
Return an identifier for the type of metadata (the first part of the key).
Definition datasets.cpp:624
uint16_t record() const
Return the record id.
Definition datasets.cpp:654
IptcKey & operator=(const IptcKey &rhs)
Assignment operator.
Definition datasets.cpp:609
std::auto_ptr< IptcKey > AutoPtr
Shortcut for an IptcKey auto pointer.
Definition datasets.hpp:278
virtual std::string key() const
Return the key of the metadatum as a string. The key is of the form 'familyName.groupName....
Definition datasets.cpp:619
void decomposeKey()
Parse and convert the key string into dataset and record id. Updates data members if the string can b...
Definition datasets.cpp:669
IptcKey(const std::string &key)
Constructor to create an IPTC key from a key string.
Definition datasets.cpp:588
virtual std::string groupName() const
Return the name of the group (the second part of the key). For IPTC keys, the group name is the recor...
Definition datasets.cpp:629
virtual std::string tagLabel() const
Return a label for the tag.
Definition datasets.cpp:639
virtual std::string tagName() const
Return the name of the tag (which is also the third part of the key).
Definition datasets.cpp:634
void makeKey()
Set the key corresponding to the dataset and record id. The key is of the form 'Iptc....
Definition datasets.cpp:699
Abstract base class defining the Key of a metadatum. Keys are used to identify and group metadata.
Definition metadatum.hpp:44
Provides classes and functions to encode and decode Exif and Iptc data. The libexiv2 API consists of ...
Definition asfvideo.hpp:36
EXIV2API std::ostream & operator<<(std::ostream &os, const DataSet &dataSet)
Output operator for dataSet.
Definition datasets.cpp:709
Dictionary::const_iterator Dictionary_i
typedef for Dictionary iterator
Definition datasets.hpp:372
std::vector< uint32_t > Uint32Vector
typedef for uint32_t vector
Definition datasets.hpp:403
Uint32Vector::const_iterator Uint32Vector_i
typedef for Uint32Vector iterator
Definition datasets.hpp:411
std::set< std::string > StringSet
typedef for string set (unique strings)
Definition datasets.hpp:377
StringVector * StringVector_p
typedef for StringVector pointer
Definition datasets.hpp:394
Uint32Vector * Uint32Vector_p
typedef for Uint32Vector pointer
Definition datasets.hpp:407
TypeId
Exiv2 value type identifiers.
Definition types.hpp:119
Dictionary * Dictionary_p
typedef for Dictionary*
Definition datasets.hpp:368
std::set< std::string >::const_iterator StringSet_i
Class to provide a StringSet iterator.
Definition datasets.hpp:385
StringSet * StringSet_p
typedef for StringSet*
Definition datasets.hpp:381
StringVector::const_iterator StringVector_i
Class to provide a StringVector iterator.
Definition datasets.hpp:398
std::vector< std::string > StringVector
typedef for string vector
Definition datasets.hpp:390
std::map< std::string, std::string > Dictionary
typedef for string:string map
Definition datasets.hpp:364
Details of an IPTC dataset.
Definition datasets.hpp:57
bool mandatory_
True if dataset is mandatory.
Definition datasets.hpp:76
uint32_t minbytes_
Minimum number of bytes.
Definition datasets.hpp:78
const char * photoshop_
Photoshop string.
Definition datasets.hpp:82
uint32_t maxbytes_
Maximum number of bytes.
Definition datasets.hpp:79
uint16_t recordId_
Record id.
Definition datasets.hpp:81
const char * name_
Dataset name.
Definition datasets.hpp:73
bool repeatable_
True if dataset is repeatable.
Definition datasets.hpp:77
const char * title_
Dataset title or label.
Definition datasets.hpp:74
DataSet(uint16_t number, const char *name, const char *title, const char *desc, bool mandatory, bool repeatable, uint32_t minbytes, uint32_t maxbytes, TypeId type, uint16_t recordId, const char *photoshop)
Constructor.
Definition datasets.cpp:43
TypeId type_
Exiv2 default type.
Definition datasets.hpp:80
uint16_t number_
Dataset number.
Definition datasets.hpp:72
const char * desc_
Dataset description.
Definition datasets.hpp:75
Details of an IPTC record.
Definition datasets.hpp:48
const char * name_
Record name (one word).
Definition datasets.hpp:52
RecordInfo(uint16_t recordId, const char *name, const char *desc)
Constructor.
Definition datasets.cpp:63
uint16_t recordId_
Record id.
Definition datasets.hpp:51
const char * desc_
Record description.
Definition datasets.hpp:53