mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-31 13:19:05 +00:00
LibWeb/CSS: Add support for the display-p3
color space in color()
This color space is often used as a reference in WPT tests, having support for it makes us pass 15 new tests: - css/css-color/display-p3-001.html - css/css-color/display-p3-002.html - css/css-color/display-p3-003.html - css/css-color/display-p3-004.html - css/css-color/display-p3-005.html - css/css-color/display-p3-006.html - css/css-color/lab-008.html - css/css-color/lch-008.html - css/css-color/oklab-008.html - css/css-color/oklch-008.html - css/css-color/predefined-005.html - css/css-color/predefined-006.html - css/css-color/xyz-005.html - css/css-color/xyz-d50-005.html - css/css-color/xyz-d65-005.html
This commit is contained in:
parent
f949334a9a
commit
596a4e55dd
Notes:
github-actions[bot]
2024-11-16 09:30:55 +00:00
Author: https://github.com/LucasChollet
Commit: 596a4e55dd
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2374
17 changed files with 216 additions and 1 deletions
|
@ -17,6 +17,8 @@ CSSColorValue::ColorType color_type_from_string_view(StringView color_space)
|
|||
{
|
||||
if (color_space == "a98-rgb"sv)
|
||||
return CSSColorValue::ColorType::A98RGB;
|
||||
if (color_space == "display-p3"sv)
|
||||
return CSSColorValue::ColorType::DisplayP3;
|
||||
if (color_space == "srgb"sv)
|
||||
return CSSColorValue::ColorType::sRGB;
|
||||
if (color_space == "srgb-linear"sv)
|
||||
|
@ -70,6 +72,9 @@ Color CSSColor::to_color(Optional<Layout::NodeWithStyle const&>) const
|
|||
if (color_type() == ColorType::A98RGB)
|
||||
return Color::from_a98rgb(c1, c2, c3, alpha_val);
|
||||
|
||||
if (color_type() == ColorType::DisplayP3)
|
||||
return Color::from_display_p3(c1, c2, c3, alpha_val);
|
||||
|
||||
if (color_type() == ColorType::sRGB) {
|
||||
auto const to_u8 = [](float c) -> u8 { return round_to<u8>(clamp(255 * c, 0, 255)); };
|
||||
return Color(to_u8(c1), to_u8(c2), to_u8(c3), to_u8(alpha_val));
|
||||
|
|
|
@ -21,7 +21,7 @@ public:
|
|||
virtual Color to_color(Optional<Layout::NodeWithStyle const&>) const override;
|
||||
virtual String to_string() const override;
|
||||
|
||||
static constexpr Array s_supported_color_space = { "a98-rgb"sv, "srgb"sv, "srgb-linear"sv, "xyz"sv, "xyz-d50"sv, "xyz-d65"sv };
|
||||
static constexpr Array s_supported_color_space = { "a98-rgb"sv, "display-p3"sv, "srgb"sv, "srgb-linear"sv, "xyz"sv, "xyz-d50"sv, "xyz-d65"sv };
|
||||
|
||||
private:
|
||||
CSSColor(ColorType color_type, ValueComparingNonnullRefPtr<CSSStyleValue> c1, ValueComparingNonnullRefPtr<CSSStyleValue> c2, ValueComparingNonnullRefPtr<CSSStyleValue> c3, ValueComparingNonnullRefPtr<CSSStyleValue> alpha)
|
||||
|
|
|
@ -25,6 +25,7 @@ public:
|
|||
enum class ColorType {
|
||||
RGB, // This is used by CSSRGB for rgb(...) and rgba(...).
|
||||
A98RGB,
|
||||
DisplayP3,
|
||||
HSL,
|
||||
HWB,
|
||||
Lab,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue