# 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_linux

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

  # Indicates if GLFW is enabled. GLFW is an abstraction layer for the
  # windowing system and OpenGL rendering, providing cross-platform support
  # for creating windows and OpenGL surfaces and contexts, and handling
  # window system events and input.
  use_glfw = 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_win || is_linux

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

  # Whether the entire browser uses toolkit-views on Mac instead of Cocoa.
  mac_views_browser = false

  # Whether we should use glib, a low level C utility library.
  use_glib = is_linux && !use_ozone
}

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

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_glfw

use_ozone_evdev = use_ozone

use_clipboard_aurax11 = is_linux && use_aura && use_x11

enable_hidpi = is_mac || is_chromeos || is_win || is_linux

enable_topchrome_md = false
