summaryrefslogtreecommitdiffstats
path: root/src/libserver/css/css_value.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/libserver/css/css_value.cxx')
-rw-r--r--src/libserver/css/css_value.cxx29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/libserver/css/css_value.cxx b/src/libserver/css/css_value.cxx
index 719633e68..94c340ac5 100644
--- a/src/libserver/css/css_value.cxx
+++ b/src/libserver/css/css_value.cxx
@@ -273,6 +273,29 @@ auto css_value::maybe_color_from_function(const css_consumed_block::css_function
return std::nullopt;
}
+auto css_value::maybe_dimension_from_number(const css_parser_token &tok)
+-> std::optional<css_value>
+{
+ if (std::holds_alternative<double>(tok.value)) {
+ auto dbl = std::get<double>(tok.value);
+ css_dimension dim;
+
+ dim.dim = dbl;
+
+ if (tok.flags & css_parser_token::number_percent) {
+ dim.is_percent = true;
+ }
+ else {
+ dim.is_percent = false;
+ }
+
+ return css_value{dim};
+ }
+
+ return std::nullopt;
+}
+
+
auto css_value::debug_str() const -> std::string
{
std::string ret;
@@ -289,6 +312,12 @@ auto css_value::debug_str() const -> std::string
else if constexpr (std::is_same_v<T, double>) {
ret += "size: " + std::to_string(arg);
}
+ else if constexpr (std::is_same_v<T, css_dimension>) {
+ ret += "dimension: " + std::to_string(arg.dim);
+ if (arg.is_percent) {
+ ret += "%";
+ }
+ }
else if constexpr (std::is_integral_v<T>) {
ret += "integral: " + std::to_string(static_cast<int>(arg));
}