345
345
boost::python::tuple Image::getXmpTag(std::string key)
349
Exiv2::XmpKey xmpKey = Exiv2::XmpKey(key);
350
boost::python::list values;
351
unsigned int occurences = 0;
352
for (Exiv2::XmpMetadata::iterator i = _xmpData.begin();
349
throw Exiv2::Error(METADATA_NOT_READ);
352
Exiv2::XmpKey xmpKey = Exiv2::XmpKey(key);
354
if(_xmpData.findKey(xmpKey) == _xmpData.end())
356
throw Exiv2::Error(KEY_NOT_FOUND, key);
359
Exiv2::Xmpdatum xmpDatum = _xmpData[key];
360
std::string sTagName = xmpKey.tagName();
361
std::string sTagLabel = xmpKey.tagLabel();
362
std::string sTagDesc(Exiv2::XmpProperties::propertyDesc(xmpKey));
363
std::string sTagType(Exiv2::XmpProperties::propertyInfo(xmpKey)->xmpValueType_);
364
std::string sTagValue = xmpDatum.toString();
365
return boost::python::make_tuple(key, sTagName, sTagLabel, sTagDesc, sTagType, sTagValue);
368
/*void Image::setXmpTagValues(std::string key, boost::python::tuple values)
372
throw Exiv2::Error(METADATA_NOT_READ);
375
Exiv2::XmpKey xmpKey = Exiv2::XmpKey(key);
376
unsigned int index = 0;
377
unsigned int max = len(values);
378
Exiv2::XmpMetadata::iterator dataIterator = _xmpData.findKey(xmpKey);
381
std::string value = boost::python::extract<std::string>(values[index++]);
382
if (dataIterator != _xmpData.end())
384
// Override an existing value
385
dataIterator->setValue(value);
386
dataIterator = std::find_if(++dataIterator, _xmpData.end(),
387
Exiv2::FindMetadatumById::FindMetadatumById(xmpKey.tag(),
392
// Append a new value
393
Exiv2::Iptcdatum iptcDatum(iptcKey);
394
iptcDatum.setValue(value);
395
int state = _iptcData.add(iptcDatum);
358
values.append(i->toString());
398
throw Exiv2::Error(NON_REPEATABLE);
364
std::string sTagName = xmpKey.tagName();
365
std::string sTagLabel = xmpKey.tagLabel();
366
std::string sTagDesc(Exiv2::XmpProperties::propertyDesc(xmpKey));
367
std::string sTagType(Exiv2::XmpProperties::propertyInfo(xmpKey)->xmpValueType_);
368
return boost::python::make_tuple(key, sTagName, sTagLabel, sTagDesc, sTagType, values);
372
throw Exiv2::Error(KEY_NOT_FOUND, key);
402
// Erase the remaining values if any
403
while (dataIterator != _iptcData.end())
377
throw Exiv2::Error(METADATA_NOT_READ);
405
_iptcData.erase(dataIterator);
406
dataIterator = std::find_if(dataIterator, _iptcData.end(),
407
Exiv2::FindMetadatumById::FindMetadatumById(iptcKey.tag(),
382
413
boost::python::tuple Image::getThumbnailData()