249 lines
5.4 KiB
C++
249 lines
5.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 <functional>
|
|
#include <limits>
|
|
|
|
namespace facebook {
|
|
namespace react {
|
|
|
|
enum class FontStyle { Normal, Italic, Oblique };
|
|
|
|
enum class FontWeight : int {
|
|
Weight100 = 100,
|
|
UltraLight = 100,
|
|
Weight200 = 200,
|
|
Thin = 200,
|
|
Weight300 = 300,
|
|
Light = 300,
|
|
Weight400 = 400,
|
|
Regular = 400,
|
|
Weight500 = 500,
|
|
Medium = 500,
|
|
Weight600 = 600,
|
|
Semibold = 600,
|
|
Demibold = 600,
|
|
Weight700 = 700,
|
|
Bold = 700,
|
|
Weight800 = 800,
|
|
Heavy = 800,
|
|
Weight900 = 900,
|
|
Black = 900
|
|
};
|
|
|
|
enum class FontVariant : int {
|
|
Default = 0,
|
|
SmallCaps = 1 << 1,
|
|
OldstyleNums = 1 << 2,
|
|
LiningNums = 1 << 3,
|
|
TabularNums = 1 << 4,
|
|
ProportionalNums = 1 << 5
|
|
};
|
|
|
|
enum class DynamicTypeRamp {
|
|
Caption2,
|
|
Caption1,
|
|
Footnote,
|
|
Subheadline,
|
|
Callout,
|
|
Body,
|
|
Headline,
|
|
Title3,
|
|
Title2,
|
|
Title1,
|
|
LargeTitle
|
|
};
|
|
|
|
enum class EllipsizeMode {
|
|
Clip, // Do not add ellipsize, simply clip.
|
|
Head, // Truncate at head of line: "...wxyz".
|
|
Tail, // Truncate at tail of line: "abcd...".
|
|
Middle // Truncate middle of line: "ab...yz".
|
|
};
|
|
|
|
enum class TextBreakStrategy {
|
|
Simple, // Simple strategy.
|
|
HighQuality, // High-quality strategy, including hyphenation.
|
|
Balanced // Balances line lengths.
|
|
};
|
|
|
|
enum class TextAlignment {
|
|
Natural, // Indicates the default alignment for script.
|
|
Left, // Visually left aligned.
|
|
Center, // Visually centered.
|
|
Right, // Visually right aligned.
|
|
Justified // Fully-justified. The last line in a paragraph is natural-aligned.
|
|
};
|
|
|
|
enum class WritingDirection {
|
|
Natural, // Determines direction using the Unicode Bidi Algorithm rules P2 and
|
|
// P3.
|
|
LeftToRight, // Left to right writing direction.
|
|
RightToLeft // Right to left writing direction.
|
|
};
|
|
|
|
enum class LineBreakStrategy {
|
|
None, // Don't use any line break strategies
|
|
PushOut, // Use the push out line break strategy.
|
|
HangulWordPriority, // When specified, it prohibits breaking between Hangul
|
|
// characters.
|
|
Standard // Use the same configuration of line break strategies that the
|
|
// system uses for standard UI labels.
|
|
};
|
|
|
|
enum class TextDecorationLineType {
|
|
None,
|
|
Underline,
|
|
Strikethrough,
|
|
UnderlineStrikethrough
|
|
};
|
|
|
|
enum class TextDecorationStyle { Solid, Double, Dotted, Dashed };
|
|
|
|
enum class AccessibilityRole {
|
|
None,
|
|
Button,
|
|
Link,
|
|
Search,
|
|
Image,
|
|
Imagebutton,
|
|
Keyboardkey,
|
|
Text,
|
|
Adjustable,
|
|
Summary,
|
|
Header,
|
|
Alert,
|
|
Checkbox,
|
|
Combobox,
|
|
Menu,
|
|
Menubar,
|
|
Menuitem,
|
|
Progressbar,
|
|
Radio,
|
|
Radiogroup,
|
|
Scrollbar,
|
|
Spinbutton,
|
|
Switch,
|
|
Tab,
|
|
TabBar,
|
|
Tablist,
|
|
Timer,
|
|
Toolbar,
|
|
};
|
|
|
|
enum class TextTransform {
|
|
None,
|
|
Uppercase,
|
|
Lowercase,
|
|
Capitalize,
|
|
Unset,
|
|
};
|
|
|
|
enum class HyphenationFrequency {
|
|
None, // No hyphenation.
|
|
Normal, // Less frequent hyphenation.
|
|
Full // Standard amount of hyphenation.
|
|
};
|
|
|
|
} // namespace react
|
|
} // namespace facebook
|
|
|
|
namespace std {
|
|
template <>
|
|
struct hash<facebook::react::FontVariant> {
|
|
size_t operator()(const facebook::react::FontVariant &v) const {
|
|
return hash<int>()(static_cast<int>(v));
|
|
}
|
|
};
|
|
|
|
template <>
|
|
struct hash<facebook::react::TextAlignment> {
|
|
size_t operator()(const facebook::react::TextAlignment &v) const {
|
|
return hash<int>()(static_cast<int>(v));
|
|
}
|
|
};
|
|
|
|
template <>
|
|
struct hash<facebook::react::FontStyle> {
|
|
size_t operator()(const facebook::react::FontStyle &v) const {
|
|
return hash<int>()(static_cast<int>(v));
|
|
}
|
|
};
|
|
|
|
template <>
|
|
struct hash<facebook::react::TextDecorationLineType> {
|
|
size_t operator()(const facebook::react::TextDecorationLineType &v) const {
|
|
return hash<int>()(static_cast<int>(v));
|
|
}
|
|
};
|
|
|
|
template <>
|
|
struct hash<facebook::react::WritingDirection> {
|
|
size_t operator()(const facebook::react::WritingDirection &v) const {
|
|
return hash<int>()(static_cast<int>(v));
|
|
}
|
|
};
|
|
|
|
template <>
|
|
struct hash<facebook::react::TextDecorationStyle> {
|
|
size_t operator()(const facebook::react::TextDecorationStyle &v) const {
|
|
return hash<int>()(static_cast<int>(v));
|
|
}
|
|
};
|
|
|
|
template <>
|
|
struct hash<facebook::react::FontWeight> {
|
|
size_t operator()(const facebook::react::FontWeight &v) const {
|
|
return hash<int>()(static_cast<int>(v));
|
|
}
|
|
};
|
|
|
|
template <>
|
|
struct hash<facebook::react::DynamicTypeRamp> {
|
|
size_t operator()(const facebook::react::DynamicTypeRamp &v) const {
|
|
return hash<int>()(static_cast<int>(v));
|
|
}
|
|
};
|
|
|
|
template <>
|
|
struct hash<facebook::react::EllipsizeMode> {
|
|
size_t operator()(const facebook::react::EllipsizeMode &v) const {
|
|
return hash<int>()(static_cast<int>(v));
|
|
}
|
|
};
|
|
|
|
template <>
|
|
struct hash<facebook::react::TextBreakStrategy> {
|
|
size_t operator()(const facebook::react::TextBreakStrategy &v) const {
|
|
return hash<int>()(static_cast<int>(v));
|
|
}
|
|
};
|
|
|
|
template <>
|
|
struct hash<facebook::react::AccessibilityRole> {
|
|
size_t operator()(const facebook::react::AccessibilityRole &v) const {
|
|
return hash<int>()(static_cast<int>(v));
|
|
}
|
|
};
|
|
|
|
template <>
|
|
struct hash<facebook::react::TextTransform> {
|
|
size_t operator()(const facebook::react::TextTransform &v) const {
|
|
return hash<int>()(static_cast<int>(v));
|
|
}
|
|
};
|
|
|
|
template <>
|
|
struct hash<facebook::react::HyphenationFrequency> {
|
|
size_t operator()(const facebook::react::HyphenationFrequency &v) const {
|
|
return hash<int>()(static_cast<int>(v));
|
|
}
|
|
};
|
|
} // namespace std
|