# Copyright 2021 The Fuchsia 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("//tools/fidl/measure-tape/measure_tape.gni")

measure_tape("measure_tape_for_geometry") {
  target_binding = "hlcpp"
  target_types = [
    "fuchsia.ui.observation.geometry/ViewDescriptor",
    "fuchsia.ui.observation.geometry/ViewTreeSnapshot",
    "fuchsia.ui.observation.geometry/WatchResponse",
  ]
  fidls = [
    ":fuchsia.ui.observation.geometry",
    "//sdk/fidl/fuchsia.math",
  ]
}

## BAZEL2GN SENTINEL - DO NOT EDIT BELOW THIS LINE ##
#
#  ________  _________  ________  ________
# |\   ____\|\___   ___\\   __  \|\   __  \
# \ \  \___|\|___ \  \_\ \  \|\  \ \  \|\  \
#  \ \_____  \   \ \  \ \ \  \\\  \ \   ____\
#   \|____|\  \   \ \  \ \ \  \\\  \ \  \___|
#     ____\_\  \   \ \__\ \ \_______\ \__\
#    |\_________\   \|__|  \|_______|\|__|
#    \|_________|
#
#
# AUTO-GENERATED - DO NOT EDIT
#
# The targets below are auto-generated based on the targets defined in the
# BUILD.bazel file from the same directory. If you made changes to targets in
# Bazel, instead of editing this file manually, run:
#
#   > fx bazel2gn
#
# Please do NOT edit this file directly. Instead, edit the BUILD.bazel file and
# rerun bazel2gn.

import("//build/tools/bazel2gn/bazel_migration.gni")

# A self-verification target for generated content in this file.
if (is_host) {
  verify_bazel2gn("verify_bazel2gn") {
  }
}

fidl("fuchsia.ui.observation.geometry") {
  sources = [
    "overview.fidl",
    "watcher.fidl",
  ]
  sdk_area = "UI"
  sdk_category = "partner"
  enable_hlcpp = true
  stable = true
  visibility = [ "*" ]
  public_deps = [
    "//sdk/fidl/fuchsia.math",
    "//zircon/vdso/zx",
  ]
}
