blob: 323df63fd73f43ae96c6c8de4411f936fe673641 [file] [log] [blame]
// Copyright 2021 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.
#include "ui/native_theme/native_theme_utils.h"
#include "base/containers/fixed_flat_map.h"
#include "ui/color/color_id.h"
#include "ui/native_theme/native_theme_color_id.h"
namespace ui {
base::StringPiece NativeThemeColorIdName(NativeTheme::ColorId color_id) {
static constexpr const auto color_id_names =
base::MakeFixedFlatMap<NativeTheme::ColorId, const char*>({
#define OP(enum_name) {NativeTheme::ColorId::enum_name, #enum_name}
NATIVE_THEME_COLOR_IDS
#undef OP
});
auto* it = color_id_names.find(color_id);
DCHECK_NE(color_id_names.cend(), it);
return it->second;
}
base::StringPiece NativeThemeColorSchemeName(
NativeTheme::ColorScheme color_scheme) {
switch (color_scheme) {
case NativeTheme::ColorScheme::kDefault:
return "kDefault";
case NativeTheme::ColorScheme::kLight:
return "kLight";
case NativeTheme::ColorScheme::kDark:
return "kDark";
case NativeTheme::ColorScheme::kPlatformHighContrast:
return "kPlatformHighContrast";
default:
NOTREACHED() << "Invalid NativeTheme::ColorScheme";
return "<invalid>";
}
}
// clang-format off
absl::optional<ColorId>
NativeThemeColorIdToColorId(NativeTheme::ColorId native_theme_color_id) {
using NTCID = NativeTheme::ColorId;
static constexpr const auto map =
base::MakeFixedFlatMap<NativeTheme::ColorId, ColorId>({
{NTCID::kColorId_DefaultIconColor, kColorIcon},
{NTCID::kColorId_FocusedBorderColor, kColorFocusableBorderFocused},
{NTCID::kColorId_FocusedMenuItemBackgroundColor,
kColorMenuItemBackgroundSelected},
{NTCID::kColorId_MenuBackgroundColor, kColorMenuBackground},
{NTCID::kColorId_MenuIconColor, kColorMenuIcon},
{NTCID::kColorId_MenuSeparatorColor, kColorMenuSeparator},
{NTCID::kColorId_OverlayScrollbarThumbFill, kColorOverlayScrollbarFill},
{NTCID::kColorId_OverlayScrollbarThumbHoveredFill,
kColorOverlayScrollbarFillHovered},
{NTCID::kColorId_OverlayScrollbarThumbHoveredStroke,
kColorOverlayScrollbarStrokeHovered},
{NTCID::kColorId_OverlayScrollbarThumbStroke,
kColorOverlayScrollbarStroke},
{NTCID::kColorId_ProminentButtonColor,
kColorButtonBackgroundProminent},
{NTCID::kColorId_TextOnProminentButtonColor,
kColorButtonForegroundProminent},
{NTCID::kColorId_ThrobberSpinningColor, kColorThrobber},
{NTCID::kColorId_ThrobberWaitingColor, kColorThrobberPreconnect},
{NTCID::kColorId_WindowBackground, kColorWindowBackground},
});
auto* color_it = map.find(native_theme_color_id);
if (color_it != map.cend()) {
return color_it->second;
}
return absl::nullopt;
}
// clang-format on
} // namespace ui