jiuyiUniapp/service/node_modules/react-native/ReactCommon/react/renderer/css/CSSLengthUnit.h

166 lines
3.4 KiB
C++

/*
* 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 <cstdint>
#include <optional>
#include <string_view>
#include <react/utils/fnv1a.h>
namespace facebook::react {
/**
* Unit for the CSS <length> type.
* https://www.w3.org/TR/css-values-4/#lengths
*/
enum class CSSLengthUnit : uint8_t {
Cap,
Ch,
Cm,
Dvb,
Dvh,
Dvi,
Dvmax,
Dvmin,
Dvw,
Em,
Ex,
Ic,
In,
Lh,
Lvb,
Lvh,
Lvi,
Lvmax,
Lvmin,
Lvw,
Mm,
Pc,
Pt,
Px,
Q,
Rcap,
Rch,
Rem,
Rex,
Ric,
Rlh,
Svb,
Svh,
Svi,
Svmax,
Svmin,
Svw,
Vb,
Vh,
Vi,
Vmax,
Vmin,
Vw,
};
/**
* Parses a unit from a dimension token into a CSS length unit.
*/
constexpr std::optional<CSSLengthUnit> parseCSSLengthUnit(
std::string_view unit) {
switch (fnv1aLowercase(unit)) {
case fnv1a("cap"):
return CSSLengthUnit::Cap;
case fnv1a("ch"):
return CSSLengthUnit::Ch;
case fnv1a("cm"):
return CSSLengthUnit::Cm;
case fnv1a("dvb"):
return CSSLengthUnit::Dvb;
case fnv1a("dvh"):
return CSSLengthUnit::Dvh;
case fnv1a("dvi"):
return CSSLengthUnit::Dvi;
case fnv1a("dvmax"):
return CSSLengthUnit::Dvmax;
case fnv1a("dvmin"):
return CSSLengthUnit::Dvmin;
case fnv1a("dvw"):
return CSSLengthUnit::Dvw;
case fnv1a("em"):
return CSSLengthUnit::Em;
case fnv1a("ex"):
return CSSLengthUnit::Ex;
case fnv1a("ic"):
return CSSLengthUnit::Ic;
case fnv1a("in"):
return CSSLengthUnit::In;
case fnv1a("lh"):
return CSSLengthUnit::Lh;
case fnv1a("lvb"):
return CSSLengthUnit::Lvb;
case fnv1a("lvh"):
return CSSLengthUnit::Lvh;
case fnv1a("lvi"):
return CSSLengthUnit::Lvi;
case fnv1a("lvmax"):
return CSSLengthUnit::Lvmax;
case fnv1a("lvmin"):
return CSSLengthUnit::Lvmin;
case fnv1a("lvw"):
return CSSLengthUnit::Lvw;
case fnv1a("mm"):
return CSSLengthUnit::Mm;
case fnv1a("pc"):
return CSSLengthUnit::Pc;
case fnv1a("pt"):
return CSSLengthUnit::Pt;
case fnv1a("px"):
return CSSLengthUnit::Px;
case fnv1a("q"):
return CSSLengthUnit::Q;
case fnv1a("rcap"):
return CSSLengthUnit::Rcap;
case fnv1a("rch"):
return CSSLengthUnit::Rch;
case fnv1a("rem"):
return CSSLengthUnit::Rem;
case fnv1a("rex"):
return CSSLengthUnit::Rex;
case fnv1a("ric"):
return CSSLengthUnit::Ric;
case fnv1a("rlh"):
return CSSLengthUnit::Rlh;
case fnv1a("svb"):
return CSSLengthUnit::Svb;
case fnv1a("svh"):
return CSSLengthUnit::Svh;
case fnv1a("svi"):
return CSSLengthUnit::Svi;
case fnv1a("svmax"):
return CSSLengthUnit::Svmax;
case fnv1a("svmin"):
return CSSLengthUnit::Svmin;
case fnv1a("svw"):
return CSSLengthUnit::Svw;
case fnv1a("vb"):
return CSSLengthUnit::Vb;
case fnv1a("vh"):
return CSSLengthUnit::Vh;
case fnv1a("vi"):
return CSSLengthUnit::Vi;
case fnv1a("vmax"):
return CSSLengthUnit::Vmax;
case fnv1a("vmin"):
return CSSLengthUnit::Vmin;
case fnv1a("vw"):
return CSSLengthUnit::Vw;
default:
return std::nullopt;
}
}
} // namespace facebook::react