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

#include "rust/exif/FFI.h"
#include "rust/exif/FFI.rs.h"  // Generated by CXX bridge.

#include "include/private/SkExif.h"
// SkExif.h transitively includes SkEncodedOrigin.h for kLast_SkEncodedOrigin.

namespace rust_exif {

void ToSkExifMetadata(const ExifMetadata& rust_meta, SkExif::Metadata* out) {
    // Orientation: cast u32 (1-8) to SkEncodedOrigin after range check.
    if (rust_meta.has_origin) {
        uint32_t v = rust_meta.origin;
        if (v >= 1 && v <= static_cast<uint32_t>(kLast_SkEncodedOrigin)) {
            out->fOrigin = static_cast<SkEncodedOrigin>(v);
        }
    }

    if (rust_meta.has_hdr_headroom) {
        out->fHdrHeadroom = rust_meta.hdr_headroom;
    }

    if (rust_meta.has_resolution_unit) {
        out->fResolutionUnit = rust_meta.resolution_unit;
    }

    if (rust_meta.has_x_resolution) {
        out->fXResolution = rust_meta.x_resolution;
    }

    if (rust_meta.has_y_resolution) {
        out->fYResolution = rust_meta.y_resolution;
    }

    if (rust_meta.has_pixel_x_dimension) {
        out->fPixelXDimension = rust_meta.pixel_x_dimension;
    }

    if (rust_meta.has_pixel_y_dimension) {
        out->fPixelYDimension = rust_meta.pixel_y_dimension;
    }
}

}  // namespace rust_exif
