本文整理汇总了C++中DMetadata::isEmpty方法的典型用法代码示例。如果您正苦于以下问题:C++ DMetadata::isEmpty方法的具体用法?C++ DMetadata::isEmpty怎么用?C++ DMetadata::isEmpty使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DMetadata
的用法示例。
在下文中一共展示了DMetadata::isEmpty方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: findFromMetadata
LensFunIface::MetadataMatch LensFunIface::findFromMetadata(const DMetadata& meta)
{
MetadataMatch ret = MetadataNoMatch;
d->settings = LensFunContainer();
d->usedCamera = 0;
d->usedLens = 0;
d->lensDescription.clear();
if (meta.isEmpty())
{
qCDebug(DIGIKAM_DIMG_LOG) << "No metadata available";
return LensFunIface::MetadataUnavailable;
}
PhotoInfoContainer photoInfo = meta.getPhotographInformation();
d->makeDescription = photoInfo.make.trimmed();
d->modelDescription = photoInfo.model.trimmed();
bool exactMatch = true;
if (d->makeDescription.isEmpty())
{
qCDebug(DIGIKAM_DIMG_LOG) << "No camera maker info available";
exactMatch = false;
}
else
{
// NOTE: see bug #184156:
// Some rules to wrap unknown camera device from Lensfun database, which have equivalent in fact.
if (d->makeDescription == QLatin1String("Canon"))
{
if (d->modelDescription == QLatin1String("Canon EOS Kiss Digital X"))
{
d->modelDescription = QLatin1String("Canon EOS 400D DIGITAL");
}
if (d->modelDescription == QLatin1String("G1 X"))
{
d->modelDescription = QLatin1String("G1X");
}
}
d->lensDescription = photoInfo.lens.trimmed();
// ------------------------------------------------------------------------------------------------
DevicePtr lfCamera = findCamera(d->makeDescription, d->modelDescription);
if (lfCamera)
{
setUsedCamera(lfCamera);
qCDebug(DIGIKAM_DIMG_LOG) << "Camera maker : " << d->settings.cameraMake;
qCDebug(DIGIKAM_DIMG_LOG) << "Camera model : " << d->settings.cameraModel;
// ------------------------------------------------------------------------------------------------
// -- Performing lens description searches.
if (!d->lensDescription.isEmpty())
{
LensList lensMatches;
QString lensCutted;
LensList lensList;
// STAGE 1, search in LensFun database as well.
lensList = findLenses(d->usedCamera, d->lensDescription);
qCDebug(DIGIKAM_DIMG_LOG) << "* Check for lens by direct query (" << d->lensDescription << " : " << lensList.count() << ")";
lensMatches.append(lensList);
// STAGE 2, Adapt exiv2 strings to lensfun strings for Nikon.
lensCutted = d->lensDescription;
if (lensCutted.contains(QLatin1String("Nikon")))
{
lensCutted.remove(QLatin1String("Nikon "));
lensCutted.remove(QLatin1String("Zoom-"));
lensCutted.replace(QLatin1String("IF-ID"), QLatin1String("ED-IF"));
lensList = findLenses(d->usedCamera, lensCutted);
qCDebug(DIGIKAM_DIMG_LOG) << "* Check for Nikon lens (" << lensCutted << " : " << lensList.count() << ")";
lensMatches.append(lensList);
}
// TODO : Add here more specific lens maker rules.
// LAST STAGE, Adapt exiv2 strings to lensfun strings. Some lens description use something like that :
// "10.0 - 20.0 mm". This must be adapted like this : "10-20mm"
lensCutted = d->lensDescription;
lensCutted.replace(QRegExp(QLatin1String("\\.[0-9]")), QLatin1String("")); //krazy:exclude=doublequote_chars
lensCutted.replace(QLatin1String(" - "), QLatin1String("-"));
lensCutted.replace(QLatin1String(" mm"), QLatin1String("mn"));
lensList = findLenses(d->usedCamera, lensCutted);
qCDebug(DIGIKAM_DIMG_LOG) << "* Check for no maker lens (" << lensCutted << " : " << lensList.count() << ")";
lensMatches.append(lensList);
// Remove all duplicate lenses in the list by using QSet.
lensMatches = lensMatches.toSet().toList();
// Display the results.
if (lensMatches.isEmpty())
{
//.........这里部分代码省略.........