# Copyright 2017 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/ios/asset_catalog.gni")

# List all resources used by Chrome on iOS (including those used by the private
# downstream repository).  Not all resources are listed as there are thousands
# of resources in material_design_icons repository.
#
# The image sets are described via strings following the $category/$image_name
# pattern and do not correspond to real paths.
_image_sets = [
  "action/ic_account_circle",
  "action/ic_account_circle_48pt",
  "action/ic_credit_card",
  "action/ic_delete",
  "action/ic_done",
  "action/ic_feedback",
  "action/ic_help",
  "action/ic_info",
  "action/ic_lock_18pt",
  "action/ic_open_in_browser",
  "action/ic_print",
  "action/ic_report_problem",
  "action/ic_search",
  "action/ic_settings_white",
  "action/ic_touch_app",
  "communication/ic_comment",
  "communication/ic_email",
  "communication/ic_message",
  "communication/ic_vpn_key",
  "content/ic_link",
  "content/ic_send",
  "content/ic_undo",
  "editor/ic_mode_edit",
  "file/ic_file_download",
  "hardware/ic_desktop_windows",
  "hardware/ic_desktop_windows_white",
  "hardware/ic_keyboard",
  "hardware/ic_keyboard_arrow_down",
  "hardware/ic_keyboard_arrow_right",
  "hardware/ic_keyboard_arrow_up",
  "hardware/ic_mouse",
  "image/ic_photo_camera",
  "image/ic_photo_library",
  "maps/ic_place",
  "navigation/ic_arrow_back",
  "navigation/ic_arrow_forward_white",
  "navigation/ic_check",
  "navigation/ic_chevron_left",
  "navigation/ic_chevron_left_white_36pt",
  "navigation/ic_chevron_right",
  "navigation/ic_close",
  "navigation/ic_close_white",
  "navigation/ic_fullscreen",
  "navigation/ic_fullscreen_exit",
  "navigation/ic_menu_white",
  "navigation/ic_more_vert",
  "navigation/ic_refresh",
  "navigation/ic_refresh_white",
  "toggle/ic_check_box_outline_blank_white",
  "toggle/ic_check_box_white",
  "toggle/ic_radio_button_checked_white",
  "toggle/ic_radio_button_unchecked_white",
]

# Define all the imagesets using the description from _image_sets variable.
# All imagesets are assumed to be universal and to include @1x, @2x and @3x
# version of the images.
foreach(_image_set, _image_sets) {
  _category = get_path_info(_image_set, "dir")
  _image_name = get_path_info(_image_set, "file")
  imageset(_image_name) {
    _imageset_dir = "src/$_category/ios/$_image_name.imageset"
    sources = [
      "$_imageset_dir/${_image_name}.png",
      "$_imageset_dir/${_image_name}_2x.png",
      "$_imageset_dir/${_image_name}_3x.png",
      "$_imageset_dir/Contents.json",
    ]
  }
}
