/*
 * Copyright 2018 Google LLC
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#include "src/codec/SkParseEncodedOrigin.h"

#include "include/core/SkData.h"
#include "include/core/SkRefCnt.h"
#include "include/private/SkAssert.h"
#include "include/private/SkExif.h"

#include <optional>

bool SkParseEncodedOrigin(const void* data, size_t data_length, SkEncodedOrigin* orientation) {
    SkASSERT(orientation);
    SkExif::Metadata exif;
    SkExif::Parse(exif, SkData::MakeWithoutCopy(data, data_length).get());
    if (exif.fOrigin.has_value()) {
        *orientation = exif.fOrigin.value();
        return true;
    }
    return false;
}
