mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-01-23 17:52:26 -05:00
LibWeb: Make CSSColorValue resolvers return a double
Without this change the math in `CSSHWB::to_color()` is lacking some precision to generate the correct value to hand to `Color::from_hsv()`. More precisely, when converting `hwb(120 20 30)`, the HSV's value would be calculated as `1 - .3`. However, it turns out that `1 - .3f != .7f` and `1 - .3f` gives bad results down the road in `Color::from_hsv()`. This example actually only requires `resolve_with_reference_value()` to return a double. I changed the two others for symmetry.
This commit is contained in:
parent
248e4bb517
commit
d1120e1809
Notes:
github-actions[bot]
2024-11-21 12:00:48 +00:00
Author: https://github.com/LucasChollet Commit: https://github.com/LadybirdBrowser/ladybird/commit/d1120e1809d Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2390 Reviewed-by: https://github.com/gmta
2 changed files with 7 additions and 7 deletions
|
@ -45,7 +45,7 @@ ValueComparingNonnullRefPtr<CSSColorValue> CSSColorValue::create_from_color(Colo
|
|||
return make_rgb_color(color);
|
||||
}
|
||||
|
||||
Optional<float> CSSColorValue::resolve_hue(CSSStyleValue const& style_value)
|
||||
Optional<double> CSSColorValue::resolve_hue(CSSStyleValue const& style_value)
|
||||
{
|
||||
// <number> | <angle> | none
|
||||
auto normalized = [](double number) {
|
||||
|
@ -67,11 +67,11 @@ Optional<float> CSSColorValue::resolve_hue(CSSStyleValue const& style_value)
|
|||
return {};
|
||||
}
|
||||
|
||||
Optional<float> CSSColorValue::resolve_with_reference_value(CSSStyleValue const& style_value, float one_hundred_percent_value)
|
||||
Optional<double> CSSColorValue::resolve_with_reference_value(CSSStyleValue const& style_value, float one_hundred_percent_value)
|
||||
{
|
||||
// <percentage> | <number> | none
|
||||
auto normalize_percentage = [one_hundred_percent_value](Percentage const& percentage) {
|
||||
return static_cast<float>(percentage.as_fraction()) * one_hundred_percent_value;
|
||||
return percentage.as_fraction() * one_hundred_percent_value;
|
||||
};
|
||||
|
||||
if (style_value.is_percentage())
|
||||
|
@ -94,7 +94,7 @@ Optional<float> CSSColorValue::resolve_with_reference_value(CSSStyleValue const&
|
|||
return {};
|
||||
}
|
||||
|
||||
Optional<float> CSSColorValue::resolve_alpha(CSSStyleValue const& style_value)
|
||||
Optional<double> CSSColorValue::resolve_alpha(CSSStyleValue const& style_value)
|
||||
{
|
||||
// <number> | <percentage> | none
|
||||
auto normalized = [](double number) {
|
||||
|
|
|
@ -48,9 +48,9 @@ protected:
|
|||
{
|
||||
}
|
||||
|
||||
static Optional<float> resolve_hue(CSSStyleValue const&);
|
||||
static Optional<float> resolve_with_reference_value(CSSStyleValue const&, float one_hundred_percent_value);
|
||||
static Optional<float> resolve_alpha(CSSStyleValue const&);
|
||||
static Optional<double> resolve_hue(CSSStyleValue const&);
|
||||
static Optional<double> resolve_with_reference_value(CSSStyleValue const&, float one_hundred_percent_value);
|
||||
static Optional<double> resolve_alpha(CSSStyleValue const&);
|
||||
|
||||
private:
|
||||
ColorType m_color_type;
|
||||
|
|
Loading…
Add table
Reference in a new issue