// skia/public/mojom/hdr_metadata.mojom-send-validation.h is auto generated by mojom_bindings_generator.py, do not edit

// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef SKIA_PUBLIC_MOJOM_HDR_METADATA_MOJOM_SEND_VALIDATION_H_
#define SKIA_PUBLIC_MOJOM_HDR_METADATA_MOJOM_SEND_VALIDATION_H_

#include "skia/public/mojom/hdr_metadata.mojom-shared-internal.h"
#include "skia/public/mojom/skcolorspace_primaries.mojom-shared.h"

#include "skia/public/mojom/hdr_metadata.mojom-data-view.h"

#include "mojo/public/cpp/bindings/lib/send_validation_type.h"
#include "mojo/public/cpp/bindings/lib/send_validation.h"

namespace mojo::internal {

template <typename MaybeConstUserType, mojo::internal::SendValidation send_validation>
struct SendValidationSerializer<::skia::mojom::SkHdrContentLightLevelInformationDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::skia::mojom::SkHdrContentLightLevelInformationDataView, UserType>;
  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::skia::mojom::internal::SkHdrContentLightLevelInformation_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

      fragment->max_cll = Traits::max_cll(input);

      fragment->max_fall = Traits::max_fall(input);
  }
};

template <typename MaybeConstUserType, mojo::internal::SendValidation send_validation>
struct SendValidationSerializer<::skia::mojom::SkHdrMasteringDisplayColorVolumeDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::skia::mojom::SkHdrMasteringDisplayColorVolumeDataView, UserType>;
  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::skia::mojom::internal::SkHdrMasteringDisplayColorVolume_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

      decltype(Traits::primaries(input)) in_primaries = Traits::primaries(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->primaries)::BaseType> primaries_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::skia::mojom::SkColorSpacePrimariesDataView, send_validation>(
        in_primaries,
        primaries_fragment);

      fragment->primaries.Set(
          primaries_fragment.is_null() ? nullptr : primaries_fragment.data());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->primaries.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null primaries in SkHdrMasteringDisplayColorVolume struct");

      fragment->max_luminance = Traits::max_luminance(input);

      fragment->min_luminance = Traits::min_luminance(input);
  }
};

template <typename MaybeConstUserType, mojo::internal::SendValidation send_validation>
struct SendValidationSerializer<::skia::mojom::SkHdrAgtmGainCurveControlPointDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::skia::mojom::SkHdrAgtmGainCurveControlPointDataView, UserType>;
  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::skia::mojom::internal::SkHdrAgtmGainCurveControlPoint_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

      fragment->x = Traits::x(input);

      fragment->y = Traits::y(input);

      fragment->m = Traits::m(input);
  }
};

template <typename MaybeConstUserType, mojo::internal::SendValidation send_validation>
struct SendValidationSerializer<::skia::mojom::SkHdrAgtmGainCurveDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::skia::mojom::SkHdrAgtmGainCurveDataView, UserType>;
  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::skia::mojom::internal::SkHdrAgtmGainCurve_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

      decltype(Traits::control_points(input)) in_control_points = Traits::control_points(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->control_points)::BaseType>
          control_points_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& control_points_validate_params =
          mojo::internal::GetArrayValidator<0, false, nullptr>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<::skia::mojom::SkHdrAgtmGainCurveControlPointDataView>, send_validation>(
        in_control_points,
        control_points_fragment,
        &control_points_validate_params);

      fragment->control_points.Set(
          control_points_fragment.is_null() ? nullptr : control_points_fragment.data());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->control_points.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null control_points in SkHdrAgtmGainCurve struct");
  }
};

template <typename MaybeConstUserType, mojo::internal::SendValidation send_validation>
struct SendValidationSerializer<::skia::mojom::SkHdrAgtmComponentMixingFunctionDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::skia::mojom::SkHdrAgtmComponentMixingFunctionDataView, UserType>;
  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::skia::mojom::internal::SkHdrAgtmComponentMixingFunction_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

      fragment->red = Traits::red(input);

      fragment->green = Traits::green(input);

      fragment->blue = Traits::blue(input);

      fragment->max = Traits::max(input);

      fragment->min = Traits::min(input);

      fragment->component = Traits::component(input);
  }
};

template <typename MaybeConstUserType, mojo::internal::SendValidation send_validation>
struct SendValidationSerializer<::skia::mojom::SkHdrAgtmColorGainFunctionDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::skia::mojom::SkHdrAgtmColorGainFunctionDataView, UserType>;
  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::skia::mojom::internal::SkHdrAgtmColorGainFunction_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

      decltype(Traits::component_mixing(input)) in_component_mixing = Traits::component_mixing(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->component_mixing)::BaseType> component_mixing_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::skia::mojom::SkHdrAgtmComponentMixingFunctionDataView, send_validation>(
        in_component_mixing,
        component_mixing_fragment);

      fragment->component_mixing.Set(
          component_mixing_fragment.is_null() ? nullptr : component_mixing_fragment.data());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->component_mixing.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null component_mixing in SkHdrAgtmColorGainFunction struct");

      decltype(Traits::gain_curve(input)) in_gain_curve = Traits::gain_curve(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->gain_curve)::BaseType> gain_curve_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::skia::mojom::SkHdrAgtmGainCurveDataView, send_validation>(
        in_gain_curve,
        gain_curve_fragment);

      fragment->gain_curve.Set(
          gain_curve_fragment.is_null() ? nullptr : gain_curve_fragment.data());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->gain_curve.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null gain_curve in SkHdrAgtmColorGainFunction struct");
  }
};

template <typename MaybeConstUserType, mojo::internal::SendValidation send_validation>
struct SendValidationSerializer<::skia::mojom::SkHdrAgtmAlternateImageDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::skia::mojom::SkHdrAgtmAlternateImageDataView, UserType>;
  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::skia::mojom::internal::SkHdrAgtmAlternateImage_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

      fragment->hdr_headroom = Traits::hdr_headroom(input);

      decltype(Traits::color_gain_function(input)) in_color_gain_function = Traits::color_gain_function(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->color_gain_function)::BaseType> color_gain_function_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::skia::mojom::SkHdrAgtmColorGainFunctionDataView, send_validation>(
        in_color_gain_function,
        color_gain_function_fragment);

      fragment->color_gain_function.Set(
          color_gain_function_fragment.is_null() ? nullptr : color_gain_function_fragment.data());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->color_gain_function.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null color_gain_function in SkHdrAgtmAlternateImage struct");
  }
};

template <typename MaybeConstUserType, mojo::internal::SendValidation send_validation>
struct SendValidationSerializer<::skia::mojom::SkHdrAgtmHeadroomAdaptiveToneMapDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::skia::mojom::SkHdrAgtmHeadroomAdaptiveToneMapDataView, UserType>;
  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::skia::mojom::internal::SkHdrAgtmHeadroomAdaptiveToneMap_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

      fragment->baseline_hdr_headroom = Traits::baseline_hdr_headroom(input);

      decltype(Traits::gain_application_space_primaries(input)) in_gain_application_space_primaries = Traits::gain_application_space_primaries(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->gain_application_space_primaries)::BaseType> gain_application_space_primaries_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::skia::mojom::SkColorSpacePrimariesDataView, send_validation>(
        in_gain_application_space_primaries,
        gain_application_space_primaries_fragment);

      fragment->gain_application_space_primaries.Set(
          gain_application_space_primaries_fragment.is_null() ? nullptr : gain_application_space_primaries_fragment.data());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->gain_application_space_primaries.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null gain_application_space_primaries in SkHdrAgtmHeadroomAdaptiveToneMap struct");

      decltype(Traits::alternate_images(input)) in_alternate_images = Traits::alternate_images(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->alternate_images)::BaseType>
          alternate_images_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& alternate_images_validate_params =
          mojo::internal::GetArrayValidator<0, false, nullptr>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<::skia::mojom::SkHdrAgtmAlternateImageDataView>, send_validation>(
        in_alternate_images,
        alternate_images_fragment,
        &alternate_images_validate_params);

      fragment->alternate_images.Set(
          alternate_images_fragment.is_null() ? nullptr : alternate_images_fragment.data());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->alternate_images.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null alternate_images in SkHdrAgtmHeadroomAdaptiveToneMap struct");
  }
};

template <typename MaybeConstUserType, mojo::internal::SendValidation send_validation>
struct SendValidationSerializer<::skia::mojom::SkHdrAdaptiveGlobalToneMapDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::skia::mojom::SkHdrAdaptiveGlobalToneMapDataView, UserType>;
  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::skia::mojom::internal::SkHdrAdaptiveGlobalToneMap_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

      fragment->hdr_reference_white = Traits::hdr_reference_white(input);

      decltype(Traits::headroom_adaptive_tone_map(input)) in_headroom_adaptive_tone_map = Traits::headroom_adaptive_tone_map(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->headroom_adaptive_tone_map)::BaseType> headroom_adaptive_tone_map_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::skia::mojom::SkHdrAgtmHeadroomAdaptiveToneMapDataView, send_validation>(
        in_headroom_adaptive_tone_map,
        headroom_adaptive_tone_map_fragment);

      fragment->headroom_adaptive_tone_map.Set(
          headroom_adaptive_tone_map_fragment.is_null() ? nullptr : headroom_adaptive_tone_map_fragment.data());
  }
};

}  // namespace mojo::internal

#endif  // SKIA_PUBLIC_MOJOM_HDR_METADATA_MOJOM_SEND_VALIDATION_H_