
CSS-Typed-OM has the following hierarchy: CSSStyleValue - CSSNumericValue - CSSUnitValue - CSSMathValue - ...various math functions... Somewhat unintuitively, numbers are also stored using CSSUnitValue with `unit = "number"`. There are no distinct classes for LengthStyleValue, etc in the spec, but they're convenient for us, so they are implemented as subclasses of CSSUnitValue, at least for now.
29 lines
564 B
C++
29 lines
564 B
C++
/*
|
|
* Copyright (c) 2024, Sam Atkins <sam@ladybird.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <AK/FlyString.h>
|
|
#include <LibWeb/CSS/StyleValues/CSSNumericValue.h>
|
|
|
|
namespace Web::CSS {
|
|
|
|
// https://drafts.css-houdini.org/css-typed-om-1/#cssunitvalue
|
|
class CSSUnitValue : public CSSNumericValue {
|
|
public:
|
|
virtual ~CSSUnitValue() override = default;
|
|
|
|
virtual double value() const = 0;
|
|
virtual StringView unit() const = 0;
|
|
|
|
protected:
|
|
explicit CSSUnitValue(Type type)
|
|
: CSSNumericValue(type)
|
|
{
|
|
}
|
|
};
|
|
|
|
}
|