MCPcopy Create free account
hub / github.com/Exiv2/exiv2 / LoaderExifJpeg

Method LoaderExifJpeg

src/preview.cpp:458–485  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

456}
457
458LoaderExifJpeg::LoaderExifJpeg(PreviewId id, const Image& image, int parIdx) : Loader(id, image) {
459 const ExifData& exifData = image_.exifData();
460 auto pos = exifData.findKey(ExifKey(param_[parIdx].offsetKey_));
461 if (pos != exifData.end() && pos->count() > 0) {
462 offset_ = pos->toUint32();
463 }
464
465 size_ = 0;
466 pos = exifData.findKey(ExifKey(param_[parIdx].sizeKey_));
467 if (pos != exifData.end() && pos->count() > 0) {
468 size_ = pos->toUint32();
469 }
470
471 if (offset_ == 0 || size_ == 0)
472 return;
473
474 if (param_[parIdx].baseOffsetKey_) {
475 pos = exifData.findKey(ExifKey(param_[parIdx].baseOffsetKey_));
476 if (pos != exifData.end() && pos->count() > 0) {
477 offset_ += pos->toUint32();
478 }
479 }
480
481 if (Safe::add(offset_, size_) > image_.io().size())
482 return;
483
484 valid_ = true;
485}
486
487Loader::UniquePtr createLoaderExifJpeg(PreviewId id, const Image& image, int parIdx) {
488 return std::make_unique<LoaderExifJpeg>(id, image, parIdx);

Callers

nothing calls this directly

Calls 7

ExifKeyClass · 0.85
addFunction · 0.85
findKeyMethod · 0.45
endMethod · 0.45
countMethod · 0.45
toUint32Method · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected