mirror of
https://github.com/electron/electron.git
synced 2026-01-08 07:04:01 -05:00
* chore: bump chromium in DEPS to 141.0.7381.3 * chore: update patches * chore: bump chromium in DEPS to 141.0.7382.0 * chore: update patches * chore: bump chromium in DEPS to 141.0.7384.0 * chore: bump chromium in DEPS to 141.0.7386.0 * [Extensions] Move devtools_page and chrome_url_overrides handlers Refs https://chromium-review.googlesource.com/c/chromium/src/+/6862700 * Reland "[api] Advance deprecation of GetIsolate" Refs https://chromium-review.googlesource.com/c/v8/v8/+/6875273 * Move "system integrated UI" concept out of NativeTheme. Refs https://chromium-review.googlesource.com/c/chromium/src/+/6867375 * chore: update patches * Reland "[PermissionOptions] Return PermissionResult in callback for requests" Refs https://chromium-review.googlesource.com/c/chromium/src/+/6851838 * Reland "[exit-time-destructors] Enable by default" Refs https://chromium-review.googlesource.com/c/chromium/src/+/6859042 * chore: update patches * [FSA] Revoke Read access after removing file via FileSystemAccess API Refs https://chromium-review.googlesource.com/c/chromium/src/+/6677249 * chore: IWYU * [DevToolsUIBindings] Accept an object for `dispatchHttpRequest` params Refs https://chromium-review.googlesource.com/c/chromium/src/+/6877528 * chore: IWYU * Pass navigation UI parameters on EnterFullscreen in EAM Refs https://chromium-review.googlesource.com/c/chromium/src/+/6874923 * chore: rm band-aid_over_an_issue_with_using_deprecated_nsopenpanel_api.patch * Remove unused PreHandleMouseEvent Refs https://chromium-review.googlesource.com/c/chromium/src/+/6880411 * 6878583: siso: update to version 1.4.1 https://chromium-review.googlesource.com/c/chromium/src/+/6878583 * Fold native_theme_browser into native_theme. https://chromium-review.googlesource.com/c/chromium/src/+/6882627 * fixup: Reland "[exit-time-destructors] Enable by default https://chromium-review.googlesource.com/c/chromium/src/+/6859042 * chore: update filenames.libcxx.gni * chore: IWYU * fixup: chore: IWYU * fixup: Reland "[exit-time-destructors] Enable by default * fixup: Reland "[exit-time-destructors] Enable by default * Remove common_theme.*; place its method in NativeTheme instead. https://chromium-review.googlesource.com/c/chromium/src/+/6886029 * fixup: Reland "[exit-time-destructors] Enable by default * Better track when WebPreferences need updates for color-related changes. Refs https://chromium-review.googlesource.com/c/chromium/src/+/6886797 * chore: bump chromium in DEPS to 141.0.7390.7 * 6904664: Reland "Make BrowserContext::GetPath() const" https://chromium-review.googlesource.com/c/chromium/src/+/6904664 * Restore read access after certain file modification operations https://chromium-review.googlesource.com/c/chromium/src/+/6861041 * fixup: Move "system integrated UI" concept out of NativeTheme. * fixup: Reland "[exit-time-destructors] Enable by default * chore: update patches * 6906096: Remove GetSysSkColor(). https://chromium-review.googlesource.com/c/chromium/src/+/6906096 * Inline implementation of SysColorChangeListener into the lone user. https://chromium-review.googlesource.com/c/chromium/src/+/6905083 Also 6906096: Remove GetSysSkColor(). | https://chromium-review.googlesource.com/c/chromium/src/+/6906096 * fixup: 6906096: Remove GetSysSkColor() --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: deepak1556 <hop2deep@gmail.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
94 lines
2.4 KiB
C++
94 lines
2.4 KiB
C++
// Copyright (c) 2016 GitHub, Inc.
|
|
// Use of this source code is governed by the MIT license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "shell/common/color_util.h"
|
|
|
|
#include <algorithm>
|
|
#include <cmath>
|
|
|
|
#include "content/public/common/color_parser.h"
|
|
#include "third_party/abseil-cpp/absl/strings/str_format.h"
|
|
|
|
#if BUILDFLAG(IS_WIN)
|
|
#include <dwmapi.h>
|
|
|
|
#include "base/win/registry.h"
|
|
#include "skia/ext/skia_utils_win.h"
|
|
#endif
|
|
|
|
namespace {
|
|
|
|
bool IsHexFormatWithAlpha(const std::string& str) {
|
|
// Must be either #ARGB or #AARRGGBB.
|
|
bool is_hex_length = str.length() == 5 || str.length() == 9;
|
|
if (str[0] != '#' || !is_hex_length)
|
|
return false;
|
|
|
|
if (!std::all_of(str.begin() + 1, str.end(), ::isxdigit))
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
} // namespace
|
|
|
|
namespace electron {
|
|
|
|
std::optional<SkColor> ParseCSSColor(const std::string& color_string) {
|
|
// ParseCssColorString expects RGBA and we historically use ARGB
|
|
// so we need to convert before passing to ParseCssColorString.
|
|
std::string converted_color_str;
|
|
if (IsHexFormatWithAlpha(color_string)) {
|
|
std::string temp = color_string;
|
|
int len = color_string.length() == 5 ? 1 : 2;
|
|
converted_color_str = temp.erase(1, len) + color_string.substr(1, len);
|
|
} else {
|
|
converted_color_str = color_string;
|
|
}
|
|
|
|
SkColor color;
|
|
if (!content::ParseCssColorString(converted_color_str, &color))
|
|
return std::nullopt;
|
|
|
|
return color;
|
|
}
|
|
|
|
std::string ToRGBHex(SkColor color) {
|
|
return absl::StrFormat("#%02X%02X%02X", SkColorGetR(color),
|
|
SkColorGetG(color), SkColorGetB(color));
|
|
}
|
|
|
|
std::string ToRGBAHex(SkColor color, bool include_hash) {
|
|
std::string color_str = absl::StrFormat(
|
|
"%02X%02X%02X%02X", SkColorGetR(color), SkColorGetG(color),
|
|
SkColorGetB(color), SkColorGetA(color));
|
|
if (include_hash) {
|
|
return "#" + color_str;
|
|
}
|
|
return color_str;
|
|
}
|
|
|
|
#if BUILDFLAG(IS_WIN)
|
|
std::optional<DWORD> GetSystemAccentColor() {
|
|
base::win::RegKey key;
|
|
if (key.Open(HKEY_CURRENT_USER, L"SOFTWARE\\Microsoft\\Windows\\DWM",
|
|
KEY_READ) != ERROR_SUCCESS) {
|
|
return std::nullopt;
|
|
}
|
|
|
|
DWORD accent_color = 0;
|
|
if (key.ReadValueDW(L"AccentColor", &accent_color) != ERROR_SUCCESS) {
|
|
return std::nullopt;
|
|
}
|
|
|
|
return accent_color;
|
|
}
|
|
|
|
SkColor GetSysSkColor(int which) {
|
|
return skia::COLORREFToSkColor(GetSysColor(which));
|
|
}
|
|
#endif
|
|
|
|
} // namespace electron
|