2023-08-23 17:17:15 +01:00
|
|
|
/*
|
|
|
|
|
* Copyright (c) 2023, Sam Atkins <atkinssj@serenityos.org>
|
|
|
|
|
*
|
|
|
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#include <LibWeb/CSS/SystemColor.h>
|
|
|
|
|
|
|
|
|
|
namespace Web::CSS::SystemColor {
|
|
|
|
|
|
2025-01-02 12:59:09 +11:00
|
|
|
Color accent_color(PreferredColorScheme)
|
2023-08-23 17:17:15 +01:00
|
|
|
{
|
|
|
|
|
return Color(61, 174, 233);
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-02 12:59:09 +11:00
|
|
|
Color accent_color_text(PreferredColorScheme)
|
2023-08-23 17:17:15 +01:00
|
|
|
{
|
2026-01-26 20:24:19 +04:00
|
|
|
return Color(0, 0, 0);
|
2023-08-23 17:17:15 +01:00
|
|
|
}
|
|
|
|
|
|
2025-01-02 12:59:09 +11:00
|
|
|
Color active_text(PreferredColorScheme scheme)
|
2023-08-23 17:17:15 +01:00
|
|
|
{
|
2025-01-02 12:59:09 +11:00
|
|
|
if (scheme == PreferredColorScheme::Dark) {
|
|
|
|
|
return Color(213, 97, 82);
|
|
|
|
|
}
|
2023-08-23 17:17:15 +01:00
|
|
|
return Color(255, 0, 0);
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-02 12:59:09 +11:00
|
|
|
Color button_border(PreferredColorScheme scheme)
|
2023-08-23 17:17:15 +01:00
|
|
|
{
|
2025-01-02 12:59:09 +11:00
|
|
|
if (scheme == PreferredColorScheme::Dark) {
|
|
|
|
|
return Color(72, 72, 72);
|
|
|
|
|
}
|
2023-08-23 17:17:15 +01:00
|
|
|
return Color(128, 128, 128);
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-02 12:59:09 +11:00
|
|
|
Color button_face(PreferredColorScheme scheme)
|
2023-08-23 17:17:15 +01:00
|
|
|
{
|
2025-01-02 12:59:09 +11:00
|
|
|
if (scheme == PreferredColorScheme::Dark) {
|
|
|
|
|
return Color(32, 29, 25);
|
|
|
|
|
}
|
2023-08-23 17:17:15 +01:00
|
|
|
return Color(212, 208, 200);
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-02 12:59:09 +11:00
|
|
|
Color button_text(PreferredColorScheme scheme)
|
2023-08-23 17:17:15 +01:00
|
|
|
{
|
2025-01-02 12:59:09 +11:00
|
|
|
if (scheme == PreferredColorScheme::Dark) {
|
|
|
|
|
return Color(235, 235, 235);
|
|
|
|
|
}
|
2023-08-23 17:17:15 +01:00
|
|
|
return Color(0, 0, 0);
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-02 12:59:09 +11:00
|
|
|
Color canvas(PreferredColorScheme scheme)
|
2023-08-23 17:17:15 +01:00
|
|
|
{
|
2025-01-02 12:59:09 +11:00
|
|
|
if (scheme == PreferredColorScheme::Dark) {
|
|
|
|
|
return Color(20, 20, 20);
|
|
|
|
|
}
|
2023-08-23 17:17:15 +01:00
|
|
|
return Color(255, 255, 255);
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-02 12:59:09 +11:00
|
|
|
Color canvas_text(PreferredColorScheme scheme)
|
2023-08-23 17:17:15 +01:00
|
|
|
{
|
2025-01-02 12:59:09 +11:00
|
|
|
if (scheme == PreferredColorScheme::Dark) {
|
|
|
|
|
return Color(235, 235, 235);
|
|
|
|
|
}
|
2023-08-23 17:17:15 +01:00
|
|
|
return Color(0, 0, 0);
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-02 12:59:09 +11:00
|
|
|
Color field(PreferredColorScheme scheme)
|
2023-08-23 17:17:15 +01:00
|
|
|
{
|
2025-01-02 12:59:09 +11:00
|
|
|
if (scheme == PreferredColorScheme::Dark) {
|
|
|
|
|
return Color(32, 29, 25);
|
|
|
|
|
}
|
2023-08-23 17:17:15 +01:00
|
|
|
return Color(255, 255, 255);
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-02 12:59:09 +11:00
|
|
|
Color field_text(PreferredColorScheme scheme)
|
2023-08-23 17:17:15 +01:00
|
|
|
{
|
2025-01-02 12:59:09 +11:00
|
|
|
if (scheme == PreferredColorScheme::Dark) {
|
|
|
|
|
return Color(235, 235, 235);
|
|
|
|
|
}
|
2023-08-23 17:17:15 +01:00
|
|
|
return Color(0, 0, 0);
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-02 12:59:09 +11:00
|
|
|
Color gray_text(PreferredColorScheme)
|
2023-08-23 17:17:15 +01:00
|
|
|
{
|
|
|
|
|
return Color(128, 128, 128);
|
|
|
|
|
}
|
|
|
|
|
|
2026-05-29 11:21:04 +02:00
|
|
|
Color transform_selection_background_color(Color color)
|
|
|
|
|
{
|
|
|
|
|
if (color.alpha() < 255)
|
|
|
|
|
return color;
|
|
|
|
|
|
|
|
|
|
constexpr int start_alpha = 153; // 60%
|
|
|
|
|
constexpr int end_alpha = 204; // 80%
|
|
|
|
|
constexpr int alpha_increment = 17;
|
|
|
|
|
|
|
|
|
|
auto blend_component = [](u8 component, int alpha) {
|
|
|
|
|
auto white_blend = 255 - alpha;
|
|
|
|
|
return (static_cast<int>(component) - white_blend) * 255 / alpha;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Color result;
|
|
|
|
|
for (int alpha = start_alpha; alpha <= end_alpha; alpha += alpha_increment) {
|
|
|
|
|
auto red = blend_component(color.red(), alpha);
|
|
|
|
|
auto green = blend_component(color.green(), alpha);
|
|
|
|
|
auto blue = blend_component(color.blue(), alpha);
|
|
|
|
|
|
|
|
|
|
result = Color(
|
|
|
|
|
static_cast<u8>(clamp(red, 0, 255)),
|
|
|
|
|
static_cast<u8>(clamp(green, 0, 255)),
|
|
|
|
|
static_cast<u8>(clamp(blue, 0, 255)),
|
|
|
|
|
static_cast<u8>(alpha));
|
|
|
|
|
|
|
|
|
|
if (red >= 0 && green >= 0 && blue >= 0)
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-02 12:59:09 +11:00
|
|
|
Color highlight(PreferredColorScheme)
|
2023-08-23 17:17:15 +01:00
|
|
|
{
|
2026-01-29 10:23:29 +01:00
|
|
|
return Color(61, 174, 233, 128);
|
2023-08-23 17:17:15 +01:00
|
|
|
}
|
|
|
|
|
|
2025-01-02 12:59:09 +11:00
|
|
|
Color highlight_text(PreferredColorScheme scheme)
|
2023-08-23 17:17:15 +01:00
|
|
|
{
|
2025-01-02 12:59:09 +11:00
|
|
|
if (scheme == PreferredColorScheme::Dark) {
|
|
|
|
|
return Color(20, 20, 20);
|
|
|
|
|
}
|
2023-08-23 17:17:15 +01:00
|
|
|
return Color(255, 255, 255);
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-02 12:59:09 +11:00
|
|
|
Color link_text(PreferredColorScheme scheme)
|
2023-08-23 17:17:15 +01:00
|
|
|
{
|
2025-01-02 12:59:09 +11:00
|
|
|
if (scheme == PreferredColorScheme::Dark) {
|
|
|
|
|
return Color(100, 149, 237);
|
|
|
|
|
}
|
2023-08-23 17:17:15 +01:00
|
|
|
return Color(0, 0, 238);
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-02 12:59:09 +11:00
|
|
|
Color mark(PreferredColorScheme)
|
2023-08-23 17:17:15 +01:00
|
|
|
{
|
|
|
|
|
return Color(255, 255, 0);
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-02 12:59:09 +11:00
|
|
|
Color mark_text(PreferredColorScheme)
|
2023-08-23 17:17:15 +01:00
|
|
|
{
|
|
|
|
|
return Color(0, 0, 0);
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-02 12:59:09 +11:00
|
|
|
Color selected_item(PreferredColorScheme)
|
2023-08-23 17:17:15 +01:00
|
|
|
{
|
|
|
|
|
return Color(61, 174, 233);
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-02 12:59:09 +11:00
|
|
|
Color selected_item_text(PreferredColorScheme scheme)
|
2023-08-23 17:17:15 +01:00
|
|
|
{
|
2025-01-02 12:59:09 +11:00
|
|
|
if (scheme == PreferredColorScheme::Dark) {
|
|
|
|
|
return Color(20, 20, 20);
|
|
|
|
|
}
|
2023-08-23 17:17:15 +01:00
|
|
|
return Color(255, 255, 255);
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-02 12:59:09 +11:00
|
|
|
Color visited_text(PreferredColorScheme scheme)
|
2023-08-23 17:17:15 +01:00
|
|
|
{
|
2025-01-02 12:59:09 +11:00
|
|
|
if (scheme == PreferredColorScheme::Dark) {
|
|
|
|
|
return Color(156, 113, 212);
|
|
|
|
|
}
|
2023-08-23 17:17:15 +01:00
|
|
|
return Color(85, 26, 139);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|