chromium/skia/public/mojom/BUILD.gn

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

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

# Normally typemap traits sources should be build directly into mojom targets
# via the typemap file. This target is for typemapped mojo_base types whose
# traits are shared between chromium and blink variants.
component("shared_typemap_traits") {
  output_name = "skia_shared_typemap_traits"

  sources = [
    "bitmap_skbitmap_mojom_traits.cc",
    "bitmap_skbitmap_mojom_traits.h",
    "image_info_mojom_traits.cc",
    "image_info_mojom_traits.h",
    "surface_origin_mojom_traits.h",
  ]

  defines = [ "IS_SKIA_SHARED_TRAITS_IMPL" ]

  public_deps = [
    "//base",
    "//mojo/public/cpp/base:shared_typemap_traits",
    "//skia",
    "//skia:skcms",
    "//skia/public/mojom:mojom_shared",
  ]
}

mojom("mojom") {
  generate_java = true
  sources = [
    "bitmap.mojom",
    "image_info.mojom",
    "skcolor.mojom",
    "skcolor4f.mojom",
    "skcolorspace.mojom",
    "skcolorspace_primaries.mojom",
    "surface_origin.mojom",
    "tile_mode.mojom",
  ]

  public_deps = [ "//mojo/public/mojom/base" ]

  shared_skia_cpp_typemaps = [
    {
      types = [
        {
          mojom = "skia.mojom.TileMode"
          cpp = "::SkTileMode"
        },
      ]
      traits_headers = [ "tile_mode_mojom_traits.h" ]
      traits_public_deps = [ "//skia" ]
    },
    {
      types = [
        {
          mojom = "skia.mojom.BitmapN32"
          cpp = "::SkBitmap"
          nullable_is_same_type = true
        },
        {
          mojom = "skia.mojom.BitmapWithArbitraryBpp"
          cpp = "::SkBitmap"
          nullable_is_same_type = true
        },
        {
          mojom = "skia.mojom.BitmapWithArbitraryBpp"
          cpp = "::SkBitmap"
          nullable_is_same_type = true
        },
        {
          mojom = "skia.mojom.BitmapMappedFromTrustedProcess"
          cpp = "::SkBitmap"
          nullable_is_same_type = true
        },
        {
          mojom = "skia.mojom.InlineBitmap"
          cpp = "::SkBitmap"
          nullable_is_same_type = true
        },
      ]
      traits_headers = [ "bitmap_skbitmap_mojom_traits.h" ]
      traits_public_deps = [
        ":shared_typemap_traits",
        "//skia",
      ]
    },
    {
      types = [
        {
          mojom = "skia.mojom.SkcmsMatrix3x3"
          cpp = "::skcms_Matrix3x3"
        },
      ]
      traits_headers = [ "skcolorspace_mojom_traits.h" ]
      traits_public_deps = [ "//skia" ]
    },
    {
      types = [
        {
          mojom = "skia.mojom.SkcmsTransferFunction"
          cpp = "::skcms_TransferFunction"
        },
      ]
      traits_headers = [ "skcolorspace_mojom_traits.h" ]
      traits_public_deps = [ "//skia" ]
    },
    {
      types = [
        {
          mojom = "skia.mojom.SkColor"
          cpp = "::SkColor"
          copyable_pass_by_value = true
        },
      ]
      traits_headers = [ "skcolor_mojom_traits.h" ]
      traits_public_deps = [ "//skia" ]
    },
    {
      types = [
        {
          mojom = "skia.mojom.SkColor4f"
          cpp = "::SkColor4f"
        },
      ]
      traits_headers = [ "skcolor4f_mojom_traits.h" ]
      traits_public_deps = [ "//skia" ]
    },
    {
      types = [
        {
          mojom = "skia.mojom.SkColorSpacePrimaries"
          cpp = "::SkColorSpacePrimaries"
        },
      ]
      traits_headers = [ "skcolorspace_primaries_mojom_traits.h" ]
      traits_public_deps = [ "//skia" ]
    },
    {
      types = [
        {
          mojom = "skia.mojom.SkColorSpace"
          cpp = "::sk_sp<SkColorSpace>"
        },
      ]
      traits_headers = [ "skcolorspace_mojom_traits.h" ]
      traits_public_deps = [ "//skia" ]
    },
    {
      types = [
        {
          mojom = "skia.mojom.AlphaType"
          cpp = "::SkAlphaType"
        },
        {
          mojom = "skia.mojom.ColorType"
          cpp = "::SkColorType"
        },
        {
          mojom = "skia.mojom.ImageInfo"
          cpp = "::SkImageInfo"
        },
        {
          mojom = "skia.mojom.BitmapN32ImageInfo"
          cpp = "::SkImageInfo"
        },
      ]
      traits_headers = [ "image_info_mojom_traits.h" ]
      traits_public_deps = [
        ":shared_typemap_traits",
        "//skia",
      ]
    },
    {
      types = [
        {
          mojom = "skia.mojom.SurfaceOrigin"
          cpp = "::GrSurfaceOrigin"
        },
      ]
      traits_headers = [ "surface_origin_mojom_traits.h" ]
      traits_public_deps = [ ":shared_typemap_traits" ]
    },
  ]

  cpp_typemaps = shared_skia_cpp_typemaps
  blink_cpp_typemaps = shared_skia_cpp_typemaps

  # Generate TypeScript bindings for WebUI and JavaScript legacy bindings for
  # Blink.
  webui_module_path = "chrome://resources/mojo/skia/public/mojom/"
  generate_legacy_js_bindings = true
}