PHP WebShell
Текущая директория: /usr/lib/node_modules/bitgo/node_modules/react-native/ReactCommon/react/renderer/css
Просмотр файла: CSSRatio.h
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#pragma once
#include <optional>
#include <variant>
#include <react/renderer/css/CSSDataType.h>
#include <react/renderer/css/CSSNumber.h>
#include <react/renderer/css/CSSValueParser.h>
namespace facebook::react {
/**
* Representation of CSS <ratio> data type
* https://www.w3.org/TR/css-values-4/#ratios
*/
struct CSSRatio {
float numerator{};
float denominator{};
constexpr bool operator==(const CSSRatio& rhs) const = default;
constexpr bool isDegenerate() const {
// If either number in the <ratio> is 0 or infinite, it represents a
// degenerate ratio (and, generally, won’t do anything).
// https://www.w3.org/TR/css-values-4/#ratios
return numerator == 0.0f ||
numerator == std::numeric_limits<float>::infinity() ||
denominator == 0.0f ||
denominator == std::numeric_limits<float>::infinity();
}
};
template <>
struct CSSDataTypeParser<CSSRatio> {
static constexpr auto consume(CSSSyntaxParser& parser)
-> std::optional<CSSRatio> {
// <ratio> = <number [0,∞]> [ / <number [0,∞]> ]?
// https://www.w3.org/TR/css-values-4/#ratio
auto numerator = parseNextCSSValue<CSSNumber>(parser);
if (!std::holds_alternative<CSSNumber>(numerator)) {
return {};
}
auto numeratorValue = std::get<CSSNumber>(numerator).value;
if (numeratorValue >= 0) {
auto denominator =
peekNextCSSValue<CSSNumber>(parser, CSSDelimiter::Solidus);
if (std::holds_alternative<CSSNumber>(denominator) &&
std::get<CSSNumber>(denominator).value >= 0) {
parseNextCSSValue<CSSNumber>(parser, CSSDelimiter::Solidus);
return CSSRatio{numeratorValue, std::get<CSSNumber>(denominator).value};
}
return CSSRatio{numeratorValue, 1.0f};
}
return {};
}
};
static_assert(CSSDataType<CSSRatio>);
} // namespace facebook::react
Выполнить команду
Для локальной разработки. Не используйте в интернете!