# Copyright 2014 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.

# This file contains UI-related build flags. It should theoretically be in the
# src/ui directory and only things that depend on the ui module should get the
# definitions.
#
# However, today we have many "bad" dependencies on some of these flags from,
# e.g. base, so they need to be global.
#
# See also build/config/features.gni

declare_args() {
  # Indicates if Ash is enabled. Ash is the Aura Shell which provides a
  # desktop-like environment for Aura. Requires use_aura = true
  use_ash = is_win || is_chromeos

  # Indicates if Ozone is enabled. Ozone is a low-level library layer for Linux
  # that does not require X11.
  use_ozone = false

  # Support ChromeOS touchpad gestures with ozone.
  use_evdev_gestures = false

  # Indicates if Aura is enabled. Aura is a low-level windowing library, sort
  # of a replacement for GDI or GTK.
  use_aura = is_linux || use_ozone || is_win || is_chromeos || use_ash

  # XInput2 multitouch support. Zero means disabled, nonzero indicates the
  # minimum XI2 version. For example, use_xi2_mt=2 means XI2.2 or above.
  use_xi2_mt = 2

  # True means the UI is built using the "views" framework.
  toolkit_views = is_win || is_chromeos || use_aura
}

# Additional dependent variables -----------------------------------------------
#
# These variables depend on other variables and can't be set externally.

if (is_linux) {
  use_cairo = true
  use_pango = true
} else {
  use_cairo = false
  use_pango = false
}

# Use GPU accelerated cross process image transport by default on linux builds
# with the Aura window manager.
ui_compositor_image_transport = use_aura && is_linux

use_default_render_theme = use_aura || is_linux

# Indicates if the UI toolkit depends on X11.
use_x11 = is_linux && !use_ozone

use_ozone_evdev = use_ozone

use_glib = is_linux

use_clipboard_aurax11 = is_linux && use_aura && use_x11
