/* * Copyright 2023 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkXmp_DEFINED #define SkXmp_DEFINED #include "include/core/SkRefCnt.h" #include "include/private/base/SkAPI.h" class SkData; struct SkGainmapInfo; #include #include /* * An interface to extract information from XMP metadata. */ class SK_API SkXmp { public: SkXmp() = default; virtual ~SkXmp() = default; // Make noncopyable SkXmp(const SkXmp&) = delete; SkXmp& operator= (const SkXmp&) = delete; // Create from XMP data. static std::unique_ptr Make(sk_sp xmpData); // Create from standard XMP + extended XMP data, see XMP Specification Part 3: Storage in files, // Section 1.1.3.1: Extended XMP in JPEG static std::unique_ptr Make(sk_sp xmpStandard, sk_sp xmpExtended); // Extract HDRGM gainmap parameters. // TODO(b/338342146): Remove this once all callers are removed. bool getGainmapInfoHDRGM(SkGainmapInfo* info) const { return getGainmapInfoAdobe(info); } // Extract gainmap parameters from http://ns.adobe.com/hdr-gain-map/1.0/. virtual bool getGainmapInfoAdobe(SkGainmapInfo* info) const = 0; // If the image specifies http://ns.apple.com/pixeldatainfo/1.0/ AuxiliaryImageType of // urn:com:apple:photo:2020:aux:hdrgainmap, and includes a http://ns.apple.com/HDRGainMap/1.0/ // HDRGainMapVersion, then populate |info| with gainmap parameters that will approximate the // math specified at [0] and return true. // [0] https://developer.apple.com/documentation/appkit/images_and_pdf/ // applying_apple_hdr_effect_to_your_photos virtual bool getGainmapInfoApple(float exifHdrHeadroom, SkGainmapInfo* info) const = 0; // If this includes GContainer metadata and the GContainer contains an item with semantic // GainMap and Mime of image/jpeg, then return true, and populate |offset| and |size| with // that item's offset (from the end of the primary JPEG image's EndOfImage), and the size of // the gainmap. virtual bool getContainerGainmapLocation(size_t* offset, size_t* size) const = 0; // Return the GUID of an Extended XMP if present, or null otherwise. virtual const char* getExtendedXmpGuid() const = 0; }; #endif