Commit 9006090c authored by Thanh Nguyen's avatar Thanh Nguyen Committed by Commit Bot

Use vector icons for file launcher chips

1. Create a white circle background vector icon for launcher chip.
2. Use vector icon for file launcher chips instead of pngs.
3. Remove resources that are no longer required.

Bug: 1067326
Change-Id: I1a18e7c6c8458f84f50930ce47ac87dfcd94e1c8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2354373
Commit-Queue: Thanh Nguyen <thanhdng@chromium.org>
Reviewed-by: default avatarEvan Stade <estade@chromium.org>
Reviewed-by: default avatarJames Cook <jamescook@chromium.org>
Reviewed-by: default avatarTony Yeoman <tby@chromium.org>
Cr-Commit-Position: refs/heads/master@{#799464}
parent 9f56f8e6
......@@ -18,6 +18,7 @@ aggregate_vector_icons("app_list_vector_icons") {
"filetype_archive.icon",
"filetype_audio.icon",
"filetype_chart.icon",
"filetype_chip_background.icon",
"filetype_excel.icon",
"filetype_folder.icon",
"filetype_gdoc.icon",
......
// Copyright 2020 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.
CANVAS_DIMENSIONS, 20,
ROUND_RECT, 0, 0, 20, 20, 10
......@@ -20,6 +20,7 @@
#include "ui/gfx/color_palette.h"
#include "ui/gfx/image/image.h"
#include "ui/gfx/image/image_skia.h"
#include "ui/gfx/image/image_skia_operations.h"
#include "ui/gfx/paint_vector_icon.h"
namespace {
......@@ -33,6 +34,8 @@ constexpr SkColor kFiletypePptColor = SkColorSetRGB(255, 117, 55);
// Hex color: #796EEE
constexpr SkColor kFiletypeSitesColor = SkColorSetRGB(121, 110, 238);
constexpr SkColor kWhiteBackgroundColor = SkColorSetRGB(255, 255, 255);
constexpr int kIconDipSize = 20;
} // namespace
......@@ -180,7 +183,7 @@ IconType GetIconTypeFromString(const std::string& icon_type_string) {
return IconType::GENERIC;
}
gfx::ImageSkia GetVectorIconFromIconType(IconType icon) {
gfx::ImageSkia GetVectorIconFromIconType(IconType icon, bool is_chip_icon) {
// Changes to this map should be reflected in
// ui/file_manager/file_manager/common/js/file_type.js.
static const base::NoDestructor<std::map<IconType, gfx::IconDescription>>
......@@ -263,42 +266,16 @@ gfx::ImageSkia GetVectorIconFromIconType(IconType icon) {
const auto& id_it = icon_type_to_icon_description->find(icon);
DCHECK(id_it != icon_type_to_icon_description->end());
return gfx::CreateVectorIcon(id_it->second);
}
int GetChipResourceIdForIconType(IconType icon) {
static const base::NoDestructor<base::flat_map<IconType, int>>
icon_to_chip_resource_id({
{IconType::ARCHIVE, IDR_LAUNCHER_CHIP_ICON_ARCHIVE},
{IconType::AUDIO, IDR_LAUNCHER_CHIP_ICON_AUDIO},
{IconType::CHART, IDR_LAUNCHER_CHIP_ICON_CHART},
{IconType::DRIVE, IDR_LAUNCHER_CHIP_ICON_DRIVE},
{IconType::EXCEL, IDR_LAUNCHER_CHIP_ICON_EXCEL},
{IconType::FOLDER, IDR_LAUNCHER_CHIP_ICON_FOLDER},
{IconType::FOLDER_SHARED, IDR_LAUNCHER_CHIP_ICON_FOLDER_SHARED},
{IconType::GDOC, IDR_LAUNCHER_CHIP_ICON_GDOC},
{IconType::GDRAW, IDR_LAUNCHER_CHIP_ICON_GDRAW},
{IconType::GENERIC, IDR_LAUNCHER_CHIP_ICON_GENERIC},
{IconType::GFORM, IDR_LAUNCHER_CHIP_ICON_GFORM},
{IconType::GMAP, IDR_LAUNCHER_CHIP_ICON_GMAP},
{IconType::GSHEET, IDR_LAUNCHER_CHIP_ICON_GSHEET},
{IconType::GSITE, IDR_LAUNCHER_CHIP_ICON_GSITE},
{IconType::GSLIDE, IDR_LAUNCHER_CHIP_ICON_GSLIDE},
{IconType::GTABLE, IDR_LAUNCHER_CHIP_ICON_GTABLE},
{IconType::IMAGE, IDR_LAUNCHER_CHIP_ICON_IMAGE},
{IconType::LINUX, IDR_LAUNCHER_CHIP_ICON_LINUX},
{IconType::PDF, IDR_LAUNCHER_CHIP_ICON_PDF},
{IconType::PPT, IDR_LAUNCHER_CHIP_ICON_PPT},
{IconType::SCRIPT, IDR_LAUNCHER_CHIP_ICON_SCRIPT},
{IconType::SITES, IDR_LAUNCHER_CHIP_ICON_SITES},
{IconType::TINI, IDR_LAUNCHER_CHIP_ICON_TINI},
{IconType::VIDEO, IDR_LAUNCHER_CHIP_ICON_VIDEO},
{IconType::WORD, IDR_LAUNCHER_CHIP_ICON_WORD},
});
const auto& id_it = icon_to_chip_resource_id->find(icon);
DCHECK(id_it != icon_to_chip_resource_id->end());
return id_it->second;
// If it is a launcher chip icon, we need to draw 2 icons: a white circle
// background icon (kFiletypeChipBackgroundIcon) and the icon of the file.
if (is_chip_icon) {
return gfx::ImageSkiaOperations::CreateSuperimposedImage(
gfx::CreateVectorIcon(ash::kFiletypeChipBackgroundIcon, kIconDipSize,
kWhiteBackgroundColor),
gfx::CreateVectorIcon(id_it->second));
}
return gfx::CreateVectorIcon(id_it->second);
}
} // namespace internal
......@@ -309,9 +286,8 @@ gfx::ImageSkia GetIconForPath(const base::FilePath& filepath) {
}
gfx::ImageSkia GetChipIconForPath(const base::FilePath& filepath) {
return *ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
internal::GetChipResourceIdForIconType(
internal::GetIconTypeForPath(filepath)));
return internal::GetVectorIconFromIconType(
internal::GetIconTypeForPath(filepath), /*is_chip_icon=*/true);
}
gfx::ImageSkia GetIconFromType(const std::string& icon_type) {
......
......@@ -42,7 +42,8 @@ enum class IconType {
IconType GetIconTypeFromString(const std::string& icon_type_string);
IconType GetIconTypeForPath(const base::FilePath& filepath);
gfx::ImageSkia GetVectorIconFromIconType(IconType icon);
gfx::ImageSkia GetVectorIconFromIconType(IconType icon,
bool is_chip_icon = false);
int GetChipResourceIdForIconType(IconType icon);
} // namespace internal
......
......@@ -36,22 +36,4 @@ TEST(AppListFileIconUtilTest, GetIconTypeForPath) {
}
}
TEST(AppListFileIconUtilTest, GetChipResourceIdForIconType) {
const std::vector<std::pair<internal::IconType, int>>
icon_type_to_resource_id = {
{internal::IconType::PDF, IDR_LAUNCHER_CHIP_ICON_PDF},
{internal::IconType::ARCHIVE, IDR_LAUNCHER_CHIP_ICON_ARCHIVE},
{internal::IconType::IMAGE, IDR_LAUNCHER_CHIP_ICON_IMAGE},
{internal::IconType::GSLIDE, IDR_LAUNCHER_CHIP_ICON_GSLIDE},
{internal::IconType::GENERIC, IDR_LAUNCHER_CHIP_ICON_GENERIC},
{internal::IconType::FOLDER, IDR_LAUNCHER_CHIP_ICON_FOLDER},
{internal::IconType::VIDEO, IDR_LAUNCHER_CHIP_ICON_VIDEO},
};
for (const auto& pair : icon_type_to_resource_id) {
EXPECT_EQ(::app_list::internal::GetChipResourceIdForIconType(pair.first),
pair.second);
}
}
} // namespace app_list
......@@ -109,35 +109,6 @@
<!-- Assistant images. -->
<structure type="chrome_html" name="IDR_ASSISTANT_VOICE_MATCH_ANIMATION" file="vector/voice_laptop.json" compress="gzip" />
<structure type="chrome_html" name="IDR_ASSISTANT_VOICE_MATCH_ALREADY_SETUP_ANIMATION" file="vector/connecting_loop.json" compress="gzip" />
<!-- Launcher chip icons. These correspond to
/ui/file_manager/file_manager/foreground/images/launcher_filetypes/
but are circular rather than square. -->
<structure type="chrome_scaled_image" name="IDR_LAUNCHER_CHIP_ICON_ARCHIVE" file="launcher_chip_icons/filetype_archive.png" />
<structure type="chrome_scaled_image" name="IDR_LAUNCHER_CHIP_ICON_AUDIO" file="launcher_chip_icons/filetype_audio.png" />
<structure type="chrome_scaled_image" name="IDR_LAUNCHER_CHIP_ICON_CHART" file="launcher_chip_icons/filetype_chart.png" />
<structure type="chrome_scaled_image" name="IDR_LAUNCHER_CHIP_ICON_EXCEL" file="launcher_chip_icons/filetype_excel.png" />
<structure type="chrome_scaled_image" name="IDR_LAUNCHER_CHIP_ICON_FOLDER_SHARED" file="launcher_chip_icons/filetype_folder_shared.png" />
<structure type="chrome_scaled_image" name="IDR_LAUNCHER_CHIP_ICON_FOLDER" file="launcher_chip_icons/filetype_folder.png" />
<structure type="chrome_scaled_image" name="IDR_LAUNCHER_CHIP_ICON_GDOC" file="launcher_chip_icons/filetype_gdoc.png" />
<structure type="chrome_scaled_image" name="IDR_LAUNCHER_CHIP_ICON_GDRAW" file="launcher_chip_icons/filetype_gdraw.png" />
<structure type="chrome_scaled_image" name="IDR_LAUNCHER_CHIP_ICON_GENERIC" file="launcher_chip_icons/filetype_generic.png" />
<structure type="chrome_scaled_image" name="IDR_LAUNCHER_CHIP_ICON_GFORM" file="launcher_chip_icons/filetype_gform.png" />
<structure type="chrome_scaled_image" name="IDR_LAUNCHER_CHIP_ICON_GMAP" file="launcher_chip_icons/filetype_gmap.png" />
<structure type="chrome_scaled_image" name="IDR_LAUNCHER_CHIP_ICON_GSHEET" file="launcher_chip_icons/filetype_gsheet.png" />
<structure type="chrome_scaled_image" name="IDR_LAUNCHER_CHIP_ICON_GSITE" file="launcher_chip_icons/filetype_gsite.png" />
<structure type="chrome_scaled_image" name="IDR_LAUNCHER_CHIP_ICON_GSLIDE" file="launcher_chip_icons/filetype_gslide.png" />
<structure type="chrome_scaled_image" name="IDR_LAUNCHER_CHIP_ICON_GTABLE" file="launcher_chip_icons/filetype_gtable.png" />
<structure type="chrome_scaled_image" name="IDR_LAUNCHER_CHIP_ICON_IMAGE" file="launcher_chip_icons/filetype_image.png" />
<structure type="chrome_scaled_image" name="IDR_LAUNCHER_CHIP_ICON_LINUX" file="launcher_chip_icons/filetype_linux.png" />
<structure type="chrome_scaled_image" name="IDR_LAUNCHER_CHIP_ICON_PDF" file="launcher_chip_icons/filetype_pdf.png" />
<structure type="chrome_scaled_image" name="IDR_LAUNCHER_CHIP_ICON_PPT" file="launcher_chip_icons/filetype_ppt.png" />
<structure type="chrome_scaled_image" name="IDR_LAUNCHER_CHIP_ICON_SCRIPT" file="launcher_chip_icons/filetype_script.png" />
<structure type="chrome_scaled_image" name="IDR_LAUNCHER_CHIP_ICON_SITES" file="launcher_chip_icons/filetype_sites.png" />
<structure type="chrome_scaled_image" name="IDR_LAUNCHER_CHIP_ICON_DRIVE" file="launcher_chip_icons/filetype_team_drive.png" />
<structure type="chrome_scaled_image" name="IDR_LAUNCHER_CHIP_ICON_TINI" file="launcher_chip_icons/filetype_tini.png" />
<structure type="chrome_scaled_image" name="IDR_LAUNCHER_CHIP_ICON_VIDEO" file="launcher_chip_icons/filetype_video.png" />
<structure type="chrome_scaled_image" name="IDR_LAUNCHER_CHIP_ICON_WORD" file="launcher_chip_icons/filetype_word.png" />
</structures>
</release>
</grit>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment