#include "include/private/SkXmp.h"
#include "include/core/SkColor.h"
#include "include/core/SkData.h"
#include "include/core/SkScalar.h"
#include "include/core/SkStream.h"
#include "include/private/SkGainmapInfo.h"
#include "include/utils/SkParse.h"
#include "src/codec/SkCodecPriv.h"
#include "src/xml/SkDOM.h"
#include <cmath>
#include <cstdint>
#include <cstring>
#include <string>
#include <vector>
#include <utility>
const char* kXmlnsPrefix = …;
const size_t kXmlnsPrefixLength = …;
static const char* get_namespace_prefix(const char* name) { … }
static const char* get_unique_child_text(const SkDOM& dom,
const SkDOM::Node* node,
const std::string& childName) { … }
static const SkDOM::Node* get_typed_child(const SkDOM* dom,
const SkDOM::Node* node,
const std::string& prefix,
const std::string& type) { … }
static const char* get_attr(const SkDOM* dom,
const SkDOM::Node* node,
const std::string& prefix,
const std::string& key) { … }
static bool get_attr_bool(const SkDOM* dom,
const SkDOM::Node* node,
const std::string& prefix,
const std::string& key,
bool* outValue) { … }
static bool get_attr_int32(const SkDOM* dom,
const SkDOM::Node* node,
const std::string& prefix,
const std::string& key,
int32_t* value) { … }
static bool get_attr_float(const SkDOM* dom,
const SkDOM::Node* node,
const std::string& prefix,
const std::string& key,
float* outValue) { … }
static bool get_attr_float3_as_list(const SkDOM* dom,
const SkDOM::Node* node,
const std::string& prefix,
const std::string& key,
SkColor4f* outValue) { … }
static bool get_attr_float3(const SkDOM* dom,
const SkDOM::Node* node,
const std::string& prefix,
const std::string& key,
SkColor4f* outValue) { … }
static void find_uri_namespaces(const SkDOM& dom,
const SkDOM::Node* node,
size_t count,
const char* uris[],
const char* outNamespaces[]) { … }
static const SkDOM::Node* find_uri_namespaces(const SkDOM& dom,
size_t count,
const char* uris[],
const char* outNamespaces[]) { … }
class SkXmpImpl final : public SkXmp { … };
const char* SkXmpImpl::getExtendedXmpGuid() const { … }
bool SkXmpImpl::findUriNamespaces(size_t count,
const char* uris[],
const char* outNamespaces[],
const SkDOM** outDom,
const SkDOM::Node** outNode) const { … }
bool SkXmpImpl::getContainerGainmapLocation(size_t* outOffset, size_t* outSize) const { … }
bool SkXmpImpl::getGainmapInfoApple(float exifHdrHeadroom, SkGainmapInfo* info) const { … }
bool SkXmpImpl::getGainmapInfoAdobe(SkGainmapInfo* outGainmapInfo) const { … }
bool SkXmpImpl::parseDom(sk_sp<SkData> xmpData, bool extended) { … }
std::unique_ptr<SkXmp> SkXmp::Make(sk_sp<SkData> xmpData) { … }
std::unique_ptr<SkXmp> SkXmp::Make(sk_sp<SkData> xmpStandard, sk_sp<SkData> xmpExtended) { … }