# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/config/ozone.gni")
import("//mojo/public/tools/bindings/mojom.gni")

mojom("mojom") {
  generate_java = true
  sources = [
    "accelerated_widget.mojom",
    "buffer_types.mojom",
    "ca_layer_params.mojom",
    "color_space.mojom",
    "delegated_ink_metadata.mojom",
    "delegated_ink_point.mojom",
    "delegated_ink_point_renderer.mojom",
    "display_color_spaces.mojom",
    "font_render_params.mojom",
    "gpu_extra_info.mojom",
    "gpu_fence_handle.mojom",
    "hdr_metadata.mojom",
    "hdr_static_metadata.mojom",
    "mask_filter_info.mojom",
    "overlay_priority_hint.mojom",
    "overlay_transform.mojom",
    "presentation_feedback.mojom",
    "rrect_f.mojom",
    "selection_bound.mojom",
    "swap_result.mojom",
    "swap_timings.mojom",
    "transform.mojom",
  ]

  public_deps = [
    ":native_handle_types",
    "//mojo/public/mojom/base",
    "//skia/public/mojom",
    "//ui/gfx/geometry/mojom",
  ]

  enabled_features = []
  if (use_x11 || ozone_platform_x11) {
    enabled_features += [ "enable_x11_params" ]
  }

  shared_cpp_typemaps = [
    {
      types = [
        {
          mojom = "gfx.mojom.BufferFormat"
          cpp = "::gfx::BufferFormat"
        },
        {
          mojom = "gfx.mojom.BufferUsage"
          cpp = "::gfx::BufferUsage"
        },
        {
          mojom = "gfx.mojom.BufferUsageAndFormat"
          cpp = "::gfx::BufferUsageAndFormat"
        },
        {
          mojom = "gfx.mojom.BufferPlane"
          cpp = "::gfx::BufferPlane"
        },
        {
          mojom = "gfx.mojom.GpuMemoryBufferHandle"
          cpp = "::gfx::GpuMemoryBufferHandle"
          move_only = true
          nullable_is_same_type = true
        },
        {
          mojom = "gfx.mojom.GpuMemoryBufferId"
          cpp = "::gfx::GpuMemoryBufferId"
          copyable_pass_by_value = true
        },
        {
          mojom = "gfx.mojom.GpuMemoryBufferType"
          cpp = "::gfx::GpuMemoryBufferType"
        },
      ]

      traits_headers = [ "buffer_types_mojom_traits.h" ]
      traits_public_deps = [ ":shared_mojom_traits" ]
    },
    {
      types = [
        {
          mojom = "gfx.mojom.ColorSpace"
          cpp = "::gfx::ColorSpace"
        },
      ]
      traits_headers = [ "color_space_mojom_traits.h" ]
      traits_public_deps = [ ":shared_mojom_traits" ]
    },
    {
      types = [
        {
          mojom = "gfx.mojom.DisplayColorSpaces"
          cpp = "::gfx::DisplayColorSpaces"
        },
      ]
      traits_headers = [ "display_color_spaces_mojom_traits.h" ]
      traits_public_deps = [ ":shared_mojom_traits" ]
    },
    {
      types = [
        {
          mojom = "gfx.mojom.GpuExtraInfo"
          cpp = "::gfx::GpuExtraInfo"
        },
        {
          mojom = "gfx.mojom.ANGLEFeature"
          cpp = "::gfx::ANGLEFeature"
        },
      ]
      traits_headers = [ "gpu_extra_info_mojom_traits.h" ]
      traits_public_deps = [ ":shared_mojom_traits" ]
    },
    {
      types = [
        {
          mojom = "gfx.mojom.GpuFenceHandle"
          cpp = "::gfx::GpuFenceHandle"
          move_only = true
          nullable_is_same_type = true
        },
      ]
      traits_headers = [ "gpu_fence_handle_mojom_traits.h" ]
      traits_public_deps = [ ":shared_mojom_traits" ]
    },
    {
      types = [
        {
          mojom = "gfx.mojom.HDRStaticMetadata"
          cpp = "::gfx::HDRStaticMetadata"
        },
      ]
      traits_headers = [ "hdr_static_metadata_mojom_traits.h" ]
      traits_public_deps = [ ":shared_mojom_traits" ]
    },
    {
      types = [
        {
          mojom = "gfx.mojom.PresentationFeedback"
          cpp = "::gfx::PresentationFeedback"
        },
      ]
      traits_headers = [ "presentation_feedback_mojom_traits.h" ]
      traits_public_deps = [ "//ui/gfx" ]
    },
    {
      types = [
        {
          mojom = "gfx.mojom.SelectionBound"
          cpp = "::gfx::SelectionBound"
        },
      ]
      traits_headers = [ "selection_bound_mojom_traits.h" ]
      traits_public_deps = [ "//ui/gfx/geometry/mojom:mojom_traits" ]
    },
    {
      types = [
        {
          mojom = "gfx.mojom.SwapTimings"
          cpp = "::gfx::SwapTimings"
        },
      ]
      traits_headers = [ "swap_timings_mojom_traits.h" ]
      traits_public_deps = [ "//ui/gfx" ]
    },
    {
      types = [
        {
          mojom = "gfx.mojom.Transform"
          cpp = "::gfx::Transform"
        },
      ]
      traits_headers = [ "transform_mojom_traits.h" ]
      traits_public_deps = [ "//ui/gfx" ]
    },
  ]

  cpp_typemaps = [
    {
      types = [
        {
          mojom = "gfx.mojom.AcceleratedWidget"
          cpp = "::gfx::AcceleratedWidget"
          copyable_pass_by_value = true
        },
      ]
      traits_headers = [ "accelerated_widget_mojom_traits.h" ]
      traits_public_deps = [ "//ui/gfx" ]
    },
    {
      types = [
        {
          mojom = "gfx.mojom.CALayerParams"
          cpp = "::gfx::CALayerParams"
        },
      ]
      traits_sources = [ "ca_layer_params_mojom_traits.cc" ]
      traits_headers = [ "ca_layer_params_mojom_traits.h" ]
      traits_public_deps = [ "//ui/gfx" ]
    },
    {
      types = [
        {
          mojom = "gfx.mojom.DelegatedInkMetadata"
          cpp = "::std::unique_ptr<::gfx::DelegatedInkMetadata>"
          move_only = true
          nullable_is_same_type = true
        },
      ]
      traits_sources = [ "delegated_ink_metadata_mojom_traits.cc" ]
      traits_headers = [ "delegated_ink_metadata_mojom_traits.h" ]
      traits_public_deps = [ "//ui/gfx" ]
    },
    {
      types = [
        {
          mojom = "gfx.mojom.DelegatedInkPoint"
          cpp = "::gfx::DelegatedInkPoint"
        },
      ]
      traits_sources = [ "delegated_ink_point_mojom_traits.cc" ]
      traits_headers = [ "delegated_ink_point_mojom_traits.h" ]
      traits_public_deps = [ "//ui/gfx" ]
    },
    {
      types = [
        {
          mojom = "gfx.mojom.ColorVolumeMetadata"
          cpp = "::gfx::ColorVolumeMetadata"
        },
        {
          mojom = "gfx.mojom.HDRMetadata"
          cpp = "::gfx::HDRMetadata"
        },
      ]
      traits_headers = [ "hdr_metadata_mojom_traits.h" ]
      traits_sources = [ "hdr_metadata_mojom_traits.cc" ]
      traits_public_deps = [ "//ui/gfx" ]
    },
    {
      types = [
        {
          mojom = "gfx.mojom.Hinting"
          cpp = "::gfx::FontRenderParams::Hinting"
        },
        {
          mojom = "gfx.mojom.SubpixelRendering"
          cpp = "::gfx::FontRenderParams::SubpixelRendering"
        },
      ]
      traits_headers = [ "font_render_params_mojom_traits.h" ]
      traits_public_deps = [ "//ui/gfx" ]
    },
    {
      types = [
        {
          mojom = "gfx.mojom.OverlayTransform"
          cpp = "::gfx::OverlayTransform"
        },
      ]
      traits_headers = [ "overlay_transform_mojom_traits.h" ]
      traits_public_deps = [ "//ui/gfx" ]
    },
    {
      types = [
        {
          mojom = "gfx.mojom.OverlayPriorityHint"
          cpp = "::gfx::OverlayPriorityHint"
        },
      ]
      traits_headers = [ "overlay_priority_hint_mojom_traits.h" ]
      traits_public_deps = [ "//ui/gfx" ]
    },
    {
      types = [
        {
          mojom = "gfx.mojom.RRectF"
          cpp = "::gfx::RRectF"
        },
      ]
      traits_headers = [ "rrect_f_mojom_traits.h" ]
      traits_public_deps = [ "//ui/gfx/geometry/mojom:mojom_traits" ]
    },
    {
      types = [
        {
          mojom = "gfx.mojom.SwapResult"
          cpp = "::gfx::SwapResult"
        },
      ]
      traits_headers = [ "swap_result_mojom_traits.h" ]
      traits_public_deps = [ "//ui/gfx" ]
    },
    {
      types = [
        {
          mojom = "gfx.mojom.MaskFilterInfo"
          cpp = "::gfx::MaskFilterInfo"
        },
      ]
      traits_sources = [ "mask_filter_info_mojom_traits.cc" ]
      traits_headers = [ "mask_filter_info_mojom_traits.h" ]
      traits_public_deps = [ "//ui/gfx" ]
    },
  ]

  cpp_typemaps += shared_cpp_typemaps
  blink_cpp_typemaps = shared_cpp_typemaps
  blink_cpp_typemaps += [
    {
      types = [
        {
          mojom = "gfx.mojom.DelegatedInkMetadata"
          cpp = "::std::unique_ptr<::gfx::DelegatedInkMetadata>"
          move_only = true
          nullable_is_same_type = true
        },
      ]
      traits_headers = [ "delegated_ink_metadata_mojom_traits.h" ]
      traits_public_deps = [ "//ui/gfx" ]
    },
  ]
}

mojom("native_handle_types") {
  sources = [ "native_handle_types.mojom" ]
  if (is_linux || is_chromeos || use_ozone) {
    enabled_features = [ "supports_native_pixmap" ]
  }
  public_deps = [ "//mojo/public/mojom/base" ]
  generate_java = true

  shared_cpp_typemap = {
    types = [
      {
        mojom = "gfx.mojom.NativePixmapHandle"
        cpp = "::gfx::NativePixmapHandle"
        move_only = true
      },
      {
        mojom = "gfx.mojom.NativePixmapPlane"
        cpp = "::gfx::NativePixmapPlane"
        move_only = true
      },
    ]
    traits_headers = [ "native_handle_types_mojom_traits.h" ]
    traits_public_deps = [ ":native_handle_types_mojom_traits" ]
  }
  cpp_typemaps = [ shared_cpp_typemap ]
  blink_cpp_typemaps = [ shared_cpp_typemap ]
}

mojom("test_interfaces") {
  sources = [ "traits_test_service.mojom" ]

  public_deps = [ ":mojom" ]
}

component("native_handle_types_mojom_traits") {
  output_name = "gfx_native_types_shared_mojom_traits"
  defines = [ "IS_GFX_NATIVE_HANDLE_TYPES_SHARED_MOJOM_TRAITS_IMPL" ]
  sources = [
    "native_handle_types_mojom_traits.cc",
    "native_handle_types_mojom_traits.h",
  ]

  public_deps = [
    ":native_handle_types_shared",
    "//base",
    "//mojo/public/mojom/base",
    "//ui/gfx",
  ]
}

component("shared_mojom_traits") {
  output_name = "gfx_shared_mojom_traits"
  defines = [ "IS_GFX_SHARED_MOJOM_TRAITS_IMPL" ]
  sources = [
    "buffer_types_mojom_traits.cc",
    "buffer_types_mojom_traits.h",
    "color_space_mojom_traits.cc",
    "color_space_mojom_traits.h",
    "display_color_spaces_mojom_traits.cc",
    "display_color_spaces_mojom_traits.h",
    "gpu_extra_info_mojom_traits.cc",
    "gpu_extra_info_mojom_traits.h",
    "gpu_fence_handle_mojom_traits.cc",
    "gpu_fence_handle_mojom_traits.h",
    "hdr_static_metadata_mojom_traits.cc",
    "hdr_static_metadata_mojom_traits.h",
  ]
  public_deps = [
    ":mojom_shared",
    ":native_handle_types",
    "//ui/gfx",
  ]
  if (use_ozone) {
    public_deps += [ "//ui/ozone:buildflags" ]
  }
  frameworks = [
    "CoreFoundation.framework",
    "IOSurface.framework",
  ]
}
