Skip to content

Commit f77e0a0

Browse files
committed
Add PlatformDynamicRangeLimit::ValueType to abstract the value&storage type
https://bugs.webkit.org/show_bug.cgi?id=291621 rdar://149364934 Reviewed by Mike Wyrzykowski. Use PlatformDynamicRangeLimit::ValueType instead of naked float. This will make future changes simpler and clearer. Exception: The private 3-float constructor still takes floats, because that won't change even if/when ValueType changes. * Source/WebCore/platform/graphics/PlatformDynamicRangeLimit.cpp: (WebCore::PlatformDynamicRangeLimit::normalizedAverage): * Source/WebCore/platform/graphics/PlatformDynamicRangeLimit.h: (WebCore::PlatformDynamicRangeLimit::value const): (WebCore::PlatformDynamicRangeLimit::PlatformDynamicRangeLimit): * Tools/TestWebKitAPI/Tests/WebCore/PlatformDynamicRangeLimitTests.cpp: Canonical link: https://commits.webkit.org/293945@main
1 parent f6b9a84 commit f77e0a0

File tree

3 files changed

+12
-8
lines changed

3 files changed

+12
-8
lines changed

Source/WebCore/platform/graphics/PlatformDynamicRangeLimit.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030

3131
namespace WebCore {
3232

33-
float PlatformDynamicRangeLimit::normalizedAverage(float standardPercent, float constrainedHighPercent, float noLimitPercent)
33+
PlatformDynamicRangeLimit::ValueType PlatformDynamicRangeLimit::normalizedAverage(float standardPercent, float constrainedHighPercent, float noLimitPercent)
3434
{
3535
if (!std::isfinite(standardPercent) || standardPercent < 0 || standardPercent > 100 || !std::isfinite(constrainedHighPercent) || constrainedHighPercent < 0 || constrainedHighPercent > 100 || !std::isfinite(noLimitPercent) || noLimitPercent < 0 || noLimitPercent > 100) {
3636
ASSERT(std::isfinite(standardPercent));

Source/WebCore/platform/graphics/PlatformDynamicRangeLimit.h

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ struct DynamicRangeLimit;
4040

4141
class PlatformDynamicRangeLimit {
4242
public:
43+
using ValueType = float;
44+
4345
static constexpr PlatformDynamicRangeLimit standard() { return PlatformDynamicRangeLimit(standardValue); }
4446
static constexpr PlatformDynamicRangeLimit constrainedHigh() { return PlatformDynamicRangeLimit(constrainedHighValue); }
4547
static constexpr PlatformDynamicRangeLimit noLimit() { return PlatformDynamicRangeLimit(noLimitValue); }
@@ -53,26 +55,26 @@ class PlatformDynamicRangeLimit {
5355
// `dynamic-range-limit` mapped to PlatformDynamicRangeLimit.value():
5456
// ["standard", "constrainedHigh"] -> [standard().value(), constrainedHigh().value()],
5557
// ["constrainedHigh", "noLimit"] -> [constrainedHigh().value(), noLimit().value()]
56-
constexpr float value() const { return m_value; }
58+
constexpr ValueType value() const { return m_value; }
5759

5860
constexpr auto operator<=>(const PlatformDynamicRangeLimit&) const = default;
5961

6062
private:
6163
friend struct IPC::ArgumentCoder<WebCore::PlatformDynamicRangeLimit, void>;
6264
friend Style::DynamicRangeLimit;
6365

64-
constexpr PlatformDynamicRangeLimit(float value) : m_value(std::clamp(value, 0.0f, 1.0f)) { }
66+
constexpr PlatformDynamicRangeLimit(ValueType value) : m_value(std::clamp(value, 0.0f, 1.0f)) { }
6567

6668
PlatformDynamicRangeLimit(float standardPercent, float constrainedHighPercent, float noLimitPercent)
6769
: m_value(normalizedAverage(standardPercent, constrainedHighPercent, noLimitPercent)) { }
6870

69-
static float normalizedAverage(float standardPercent, float constrainedHighPercent, float noLimitPercent);
71+
static ValueType normalizedAverage(float standardPercent, float constrainedHighPercent, float noLimitPercent);
7072

71-
static constexpr float standardValue = 0;
72-
static constexpr float constrainedHighValue = 0.5;
73-
static constexpr float noLimitValue = 1;
73+
static constexpr ValueType standardValue = 0;
74+
static constexpr ValueType constrainedHighValue = 0.5;
75+
static constexpr ValueType noLimitValue = 1;
7476

75-
float m_value { constrainedHighValue };
77+
ValueType m_value { constrainedHighValue };
7678
};
7779

7880
WEBCORE_EXPORT WTF::TextStream& operator<<(WTF::TextStream&, PlatformDynamicRangeLimit);

Tools/TestWebKitAPI/Tests/WebCore/PlatformDynamicRangeLimitTests.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
namespace TestWebKitAPI {
3434

3535
// Tests rely on these assumptions:
36+
static_assert(std::is_same_v<WebCore::PlatformDynamicRangeLimit::ValueType, float>);
37+
static_assert(std::is_same_v<decltype(WebCore::PlatformDynamicRangeLimit::standard().value()), float>);
3638
static_assert(WebCore::PlatformDynamicRangeLimit::standard().value() == 0.0f);
3739
static_assert(WebCore::PlatformDynamicRangeLimit::constrainedHigh().value() == 0.5f);
3840
static_assert(WebCore::PlatformDynamicRangeLimit::noLimit().value() == 1.0f);

0 commit comments

Comments
 (0)