Coverage Report

Created: 2026-09-14 07:15

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/serenity/Userland/Libraries/LibWeb/CSS/Frequency.cpp
Line
Count
Source
1
/*
2
 * Copyright (c) 2022-2023, Sam Atkins <atkinssj@serenityos.org>
3
 *
4
 * SPDX-License-Identifier: BSD-2-Clause
5
 */
6
7
#include "Frequency.h"
8
#include <LibWeb/CSS/Percentage.h>
9
#include <LibWeb/CSS/StyleValues/CSSMathValue.h>
10
11
namespace Web::CSS {
12
13
Frequency::Frequency(double value, Type type)
14
0
    : m_type(type)
15
0
    , m_value(value)
16
0
{
17
0
}
18
19
Frequency Frequency::make_hertz(double value)
20
0
{
21
0
    return { value, Type::Hz };
22
0
}
23
24
Frequency Frequency::percentage_of(Percentage const& percentage) const
25
0
{
26
0
    return Frequency { percentage.as_fraction() * m_value, m_type };
27
0
}
28
29
String Frequency::to_string() const
30
0
{
31
0
    return MUST(String::formatted("{}hz", to_hertz()));
32
0
}
33
34
double Frequency::to_hertz() const
35
0
{
36
0
    switch (m_type) {
37
0
    case Type::Hz:
38
0
        return m_value;
39
0
    case Type::kHz:
40
0
        return m_value * 1000;
41
0
    }
42
0
    VERIFY_NOT_REACHED();
43
0
}
44
45
StringView Frequency::unit_name() const
46
0
{
47
0
    switch (m_type) {
48
0
    case Type::Hz:
49
0
        return "hz"sv;
50
0
    case Type::kHz:
51
0
        return "khz"sv;
52
0
    }
53
0
    VERIFY_NOT_REACHED();
54
0
}
55
56
Optional<Frequency::Type> Frequency::unit_from_name(StringView name)
57
0
{
58
0
    if (name.equals_ignoring_ascii_case("hz"sv)) {
59
0
        return Type::Hz;
60
0
    } else if (name.equals_ignoring_ascii_case("khz"sv)) {
61
0
        return Type::kHz;
62
0
    }
63
0
    return {};
64
0
}
65
66
Frequency Frequency::resolve_calculated(NonnullRefPtr<CSSMathValue> const& calculated, Layout::Node const&, Frequency const& reference_value)
67
0
{
68
0
    return calculated->resolve_frequency_percentage(reference_value).value();
69
0
}
70
71
}