Changeset View
Changeset View
Standalone View
Standalone View
libs/ui/kisexiv2/kis_exif_io.cpp
Show First 20 Lines • Show All 432 Lines • ▼ Show 20 Line(s) | 431 | } else if (exivKey == "Exif.Photo.SceneType") { | |||
---|---|---|---|---|---|
433 | v = new Exiv2::DataValue((const Exiv2::byte*)s, 1); | 433 | v = new Exiv2::DataValue((const Exiv2::byte*)s, 1); | ||
434 | } else if (exivKey == "Exif.Photo.ComponentsConfiguration") { | 434 | } else if (exivKey == "Exif.Photo.ComponentsConfiguration") { | ||
435 | v = kmdIntOrderedArrayToExifArray(entry.value()); | 435 | v = kmdIntOrderedArrayToExifArray(entry.value()); | ||
436 | } else if (exivKey == "Exif.Image.Artist") { // load as dc:creator | 436 | } else if (exivKey == "Exif.Image.Artist") { // load as dc:creator | ||
437 | KisMetaData::Value creator = entry.value(); | 437 | KisMetaData::Value creator = entry.value(); | ||
438 | if (entry.value().asArray().size() > 0) { | 438 | if (entry.value().asArray().size() > 0) { | ||
439 | creator = entry.value().asArray()[0]; | 439 | creator = entry.value().asArray()[0]; | ||
440 | } | 440 | } | ||
441 | #if EXIV2_MAJOR_VERSION == 0 && EXIV2_MINOR_VERSION <= 20 | 441 | #if !EXIV2_TEST_VERSION(0,21,0) | ||
442 | v = kmdValueToExivValue(creator, Exiv2::ExifTags::tagType(exifKey.tag(), exifKey.ifdId())); | 442 | v = kmdValueToExivValue(creator, Exiv2::ExifTags::tagType(exifKey.tag(), exifKey.ifdId())); | ||
443 | #else | 443 | #else | ||
444 | v = kmdValueToExivValue(creator, exifKey.defaultTypeId()); | 444 | v = kmdValueToExivValue(creator, exifKey.defaultTypeId()); | ||
445 | | ||||
pino: extra line change | |||||
446 | #endif | 445 | #endif | ||
447 | } else if (exivKey == "Exif.Photo.OECF") { | 446 | } else if (exivKey == "Exif.Photo.OECF") { | ||
448 | v = kmdOECFStructureToExifOECF(entry.value()); | 447 | v = kmdOECFStructureToExifOECF(entry.value()); | ||
449 | } else if (exivKey == "Exif.Photo.DeviceSettingDescription") { | 448 | } else if (exivKey == "Exif.Photo.DeviceSettingDescription") { | ||
450 | v = deviceSettingDescriptionKMDToExif(entry.value()); | 449 | v = deviceSettingDescriptionKMDToExif(entry.value()); | ||
451 | } else if (exivKey == "Exif.Photo.CFAPattern") { | 450 | } else if (exivKey == "Exif.Photo.CFAPattern") { | ||
452 | v = cfaPatternKMDToExif(entry.value()); | 451 | v = cfaPatternKMDToExif(entry.value()); | ||
453 | } else if (exivKey == "Exif.Photo.Flash") { | 452 | } else if (exivKey == "Exif.Photo.Flash") { | ||
454 | v = flashKMDToExif(entry.value()); | 453 | v = flashKMDToExif(entry.value()); | ||
455 | } else if (exivKey == "Exif.Photo.UserComment") { | 454 | } else if (exivKey == "Exif.Photo.UserComment") { | ||
456 | Q_ASSERT(entry.value().type() == KisMetaData::Value::LangArray); | 455 | Q_ASSERT(entry.value().type() == KisMetaData::Value::LangArray); | ||
457 | QMap<QString, KisMetaData::Value> langArr = entry.value().asLangArray(); | 456 | QMap<QString, KisMetaData::Value> langArr = entry.value().asLangArray(); | ||
458 | if (langArr.contains("x-default")) { | 457 | if (langArr.contains("x-default")) { | ||
459 | #if EXIV2_MAJOR_VERSION == 0 && EXIV2_MINOR_VERSION <= 20 | 458 | #if !EXIV2_TEST_VERSION(0,21,0) | ||
460 | v = kmdValueToExivValue(langArr.value("x-default"), Exiv2::ExifTags::tagType(exifKey.tag(), exifKey.ifdId())); | 459 | v = kmdValueToExivValue(langArr.value("x-default"), Exiv2::ExifTags::tagType(exifKey.tag(), exifKey.ifdId())); | ||
461 | #else | 460 | #else | ||
462 | v = kmdValueToExivValue(langArr.value("x-default"), exifKey.defaultTypeId()); | 461 | v = kmdValueToExivValue(langArr.value("x-default"), exifKey.defaultTypeId()); | ||
463 | #endif | 462 | #endif | ||
464 | } else if (langArr.size() > 0) { | 463 | } else if (langArr.size() > 0) { | ||
465 | #if EXIV2_MAJOR_VERSION == 0 && EXIV2_MINOR_VERSION <= 20 | 464 | #if !EXIV2_TEST_VERSION(0,21,0) | ||
466 | v = kmdValueToExivValue(langArr.begin().value(), Exiv2::ExifTags::tagType(exifKey.tag(), exifKey.ifdId())); | 465 | v = kmdValueToExivValue(langArr.begin().value(), Exiv2::ExifTags::tagType(exifKey.tag(), exifKey.ifdId())); | ||
467 | #else | 466 | #else | ||
468 | v = kmdValueToExivValue(langArr.begin().value(), exifKey.defaultTypeId()); | 467 | v = kmdValueToExivValue(langArr.begin().value(), exifKey.defaultTypeId()); | ||
469 | #endif | 468 | #endif | ||
470 | } | 469 | } | ||
471 | } else { | 470 | } else { | ||
472 | dbgMetaData << exifKey.tag(); | 471 | dbgMetaData << exifKey.tag(); | ||
473 | #if EXIV2_MAJOR_VERSION == 0 && EXIV2_MINOR_VERSION <= 20 | 472 | #if !EXIV2_TEST_VERSION(0,21,0) | ||
474 | v = kmdValueToExivValue(entry.value(), Exiv2::ExifTags::tagType(exifKey.tag(), exifKey.ifdId())); | 473 | v = kmdValueToExivValue(entry.value(), Exiv2::ExifTags::tagType(exifKey.tag(), exifKey.ifdId())); | ||
475 | #else | 474 | #else | ||
476 | v = kmdValueToExivValue(entry.value(), exifKey.defaultTypeId()); | 475 | v = kmdValueToExivValue(entry.value(), exifKey.defaultTypeId()); | ||
477 | #endif | 476 | #endif | ||
478 | } | 477 | } | ||
479 | if (v && v->typeId() != Exiv2::invalidTypeId) { | 478 | if (v && v->typeId() != Exiv2::invalidTypeId) { | ||
480 | dbgMetaData << "Saving key" << exivKey << " of KMD value" << entry.value(); | 479 | dbgMetaData << "Saving key" << exivKey << " of KMD value" << entry.value(); | ||
481 | exifData.add(exifKey, v); | 480 | exifData.add(exifKey, v); | ||
482 | } else { | 481 | } else { | ||
483 | dbgMetaData << "No exif value was created for" << entry.qualifiedName() << " as" << exivKey;// << " of KMD value" << entry.value(); | 482 | dbgMetaData << "No exif value was created for" << entry.qualifiedName() << " as" << exivKey;// << " of KMD value" << entry.value(); | ||
484 | } | 483 | } | ||
485 | } | 484 | } | ||
486 | } catch (Exiv2::AnyError& e) { | 485 | } catch (Exiv2::AnyError& e) { | ||
487 | dbgMetaData << "exiv error " << e.what(); | 486 | dbgMetaData << "exiv error " << e.what(); | ||
488 | } | 487 | } | ||
489 | } | 488 | } | ||
490 | #if EXIV2_MAJOR_VERSION == 0 && EXIV2_MINOR_VERSION <= 17 | 489 | #if !EXIV2_TEST_VERSION(0,18,0) | ||
491 | Exiv2::DataBuf rawData = exifData.copy(); | 490 | Exiv2::DataBuf rawData = exifData.copy(); | ||
492 | ioDevice->write((const char*) rawData.pData_, rawData.size_); | 491 | ioDevice->write((const char*) rawData.pData_, rawData.size_); | ||
493 | #else | 492 | #else | ||
494 | Exiv2::Blob rawData; | 493 | Exiv2::Blob rawData; | ||
495 | Exiv2::ExifParser::encode(rawData, Exiv2::littleEndian, exifData); | 494 | Exiv2::ExifParser::encode(rawData, Exiv2::littleEndian, exifData); | ||
496 | ioDevice->write((const char*) &*rawData.begin(), rawData.size()); | 495 | ioDevice->write((const char*) &*rawData.begin(), rawData.size()); | ||
497 | #endif | 496 | #endif | ||
498 | ioDevice->close(); | 497 | ioDevice->close(); | ||
Show All 10 Lines | |||||
509 | { | 508 | { | ||
510 | ioDevice->open(QIODevice::ReadOnly); | 509 | ioDevice->open(QIODevice::ReadOnly); | ||
511 | if (!ioDevice->isOpen()) { | 510 | if (!ioDevice->isOpen()) { | ||
512 | return false; | 511 | return false; | ||
513 | } | 512 | } | ||
514 | QByteArray arr = ioDevice->readAll(); | 513 | QByteArray arr = ioDevice->readAll(); | ||
515 | Exiv2::ExifData exifData; | 514 | Exiv2::ExifData exifData; | ||
516 | Exiv2::ByteOrder byteOrder; | 515 | Exiv2::ByteOrder byteOrder; | ||
517 | #if EXIV2_MAJOR_VERSION == 0 && EXIV2_MINOR_VERSION <= 17 | 516 | #if !EXIV2_TEST_VERSION(0,18,0) | ||
518 | exifData.load((const Exiv2::byte*)arr.data(), arr.size()); | 517 | exifData.load((const Exiv2::byte*)arr.data(), arr.size()); | ||
519 | byteOrder = exifData.byteOrder(); | 518 | byteOrder = exifData.byteOrder(); | ||
520 | #else | 519 | #else | ||
521 | try { | 520 | try { | ||
522 | byteOrder = Exiv2::ExifParser::decode(exifData, (const Exiv2::byte*)arr.data(), arr.size()); | 521 | byteOrder = Exiv2::ExifParser::decode(exifData, (const Exiv2::byte*)arr.data(), arr.size()); | ||
523 | } | 522 | } | ||
524 | catch (const std::exception& ex) { | 523 | catch (const std::exception& ex) { | ||
525 | warnKrita << "Received exception trying to parse exiv data" << ex.what(); | 524 | warnKrita << "Received exception trying to parse exiv data" << ex.what(); | ||
526 | return false; | 525 | return false; | ||
527 | } | 526 | } | ||
528 | catch (...) { | 527 | catch (...) { | ||
529 | dbgKrita << "Received unknown exception trying to parse exiv data"; | 528 | dbgKrita << "Received unknown exception trying to parse exiv data"; | ||
530 | return false; | 529 | return false; | ||
531 | } | 530 | } | ||
532 | | ||||
pino: extra line change | |||||
I thought it was probably not intended to have this empty line inside the #else part in the first place asturmlechner: I thought it was probably not intended to have this empty line inside the #else part in the… | |||||
533 | #endif | 531 | #endif | ||
532 | | ||||
pino: extra line change | |||||
534 | dbgMetaData << "Byte order = " << byteOrder << ppVar(Exiv2::bigEndian) << ppVar(Exiv2::littleEndian); | 533 | dbgMetaData << "Byte order = " << byteOrder << ppVar(Exiv2::bigEndian) << ppVar(Exiv2::littleEndian); | ||
535 | dbgMetaData << "There are" << exifData.count() << " entries in the exif section"; | 534 | dbgMetaData << "There are" << exifData.count() << " entries in the exif section"; | ||
536 | const KisMetaData::Schema* tiffSchema = KisMetaData::SchemaRegistry::instance()->schemaFromUri(KisMetaData::Schema::TIFFSchemaUri); | 535 | const KisMetaData::Schema* tiffSchema = KisMetaData::SchemaRegistry::instance()->schemaFromUri(KisMetaData::Schema::TIFFSchemaUri); | ||
537 | Q_ASSERT(tiffSchema); | 536 | Q_ASSERT(tiffSchema); | ||
538 | const KisMetaData::Schema* exifSchema = KisMetaData::SchemaRegistry::instance()->schemaFromUri(KisMetaData::Schema::EXIFSchemaUri); | 537 | const KisMetaData::Schema* exifSchema = KisMetaData::SchemaRegistry::instance()->schemaFromUri(KisMetaData::Schema::EXIFSchemaUri); | ||
539 | Q_ASSERT(exifSchema); | 538 | Q_ASSERT(exifSchema); | ||
540 | const KisMetaData::Schema* dcSchema = KisMetaData::SchemaRegistry::instance()->schemaFromUri(KisMetaData::Schema::DublinCoreSchemaUri); | 539 | const KisMetaData::Schema* dcSchema = KisMetaData::SchemaRegistry::instance()->schemaFromUri(KisMetaData::Schema::DublinCoreSchemaUri); | ||
541 | Q_ASSERT(dcSchema); | 540 | Q_ASSERT(dcSchema); | ||
▲ Show 20 Lines • Show All 98 Lines • Show Last 20 Lines |
extra line change