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

Method LoaderXmpJpeg

src/preview.cpp:763–794  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

761}
762
763LoaderXmpJpeg::LoaderXmpJpeg(PreviewId id, const Image& image, int parIdx) : Loader(id, image) {
764 (void)parIdx;
765
766 const XmpData& xmpData = image_.xmpData();
767
768 std::string prefix = "xmpGImg";
769 if (xmpData.findKey(XmpKey("Xmp.xmp.Thumbnails[1]/xapGImg:image")) != xmpData.end()) {
770 prefix = "xapGImg";
771 }
772
773 auto imageDatum = xmpData.findKey(XmpKey("Xmp.xmp.Thumbnails[1]/" + prefix + ":image"));
774 if (imageDatum == xmpData.end())
775 return;
776 auto formatDatum = xmpData.findKey(XmpKey("Xmp.xmp.Thumbnails[1]/" + prefix + ":format"));
777 if (formatDatum == xmpData.end())
778 return;
779 auto widthDatum = xmpData.findKey(XmpKey("Xmp.xmp.Thumbnails[1]/" + prefix + ":width"));
780 if (widthDatum == xmpData.end())
781 return;
782 auto heightDatum = xmpData.findKey(XmpKey("Xmp.xmp.Thumbnails[1]/" + prefix + ":height"));
783 if (heightDatum == xmpData.end())
784 return;
785
786 if (formatDatum->toString() != "JPEG")
787 return;
788
789 width_ = widthDatum->toUint32();
790 height_ = heightDatum->toUint32();
791 preview_ = decodeBase64(imageDatum->toString());
792 size_ = preview_.size();
793 valid_ = true;
794}
795
796Loader::UniquePtr createLoaderXmpJpeg(PreviewId id, const Image& image, int parIdx) {
797 return std::make_unique<LoaderXmpJpeg>(id, image, parIdx);

Callers

nothing calls this directly

Calls 7

XmpKeyClass · 0.85
decodeBase64Function · 0.85
findKeyMethod · 0.45
endMethod · 0.45
toStringMethod · 0.45
toUint32Method · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected